java-hot-reload-agentjava 熱更新插件
java 熱更新插件,無需重啟 java 進程實現(xiàn)代碼更新,提高開發(fā)效率,節(jié)約時間去陪女朋友!
功能模塊
- hot-reload-core: 核心處理邏輯,編譯&加載 class
- hot-reload-agent: javaagent 入口
- hot-reload-watcher: 監(jiān)聽本地 java 和 class 文件變化,實現(xiàn)本地進程熱更新
- hot-reload-server: api server,提供接口實現(xiàn)加載遠程 jvm 進程
架構(gòu)
支持本地模式和遠程模式
基本原理
- watcher 監(jiān)聽本地文件變更(.class & .java)并緩存變更文件路徑
- 將變更文件上傳到 server 并保存在臨時目錄(本地模式忽略次步驟)
- 通過 javaagent 技術(shù) attach 到 jvm 進程,拿到
Instrumentation對象 - 使用自定義類加載器(與業(yè)務(wù)代碼隔離)加載
hot-reload-core編譯 java 文件(如有) - 讀取 class 文件字節(jié)碼,通過
instrumentation.redefineClasses()方法重新定義并加載 class
評論
圖片
表情
