2013-01-19 34 views
15

我最近有一個任務,我必須使用熱代碼替換功能。所以我使用了tools.jar中提供的Java Instrumentation API。eclipse是否使用Java Instrumentation API進行熱代碼替換

eclipse是否使用一些不同的邏輯來熱替換新的類文件或使用相同的Java API? 我試圖從一些地方閱讀,但並不清楚:

Eclipse的Java調試器發射在調試 通道新的類文件到另一個JVM

這條線Eclipse Hot Code Replace不清楚。

+0

您的鏈接已損壞,請嘗試使用這一個 - http://wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F。 – Perception

+0

@Perception我改變了它的工作原理 –

+0

Eclipse是開源的 - 你爲什麼不*看*?你可以在這裏看到它的開始:http://www.vogella.com/articles/EclipseCodeAccess/article.html。另外:如果你的解決方案「工作」,那麼你在乎什麼?Eclipse如何做到這一點? – paulsm4

回答

7

我相信eclipse使用相同的邏輯,它們都依賴於一個名爲JVMTI的本地接口。 JVMTI提供工具來檢查狀態,並控制在Java虛擬機中運行的應用程序的執行。

Java Instrumentation Implementation中有一個JVMTI代理。代理與vm進行會話並執行某些任務。它也有重新定義類的方法。 Eclipse Java調試器或其他工具使用JPDA(Java平臺調試器體系結構),而JPDA主要有三部分(JVMTI,JDWP,JDI)。 JVMTI充當調試器,JDI充當調試器,並且JDWP充當它們之間的通信通道。

最後,他們都與JVMTI交談,它使用相同的邏輯。

+0

優秀的答案,一個不好的問題:) – paulsm4