2013-01-19 110 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