我在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的项目。这可以很容易地用于我的目的,还是我不应该对此进行调查?
答案 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崩溃,因此绝不应该在生产中使用它。