我一直在使用Java進行編程,並且非常喜歡Netbeans和其他IDE中的功能,它們允許您在調試時更改程序,而無需重新啓動它。我正在編寫一個Java應用程序,如果我可以在不用重新啓動的情況下進行即時更新,它將會受益。我有想法有第二個jar,我可以在更新時運行,這將能夠做IDE的相同的事情,但我不知道他們如何交換代碼。任何人都可以啓發我嗎?謝謝!Hot Code Swap的工作原理
5
A
回答
3
IDE的諸如Eclipse,在調試時使用JDI(Java調試接口)。它是Java API的集合,它允許您創建/附加到外部Java虛擬機。這可以與可用於在虛擬機中重新定義類的Java代理結合使用。 Eclipse在調試模式下執行的操作是創建一個新的虛擬機,並在其中運行代碼。當你編輯並重新編譯時;然後eclipse通過發送新的字節碼來告訴JVM重新定義你已經改變的類。
您可以閱讀JDI documentation,並查看Java instrument class(特別是用於配置類變換器)。這裏有一個關於setting up a JDI launcher(啓動一個新的JVM)的相關問題。
1
我今天實際上在學習同樣的事情。我發現這篇文章非常有助於理解身後的幾個較爲複雜的情況下hotpush的工作流程:
http://java.dzone.com/articles/5-jrebel-features-you-couldn%E2%80%99t
相關問題
- 1. Rails - Hot Swap Tables
- 2. `std :: mem :: swap`如何工作?
- 3. Dojo CodeGlass的工作原理?
- 4. ResultSet的工作原理
- 5. NSNotification的工作原理
- 6. 的jQuery〜=工作原理=
- 7. AtomicReferenceArray的工作原理
- 8. rtmfp/UDP的工作原理
- 9. @param的工作原理 - Java
- 10. Ctrl Z的工作原理
- 11. HttpServletRequest的工作原理
- 12. AsyncCallback的工作原理
- 13. JMS API的工作原理
- 14. IOCTL的工作原理?
- 15. QRectF :: adjusted()的工作原理
- 16. JavaScript - Greasemonkey的工作原理
- 17. cordova-hot-code-push沒有部署
- 18. cordova hot-code-push插件安全
- 19. 無法讓React Hot Loader正常工作
- 20. 理解Stack()的工作原理
- 21. LC-3 .BLKW工作原理
- 22. 雲前工作原理?
- 23. 解析工作原理
- 24. OpenCV SurfFeatureDetector工作原理
- 25. 工作原理didReceiveMemoryWarning iOS 6
- 26. 工作原理Asp.net Session_End
- 27. 驗證工作原理
- 28. webpack-dev-server -hot模式停止工作
- 29. 如何設置window.restoreWindows的工作原理?
- 30. 瞭解jQuery的工作原理
我會考慮讀[這](http://stackoverflow.com/questions/7989135/is -IT-可能到編程方式編譯的Java源代碼,在內存中只)。無論哪種方式在接受的答案可能會滿足您的需求。 – ChiefTwoPencils
查看JDWP,特別是[JDI](http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html#jdi)。 –