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

2022-09-01 14:41:04

我正在寻找JavaVM中更好的热交换。只能应用方法体更改是可以的,但非常有限。

可用的选项是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和64bit Linux,这对我来说都是一个节目的障碍。

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


答案 1

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

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


答案 2

此页面中列出了 JDK 8 和 JDK 9 中的 JEP。JEP-159不在其中。从 jep 索引中,您可以看到 JEP-159 尚未针对任何 JDK 版本,甚至 JDK 10 也不针对。

JEP-159 状态当前为“已提交”。该过程描述如下:

成功的 JEP 通过以下状态:

  • 草案——由作者分发,供初步审查和建立共识
  • 已发布 — 作者已进入 JEP 存档以进行更广泛的审查
  • 已提交 — 作者声明已准备好进行评估
  • 候选人 — 被 OpenJDK 负责人接受纳入路线图
  • 已资助 — 由集团或区域负责人判断为全额资助
  • 已完成 — 已完成并交付

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


推荐