一个命令实现代码热部署,提高日常开发效率

查看 26|回复 0
作者:linyimin520812   
项目地址
前段时间因为一个issue接触到了trava-jdk-8-dcevm,其基于 dcevm 并集成了 HotswapAgent ,允许高级热部署,如方法字段添加等等,并了解到了 JDWP 的一个特性,项目以 Debug 形式启动后,重新编译修改的代码文件后会自动进行热加载。
与标准 JDK 不同(只支持方法体内代码修改的热加载),而 trava-jdk-8-dcevm(DCEVM+HotswapAgent)更多场景的热加载(如添加字段、方法等),在结合sdkman进行 JDK 版本管理,日常开发效率可以有很大的提升。
但是因为日常开发中部署分支和开发分支往往不是同一个分支,要想使用此能力,需要一些操作步骤有点繁琐,所以便实现了这个命令行工具,支持一个命令实现代码热加载。原理如下:


效果如下:


趁着这次命令行工具的开发,体验了一下 GraalVM ,虽然享受到了静态编译带来的诸多好处,但也很明显感受到了一些缺陷,比如编译出来的 native 包很大(有 28M 左右),编译成 jar 包只有 3M 左右。同时如果依赖的三方包中使用了反射、动态代理等能力,很容易出问题,而且还是编译成功,运行时错误。如果提供了一些工具的帮助,还是不能 100%的覆盖到所有的反射类型,会有一些边界情况覆盖不到,可能会产生运行时错误。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部