2014-07-25 31 views
5

我一直在使用Java進行編程,並且非常喜歡Netbeans和其他IDE中的功能,它們允許您在調試時更改程序,而無需重新啓動它。我正在編寫一個Java應用程序,如果我可以在不用重新啓動的情況下進行即時更新,它將會受益。我有想法有第二個jar,我可以在更新時運行,這將能夠做IDE的相同的事情,但我不知道他們如何交換代碼。任何人都可以啓發我嗎?謝謝!Hot Code Swap的工作原理

+0

我會考慮讀[這](http://stackoverflow.com/questions/7989135/is -IT-可能到編程方式編譯的Java源代碼,在內存中只)。無論哪種方式在接受的答案可能會滿足您的需求。 – ChiefTwoPencils

+1

查看JDWP,特別是[JDI](http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html#jdi)。 –

回答

3

IDE的諸如Eclipse,在調試時使用JDI(Java調試接口)。它是Java API的集合,它允許您創建/附加到外部Java虛擬機。這可以與可用於在虛擬機中重新定義類的Java代理結合使用。 Eclipse在調試模式下執行的操作是創建一個新的虛擬機,並在其中運行代碼。當你編輯並重新編譯時;然後eclipse通過發送新的字節碼來告訴JVM重新定義你已經改變的類。

您可以閱讀JDI documentation,並查看Java instrument class(特別是用於配置類變換器)。這裏有一個關於setting up a JDI launcher(啓動一個新的JVM)的相關問題。