当前位置: 首页 > 软件库 > 开发工具 > Java开发工具 >

java-hot-reload-agent

java 热更新插件
授权协议 MIT
开发语言 Java
所属分类 开发工具、 Java开发工具
软件类型 开源软件
地区 国产
投 递 者 宰父淳
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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

 

  • What is Spring Loaded? Spring Loaded is a JVM agent for reloading class file changes whilst a JVM is running. It transforms classes at loadtime to make them amenable to later reloading. Unlike 'hot co

 相关资料
  • Flutter’s hot reload feature helps you quickly and easily experiment, build UIs, add features, and fix bugs. Hot reload works by injecting updated source code files into the running Dart Virtual Machi

  • Flutter’s hot reload feature helps you quickly and easily experiment, build UIs, add features, and fix bugs. Hot reload works by injecting updated source code files into the running Dart Virtual Machi

  • 我们在本地开发 Node.js 程序时通常会使用 nodemon 或者 supervisor 这种进程管理工具,当有文件修改时自动重启应用。小项目还好,项目大了(尤其是前端应用)每次重启应用都用几秒到几十秒的时间,大部分时间都花在了加载及编译代码上。 这让笔者联想到前端比较火的一个名词——Hot Reload(热加载),比如 React 静态资源的热加载通过 webpack-dev-server

  • 由于 imi 基于 Swoole 常驻内存,所以 PHP 的一大特点热更新就没有了。 为此,imi 中实现了业务代码的热更新,方便开发调试、动态部署,支持平滑重载。 有了热更新,开发时只需要保存代码,短短几秒甚至一瞬间,刷新页面,就可以立即看到效果! 配置 imi 默认开启了热更新,如果需要关闭或者个性化设置请看下文: 热更新通过配置文件中的beans节配置。 详见下面的注释: 'hotUpdat

  • “热更新”不不是简单地在您编辑文件时重新加载页面。开启着热更新,当你编辑一个*.vue 文件,这个组件所有的实例会在不刷新界面的情况下更新。 它甚至保留应用程序和这些组件相对应的当前状态!当你调整组件的模板或样式时,这大大提高了开发的体验。 当使用vue-cli构建项目时,热更新即可启用。

  • ConfigMap是用来存储配置文件的kubernetes资源对象,所有的配置内容都存储在etcd中,下文主要是探究 ConfigMap 的创建和更新流程,以及对 ConfigMap 更新后容器内挂载的内容是否同步更新的测试。 测试示例 假设我们在 default namespace 下有一个名为 nginx-config 的 ConfigMap,可以使用 kubectl命令来获取: $ kube