194

JRebel 允许在不重新启动应用程序的情况下重新部署新编译的代码。我想知道是否有其他选择(免费?)。FAQ页面回答了这个 问题,但我确信它偏向于 JRebel。这个问题是一年前在这个网站上提出的,但我把它带回来看看是否有人有任何新信息。

顺便说一句,我真的很喜欢 JRebel,但如果有免费的替代品,我愿意尝试。

还有一点需要注意的是,我正在从事一个开源项目,他们向能够证明自己参与开源项目的人提供免费的一年许可证。这对我很有用(www.kuali.org),但我不会永远参与那个项​​目。

4

8 回答 8

100

看看DCEVM,它是对 HotSpot VM 的修改,它允许在运行时无限地重新定义类。您可以在运行时添加/删除字段和方法并更改类的超类型。

原始站点上可用的二进制文件仅限于 Java 6u25 和 Java 7 的早期版本。该项目已在Github上分叉并支持 Java 7 和 8 的最新版本。维护者为 Windows 上的 32/64 位 VM 提供二进制文件/ Linux。从 Java 11 开始,该项目移至新的GitHub存储库,现在还为 OS X 提供二进制文件。

DCEVM 是为 Debian 和 Ubuntu 打包的,它可以方便地与 OpenJDK 集成,并且可以使用java -dcevm. 包的名称取决于默认 JDK 的版本:

于 2011-11-03T18:21:37.160 回答
41

Hotswap Agent是 DCEVM 的扩展,它支持许多 Java 框架(重新加载 Spring bean 定义、Hibernate 实体映射、记录器级别设置……)。

还有很多关于如何为 Java 1.7 设置 DCEVM 和编译二进制文件的文档。

于 2014-02-24T21:12:24.277 回答
21

DCEVM 支持增强的类重定义,适用于当前的 JDK7 和 JDK8。

https://github.com/dcevm/dcevm/releases

HotswapAgent 是一个免费的 JRebel 替代品,并在各种框架中支持 DCEVM。

http://hotswapagent.org/

于 2014-05-01T13:13:40.263 回答
20

由 Spring 家伙,用于 Grails 重新加载,但也适用于 Java:

https://github.com/SpringSource/spring-loaded

于 2013-01-30T07:18:55.000 回答
12

我写过一篇关于DCEVM的文章:Spring-mvc + Velocity + DCEVM

我认为这是值得的,因为我的环境运行没有任何问题。

于 2012-02-04T01:46:37.750 回答
9

我一直在研究一个开源项目,它允许您在热交换允许的范围之外热替换类:https ://github.com/fakereplace/fakereplace

它可能适合您,也可能不适合您,但感谢您提供任何反馈

于 2012-05-13T00:58:22.340 回答
4

你可能想看看这个:

HotSwap 支持:Java HotSpot VM 的面向对象架构支持诸如动态类重新定义或“HotSwap”等高级功能。此功能提供了通过调试器 API 替换正在运行的应用程序中的修改代码的能力。HotSwap 为 Java 平台调试器体系结构添加了功能,使类能够在执行期间在调试器的控制下进行更新。它还允许通过热交换在已插入分析代码的方法版本中执行分析操作。

目前,这只允许在不重新启动应用程序的情况下重新部署新编译的方法体。您所要做的就是使用调试器运行它。我在 Eclipse 中尝试过,效果很好。

此外,正如 Emmanuel Bourg 在他的回答 ( JEP 159 ) 中提到的,希望支持添加超类型以及添加和删除方法和字段。

参考: Java 白皮书 135217:可靠性、可用性和可服务性

于 2014-04-28T12:36:08.083 回答
-4

JRebel 是免费的。不要买它。在“购买”页面上选择“免费”选项(单选按钮)。然后选择“社交”。注册后,您将获得一个功能齐全的 JRebel 许可证密钥。然后,您可以下载 JRebel 或使用 IDE 嵌入式版本中的密钥。问题,(是的,有问题),您必须允许他们每月在您的 FB 时间线或 Twitter 帐户上代表您发布(广告)一次。我给了他们我的推特账户,没什么大不了的,我从不使用它,我认识的人也没有真正使用它。所以节省 260 美元。

于 2013-11-08T17:25:48.890 回答