重新部署JRebel的替代品[关闭]

问题描述 投票:181回答:8

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

另外,我非常喜欢JRebel,但如果有免费替代品,我愿意尝试。

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

java jrebel hotswap
8个回答
93
投票

看看DCEVM,它是对HotSpot VM的修改,允许在运行时无限制地重新定义类。您可以添加/删除字段和方法,并在运行时更改类的超类型。作为JEP 159的一部分,DCEVM的功能可以集成在Java的未来更新中。

原始站点上可用的二进制文件仅限于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的版本:


40
投票

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

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


20
投票

由Spring人员,用于Grails重新加载,但也使用Java:

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


19
投票

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

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

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

http://hotswapagent.org/


11
投票

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

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


9
投票

我一直在开发一个开源项目,它允许你热插拔超出热交换允许的类:https://github.com/fakereplace/fakereplace

它可能适用于您,也可能不适合您,但任何反馈都表示赞赏


4
投票

你可能想看看这个:

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

目前,这只允许重新部署新编译的方法体,而无需重新启动应用程序。您所要做的就是使用调试器运行它。我在Eclipse中尝试过,它的工作非常出色。

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

参考:Java Whitepaper 135217: Reliability, Availability and Serviceability


-3
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.