JDK 8中的高级代码热插拔?

Mar*_*ten 26 java jvm-hotspot hotswap

我在JavaVM中寻找更好的HotSwapping.能够仅应用方法体改变是可以的,但是非常有限.

可用选项是JRebel和一个名为动态代码演进虚拟机(DCEVM)的已停产项目.

有一个由DCEVM的核心开发人员编写的JEP 159.2011年的博客文章提到,DCEVM的开发人员现在可以使用Oracle将其集成到JDK中.

我们是否已经对JDK 8 beta有这种支持,还是推迟到JDK 9?

我需要热插拔来添加和删除以及重命名私有方法.这会有很多帮助.有没有一个产品允许我这样做(在JRebel旁边,公关活动让我感到不安).

最后支持的DCEVM版本是1.6u24,它只提供32位Linux二进制文件.由于我使用的是1.7和64位Linux,这对我来说都是一个显示器.

github上还有另一个名为Fakereplace的项目.这可以很容易地用于我的目的,还是我不应该调查这个?

eis*_*eis 12

本页列出了JDK 8和JDK 9的JEP .JEP-159不在其中.从jep索引可以看出JEP-159还没有针对任何JDK版本,甚至不是jdk 10.

JEP-159状态目前"已提交".该过程描述如下:

成功的JEP通过以下状态:

  • 草案 - 作者在流通中进行初步审查和建立共识
  • 发布 - 作者进入JEP档案馆进行更广泛的审核
  • 已提交 - 作者宣布准备进行评估
  • 候选人 - 接受OpenJDK Lead列入路线图
  • 资金 - 由集团或地区负责人评定为资金充足
  • 完成 - 完成并交付

所以它还没有被任何路线图所接受.

  • 我希望像片段一样可以安装和运行.看到DCEVM版本适用于JDK6以及Oracle雇用的人员已有两年了,我希望能够展示当前的发展.我只是希望甲骨文没有决定停止自己的支持并让这支球队辞职. (2认同)

Iva*_*rov 12

Github上的存储库中维护了一个DCEVM分支.它最近针对Java 8进行了更新.二进制文件可通过GitHub版本或下载页面获得.

对于简单的事情,比如添加/删除方法,它应该非常可靠(通过16种不同配置的自动化测试验证).但是,它最终仍然可能导致JVM崩溃,因此绝不应该在生产中使用它.

  • 非常感谢,我刚刚在linux上使用oracle java 1.8.0_05 x86-64进行了尝试,它运行得非常好.尽管fastdebug很慢,所以使用"产品"配置文件. (3认同)
  • 此外,构建在DCEVM之上的http://hotswapagent.org可能会在使用Spring,Hibernate或仅重新加载任何指定资源时添加值. (2认同)