java-hot-reload-agentjava 热更新插件

联合创作 · 2023-10-01 07:24

java 热更新插件,无需重启 java 进程实现代码更新,提高开发效率,节约时间去陪女朋友!

功能模块

  • hot-reload-core: 核心处理逻辑,编译&加载 class
  • hot-reload-agent: javaagent 入口
  • hot-reload-watcher: 监听本地 java 和 class 文件变化,实现本地进程热更新
  • hot-reload-server: api server,提供接口实现加载远程 jvm 进程

架构

支持本地模式和远程模式

基本原理

  1. watcher 监听本地文件变更(.class & .java)并缓存变更文件路径
  2. 将变更文件上传到 server 并保存在临时目录(本地模式忽略次步骤)
  3. 通过 javaagent 技术 attach 到 jvm 进程,拿到Instrumentation对象
  4. 使用自定义类加载器(与业务代码隔离)加载 hot-reload-core 编译 java 文件(如有)
  5. 读取 class 文件字节码,通过instrumentation.redefineClasses()方法重新定义并加载 class

 

浏览 12
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报