JRebel允许重新部署新编译的代码,而无需重新启动应用程序。我想知道是否还有其他选择(免费?)。在 FAQ页面回答了这个问题,但我相信它是对JRebel的偏见。这个问题是一年前在此站点上提出的,但是我将其重新提出来看看是否有人有任何新信息。
附带一提,我真的很喜欢JRebel,但是如果有免费的替代选择,我愿意尝试一下。
另外要注意的是,我正在从事一个开源项目,他们向可以证明自己在开源项目中的人们免费提供一年的许可证。这对我来说很棒(www.kuali.org),但是我永远不会在那个项目上。
JRebel允许重新部署新编译的代码,而无需重新启动应用程序。我想知道是否还有其他选择(免费?)。在 FAQ页面回答了这个问题,但我相信它是对JRebel的偏见。这个问题是一年前在此站点上提出的,但是我将其重新提出来看看是否有人有任何新信息。
附带一提,我真的很喜欢JRebel,但是如果有免费的替代选择,我愿意尝试一下。
另外要注意的是,我正在从事一个开源项目,他们向可以证明自己在开源项目中的人们免费提供一年的许可证。这对我来说很棒(www.kuali.org),但是我永远不会在那个项目上。
Answers:
看一下DCEVM,它是对HotSpot VM的修改,它允许在运行时进行无限的类重新定义。您可以在运行时添加/删除字段和方法并更改类的超级类型。DCEVM的功能可以作为JEP 159的一部分集成在Java的将来更新中。
原始站点上可用的二进制文件仅限于Java 6u25和Java 7的早期版本。该项目已在Github上进行了分叉,并支持Java 7和8的最新版本。维护程序为Windows / Windows上的32/64位VM提供了二进制文件。 Linux。从Java 11开始,该项目移至新的GitHub存储库,现在还为OS X提供了二进制文件。
DCEVM是为Debian和Ubuntu打包的,可以方便地与OpenJDK集成,并且可以通过调用java -dcevm。软件包的名称取决于默认JDK的版本:
Hotswap Agent是DCEVM的扩展,它支持许多Java框架(重新加载Spring bean定义,Hibernate实体映射,记录器级别设置等)。
还有很多文档,说明如何为Java 1.7设置DCEVM和已编译的二进制文件。
DCEVM支持增强的类重新定义,并且可用于当前的JDK7和JDK8。
https://github.com/dcevm/dcevm/releases
HotswapAgent是JRebel的免费替代产品,并在各种框架中支持DCEVM。
由Spring家伙使用,用于Grails重载,但也适用于Java:
我一直在从事一个开源项目,该项目允许您在热交换允许的范围之外进行热替换类:https : //github.com/fakereplace/fakereplace
它可能对您不起作用,但欢迎您提供任何反馈
您可能要看一下:
HotSwap支持:Java HotSpot VM的面向对象的体系结构启用了高级功能,例如,即时类重新定义或“ HotSwap”。此功能提供了通过调试器API替换正在运行的应用程序中的已修改代码的功能。HotSwap向Java平台调试器体系结构添加了功能,使类可以在执行期间在调试器的控制下进行更新。它还允许在插入了性能分析代码的方法版本中通过热交换来执行性能分析操作。
目前,这仅允许重新部署新编译的方法主体,而无需重新启动应用程序。您要做的就是使用调试器运行它。我在Eclipse中尝试过,并且效果出色。
此外,正如伊曼纽尔·布尔格(Emmanuel Bourg)在回答中提到的那样(JEP 159)中,希望能够支持超类型的添加以及方法和字段的添加和删除。
JRebel是免费的。不要买。在“购买”页面上选择“免费”选项(单选按钮)。然后选择“社交”。注册后,您将获得功能齐全的JRebel许可证密钥。然后,您可以下载JRebel或使用IDE嵌入式版本中的密钥。渔获量(是的,有渔获量),您必须允许他们每月在FB时间轴或Twitter帐户上代表您发布(广告)一次。我给了他们我的Twitter帐户,没什么大不了的,我从没使用过,也没有人真正使用过它。因此节省$ 260。