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

时间:2013-11-28 09:51:02

标签: java jvm-hotspot hotswap

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

可用选项是JRebel和一个名为Dynamic Code Evolution Virtual Machine (DCEVM)的已停止项目。

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

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

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

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

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

2 个答案:

答案 0 :(得分:12)

JDK 8和JDK 9中的JEP列在this page中。 JEP-159不在其中。从jep index你可以看到JEP-159还没有针对任何JDK版本,甚至不是jdk 10.

JEP-159状态目前为"Submitted"。流程is described如下:

  

成功的JEP通过以下状态:

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

因此,任何路线图尚未被接受。

答案 1 :(得分:12)

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

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