Java 热代码交换的工作原理

Java 热代码交换的工作原理,java,Java,我一直在用Java编程,我非常喜欢Netbeans和其他IDE中的特性,它允许您在调试时对程序进行更改,而无需重新启动程序。我正在用Java编写一个应用程序,如果我可以在不重新启动的情况下动态更新它,它将受益匪浅。我有一个想法,在更新时可以运行第二个jar,它可以做与IDE相同的事情,但我不知道它们如何交换代码。谁能启发我?谢谢大家! IDE(如Eclipse)在调试时使用JDI(Java调试接口)。它是Java API的集合,允许您创建/连接到外部Java虚拟机。这可以与Java代理结合使用,

我一直在用Java编程,我非常喜欢Netbeans和其他IDE中的特性,它允许您在调试时对程序进行更改,而无需重新启动程序。我正在用Java编写一个应用程序,如果我可以在不重新启动的情况下动态更新它,它将受益匪浅。我有一个想法,在更新时可以运行第二个jar,它可以做与IDE相同的事情,但我不知道它们如何交换代码。谁能启发我?谢谢大家!

IDE(如Eclipse)在调试时使用JDI(Java调试接口)。它是Java API的集合,允许您创建/连接到外部Java虚拟机。这可以与Java代理结合使用,Java代理可用于在虚拟机中重新定义类。Eclipse在调试模式下所做的是创建一个新的虚拟机,并在其中运行代码。进行编辑和重新编译时;eclipse然后告诉JVM通过发送新的字节码来重新定义已更改的类


您可以阅读,并特别查看(用于配置类转换器)。这里有一个关于(启动一个新的JVM)的相关问题。

我实际上是在学习同样的东西@work today。我发现本文非常有助于理解一些更复杂的热推案例背后的工作流程:


我会考虑阅读。接受的答案中的任何一种方式都可能适合您的需要。