JRebel允许重新部署新编译的代码,而无需重新启动应用程序。我想知道是否有其他选择(免费?)。 FAQ页面回答了这个问题,但我确信它偏向于JRebel。这个问题是在一年前在这个网站上被问到的,但我把它重新提起来看看是否有人有任何新的信息。
另一方面,我非常喜欢JRebel,但如果有免费替代方案,我愿意尝试。
另外一个注意事项,我正在开发一个开源项目,他们向可以证明自己是开源项目的人提供免费的一年许可。这对我很有用(www.kuali.org),但我不会永远在那个项目上。
答案 0 :(得分:92)
看看DCEVM,它是对HotSpot VM的修改,允许在运行时无限制地重新定义类。您可以添加/删除字段和方法,并在运行时更改类的超类型。作为JEP 159的一部分,DCEVM的功能可以集成在Java的未来更新中。
原始站点上可用的二进制文件仅限于Java 6u25和Java 7的早期版本。该项目已在Github上分叉,并支持最新版本的Java 7和8.维护者提供了32个二进制文件。 / Windows / Linux上的64位VM。从Java 11开始,项目移动到新的GitHub存储库,现在还为OS X提供二进制文件。
DCEVM是针对Debian和Ubuntu打包的,它可以方便地与OpenJDK集成,并可以使用java -dcevm
进行调用。包的名称取决于默认JDK的版本:
答案 1 :(得分:40)
Hotswap Agent是DCEVM的扩展,它支持许多Java框架(重新加载Spring bean定义,Hibernate实体映射,记录器级别设置......)。
还有很多文档如何为Java 1.7设置DCEVM和已编译的二进制文件。
答案 2 :(得分:20)
由Spring工作,用于Grails重新加载,但也适用于Java:
答案 3 :(得分:19)
DCEVM支持增强的类重新定义,可用于当前的JDK7和JDK8。
https://github.com/dcevm/dcevm/releases
HotswapAgent是一个免费的JRebel替代方案,支持各种框架中的DCEVM。
答案 4 :(得分:11)
我写了一篇关于DCEVM:Spring-mvc + Velocity + DCEVM
的文章我认为这是值得的,因为我的环境运行没有任何问题。
答案 5 :(得分:9)
我一直在开发一个开源项目,它允许您热插拔替换热交换允许的类:https://github.com/fakereplace/fakereplace
它可能适用于您,也可能不适合您,但任何反馈都表示赞赏
答案 6 :(得分:4)
你可能想看看这个:
HotSwap支持:Java HotSpot VM的面向对象架构支持高级功能,例如即时类重新定义,或者#34; HotSwap"。此功能提供了通过调试器API替换正在运行的应用程序中的已修改代码的功能。 HotSwap为Java平台调试器体系结构添加了功能,允许在执行的同时在调试器的控制下更新类。它还允许通过在已插入分析代码的方法版本中进行热交换来执行分析操作。
目前,这只允许重新部署新编译的方法体,而无需重新启动应用程序。您所要做的就是使用调试器运行它。 我在Eclipse中尝试过,它的工作非常出色。
另外,正如Emmanuel Bourg在他的回答中提到的那样(JEP 159),希望能够支持添加超类型以及添加和删除方法和字段。
参考: Java Whitepaper 135217: Reliability, Availability and Serviceability
答案 7 :(得分:-3)
JRebel是免费的。不要买它。选择“购买”页面上的“免费”选项(单选按钮)。然后选择“社交”。注册后,您将获得功能齐全的JRebel许可证密钥。然后,您可以下载JRebel或在IDE嵌入式版本中使用该密钥。捕获,(是的,有一个捕获),你必须允许他们每月在您的FB时间线或Twitter帐户上发布一次(广告)。我给了他们我的推特账号,没什么大不了的,我从不使用它,也没有人知道我真正使用过它。所以节省260美元。