2013-11-28 42 views
24

我在JavaVM中寻找更好的HotSwapping。能够只应用方法的身体变化是可以的,但相当有限。高级代码在JDK 8中热插拔?

可用的选项是JRebel的,并呼吁Dynamic Code Evolution Virtual Machine (DCEVM)停产项目。

有一个JEP 159在那里,写由DCEVM的核心developper。 2011年的一篇博客文章提到,DCEVM的开发人员现在正在为Oracle工作,将其集成到JDK中。

我们是否已经为JDK 8 beta提供了这种支持,或者是否推迟到JDK 9?

我需要热交换来增加和删除和重命名私有方法。这将有助于很多。有没有一款产品可以让我这么做(除了JREbel,PR宣传让我不高兴)。

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

还有在github提供另一个项目叫Fakereplace。这可以很容易地用于我的目的,或者我不应该调查这个?

+4

之一JRebel的开发商曾经做过市场上不同的代码交换解决方案的小概述 - http://stackoverflow.com/a/17642585/2269816我个人认为JRebel的干得非常好,没有竞争对手可以在工作现在接近。不仅仅因为你不喜欢他们的营销工具而使用工具,虽然工具本身是最高质量的,但主要是伤害了你自己。 –

回答

10

JEPs在JDK 8和9 JDK未来列于this page。 JEP-159不在其中。从jep index可以看出,JEP-159还没有针对任何JDK版本,甚至不包括jdk 10.

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

成功JEP通过以下状态:

  • 草案 - 由作者进行初步审查,并建立共识,在循环
  • 发布 - 进入JEP作者归档作更广泛的审查
  • 提交 - 作者声明已准备好进行评估
  • 候选人 - 接受列入由路线图的Ope nJDK铅
  • 资助 - 由集团或地区铅判定为完全积累
  • 完成 - 完成并交付

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

+1

这就是为什么我想知道是否有一个预alpha版本或可比较的东西。 DCEVM项目相当完善,所以我想知道为什么没有1.7版本,并希望1.8版本。 –

+0

@MartinKersten我不知道如何使用任何预alpha版本,因为它至少还没有被包含在任何范围内。 – eis

+2

我希望能像安装和运行的片段一样。看到DCEVM版本适用于JDK6和Oracle雇用两年的人,我希望能够展示当前的发展。我只是希望甲骨文没有决定停止自己的支持,并辞去这个团队。 –

11

Github的存储库中存在DCEVM的分支。最近针对Java 8进行了更新。该二进制文件可通过GitHub发行版或downloads page获得。

对于简单的事情,比如添加/移除的方法,它应该是相当可靠的(由自动化测试在16个不同的配置验证)。但是,它仍然可能会导致JVM崩溃,所以它决不应该用于生产。

+0

谢谢。我会看看。我需要它进行开发,所以如果它有效,它将会非常棒。 –

+0

我只是想改变HTML页面的渲染方法,给我一个类似于PHP的体验。一旦我得到结果,我会调整页面的单元测试,以期望得到更正的结果。今天,我必须每次重新启动前端服务器,而不是每次代码更改时自动重新加载页面(只需向服务器请求状态的页面添加dart功能)即可。 –

+3

非常感谢,我只是在linux上用oracle java 1.8.0_05 x86-64试过了,效果很好。 fastdebug虽然很慢,但使用“产品”配置文件。 –