28

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

可用的选项是 JRebel 和一个名为Dynamic Code Evolution Virtual Machine (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的项目。这可以很容易地用于我的目的还是我不应该对此进行调查?

4

2 回答 2

12

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

JEP-159 状态当前为"Submitted"。该过程描述如下:

一个成功的 JEP 会经历以下状态:

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

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

于 2013-11-28T10:20:54.843 回答
12

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

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

于 2014-04-21T16:36:02.403 回答