JRebel有哪些好处?

17
我一直在了解JRebel。根据他们的网站:

"JRebel是一个可以加速JVM(Java、Scala、Groovy)开发的任何Java插件,它可以将您在工作区中所做的更改重新加载到正在运行的JVM中,而无需重启或重新部署,并在您编码时保持应用程序的状态。"

这似乎与我们已经通过Eclipse、Netbeans和IntelliJ实现的相同:我们保存后我们的更改会立即部署。那么JRebel会给我们带来什么额外的好处呢?
有人能为我解释一下吗?

JRebel使用糟糕的类重新加载方法。自从我猜到了JRebel的工作原理,我就再也不会使用它了。 - michael
3个回答

17

集成开发环境(Eclipse、NetBeans 或 IntelliJ)如果配置了自动部署,会自动重新部署应用程序,但这不是瞬间完成的。基本上,这只是自动化,仍然导致应用程序的实际重新部署,包括创建一个新的类加载器和所有初始化进程所涉及到的补充内容。

在某些情况下,IDE 与某些容器结合使用可以保留会话状态 - 如果适用于您,那非常棒。如果不行- JRebel 就是答案。

在打包部署的情况下,构建阶段会增加时间,但使用 JRebel 可以一次性消除所有东西。


请问您对https://dev59.com/yFsW5IYBdhLWcg3wOk_O的看法是什么?我认为这个答案已经不再有效,即“基本上,它只是自动化,但仍然会导致真正的重新部署..”,因为我发现现在Eclipse重新部署非常快。 - emilly
@emilly,无论是由Eclipse还是其他任何IDE触发,纯净重部署仍然只是一个重部署。除非在运行时特定技术提供了专门的钩子来触发IDE(或任何其他工具),并且针对更新/重部署速度进行了优化。 - Anton Arhipov

6

有些更改是不可能重新加载的,特别是在修改jar文件类而无需重新加载或重启服务器(无论您使用哪个服务器)时。它会自动更改服务器中的编译类,并自动重新加载到您的类路径中。

当您在IDE中保存和刷新更改时,基本上是在重新构建war文件并在服务器上重新部署它。即使重新部署具有多个jar文件和war文件的大型应用程序时,这个过程仍然可能会变慢,并且必须刷新所有类路径。


1

JRebel不是一个IDE插件。JRebel预装了Eclipse、IntelliJ IDEA、NetBeans和JDeveloper的插件,但是,JRebel代理被设计为与IDE无关,可以在IDE之外使用。

如果您对JRebel是什么以及它不是什么有疑问?这里有一个链接可以提供您正在寻找的所有答案:

JRebel是什么以及它不是什么?

这是一个关于JRebel的视频:

JRebel视频


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接