重新部署JRebel的替代scheme
JRebel允许在不重新启动应用程序的情况下重新部署新编译的代码。 我想知道是否有其他的select(免费?)。 FAQ页面回答了这个问题,但是我确定它对JRebel有偏见。 这个问题在一年前曾经在这个网站上提出过,但是我现在把它带回来,看看有没有人有新的信息。
在一个方面,我真的很喜欢JRebel,但如果有一个自由的select,我愿意尝试它。
另外需要注意的是,我正在开发一个开源项目,他们可以免费提供一年的许可证给那些可以certificate他们在开源项目上的人。 这对我来说很好(www.kuali.org),但我不会永远在这个项目上。
看看DCEVM ,它是对HotSpot虚拟机的修改,允许在运行时无限制地重新定义类。 您可以添加/删除字段和方法,并在运行时更改类的超types。 作为JEP 159的一部分,DCEVM的function很可能被集成到Java的未来更新中。
该站点上的二进制文件仅限于Java 6u25和Java 7的早期版本。该项目已在Github上分支并支持Java 7和8的最新版本。维护者在Windows / Linux上为32/64位虚拟机提供二进制文件。 从Debian 7(Wheezy)和Ubuntu 15.04开始,可以使用openjdk-7-jre-dcevm和openjdk-8-jre-dcevm软件包安装DCEVM ,并使用java -dcevm
调用。
Hotswap Agent是DCEVM的扩展,它支持许多Java框架(重新加载Spring bean定义,Hibernate实体映射,logging器级别设置…)。
还有很多文档说明如何为Java 1.7设置DCEVM和编译的二进制文件。
由Spring的人,用于Grails重装,但也适用于Java:
DCEVM支持增强的类重定义,可用于当前的JDK7和JDK8。
https://github.com/dcevm/dcevm/releases
HotswapAgent是一个免费的JRebel替代品,并支持各种框架中的DCEVM。
我写了一篇关于DCEVM的文章: Spring-mvc + Velocity + DCEVM
我认为这是值得的,因为我的环境运行没有任何问题。
我一直在开发一个开源项目,它允许你热replace超过热插拔允许的类: https : //github.com/fakereplace/fakereplace
它可能会或可能不会为你工作,但任何反馈意见
你可能想看看这个:
HotSwap支持:Java HotSpot VM的面向对象体系结构支持高级特性,例如即时类重新定义或“HotSwap”。 此function提供了通过debugging器API在正在运行的应用程序中replace已修改的代码的function。 HotSwap为Java平台debugging器体系结构增加了function,使得在debugging器控制下 ,可以在执行过程中更新类。 它还允许通过在已插入分析代码的方法版本中执行分析操作。
目前,这只允许重新部署新编译的方法体而不重新启动应用程序。 你所要做的就是用debugging器来运行它。 我在Eclipse中尝试过,它的工作出色。
另外,正如埃马纽埃尔·布尔格(Emmanuel Bourg)在他的回答( JEP 159 )中所提到的那样,有希望支持增加超types以及增加和删除方法和领域。
参考: Java白皮书135217:可靠性,可用性和可服务性
JRebel是免费的。 不要买它。 select“购买”页面上的“免费”选项(单选button)。 然后select“社交”。 注册后,您将获得function完备的JRebel许可证密钥。 然后,您可以下载JRebel或在IDEembedded式版本中使用该密钥。 这个问题(是的,有一个问题),你必须允许他们代表你的FB时间表或者Twitter账号每月发布一次(做广告)。 我给他们我的Twitter帐户,没有biggie,我从来没有使用它,没有人知道我真的使用它。 所以省下$ 260。