我最近有一個任務,我必須使用熱代碼替換功能。所以我使用了tools.jar中提供的Java Instrumentation API。eclipse是否使用Java Instrumentation API進行熱代碼替換
eclipse是否使用一些不同的邏輯來熱替換新的類文件或使用相同的Java API? 我試圖從一些地方閱讀,但並不清楚:
Eclipse的Java調試器發射在調試 通道新的類文件到另一個JVM
這條線Eclipse Hot Code Replace不清楚。
我最近有一個任務,我必須使用熱代碼替換功能。所以我使用了tools.jar中提供的Java Instrumentation API。eclipse是否使用Java Instrumentation API進行熱代碼替換
eclipse是否使用一些不同的邏輯來熱替換新的類文件或使用相同的Java API? 我試圖從一些地方閱讀,但並不清楚:
Eclipse的Java調試器發射在調試 通道新的類文件到另一個JVM
這條線Eclipse Hot Code Replace不清楚。
我相信eclipse使用相同的邏輯,它們都依賴於一個名爲JVMTI的本地接口。 JVMTI提供工具來檢查狀態,並控制在Java虛擬機中運行的應用程序的執行。
Java Instrumentation Implementation中有一個JVMTI代理。代理與vm進行會話並執行某些任務。它也有重新定義類的方法。 Eclipse Java調試器或其他工具使用JPDA(Java平臺調試器體系結構),而JPDA主要有三部分(JVMTI,JDWP,JDI)。 JVMTI充當調試器,JDI充當調試器,並且JDWP充當它們之間的通信通道。
最後,他們都與JVMTI交談,它使用相同的邏輯。
優秀的答案,一個不好的問題:) – paulsm4
不,調試器通常使用JDI。
com.sun.jdi.VirtualMachine#redefineClasses
請參見下面的鏈接瞭解詳情。 http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/index.html
您的鏈接已損壞,請嘗試使用這一個 - http://wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F。 – Perception
@Perception我改變了它的工作原理 –
Eclipse是開源的 - 你爲什麼不*看*?你可以在這裏看到它的開始:http://www.vogella.com/articles/EclipseCodeAccess/article.html。另外:如果你的解決方案「工作」,那麼你在乎什麼?Eclipse如何做到這一點? – paulsm4