我最近有一个任务,我必须使用热代码替换功能。所以我使用了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