【问题标题】:Redeploy alternatives to JRebel [closed]重新部署 JRebel 的替代品 [关闭]
【发布时间】:2011-11-03 16:46:46
【问题描述】:

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

顺便说一句,我真的很喜欢 JRebel,但如果有免费的替代品,我愿意尝试。

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

【问题讨论】:

  • 好问题。我们也一直在寻找 JRebel 的替代品,因为他们的销售部门极具侵略性。我们为 JRebel 之类的产品付款没有问题,但当他们 24/7 纠缠我们的开发人员和 IT 部门时则不然。
  • 自己的 ZeroTurnAround 可以替代 jRebel:Jrebel 的免费版本,用于开源项目和研究案例...my.jrebel.com
  • 我知道回复晚了,你可以看看 Spring Loaded - ,它是一个 JVM 代理,用于在 JVM 运行时重新加载类文件更改。它在加载时转换类以使它们适合以后重新加载。与只允许在 JVM 运行后进行简单更改(例如更改方法主体)的“热代码替换”不同,Spring Loaded 允许您添加/修改/删除方法/字段/构造函数等等......
  • Eclipse 调试器 - 立即替换您的实时代码。
  • 尝试在姐妹网站Software Recommendations Stack Exchange上发布。

标签: java jrebel hotswap


【解决方案1】:

看看DCEVM,它是对 HotSpot VM 的修改,允许在运行时无限制地重新定义类。您可以在运行时添加/删除字段和方法并更改类的超类型。

原始站点上可用的二进制文件仅限于 Java 6u25 和 Java 7 的早期版本。该项目已在 Github 上分叉并支持 Java 7 和 8 的最新版本。维护者提供 32/64 的二进制文件Windows/Linux 上的位虚拟机。从 Java 11 开始,该项目移至新的 GitHub 存储库,现在还为 OS X 提供二进制文件。

DCEVM 是为 Debian 和 Ubuntu 打包的,它可以方便地与 OpenJDK 集成,并且可以通过 java -dcevm 调用。包名取决于默认JDK的版本:

【讨论】:

  • 它工作得很好,我发现它比 JRebel 更快,内存消耗更少。唯一的限制是坚持 Java 6u25。
  • 非常感谢。我一整天都在试图让 jRebel 按要求工作。 DCEVM 前来救援。
  • 这里是 JDK 7u45 和 MacOSX 上 DCEVM 的完整构建和安装说明:neu242.livejournal.com/52962.html
  • JEP 159 不是 JDK 8 的一部分。它可能已推迟到 JDK 9 但尚未确认。
  • 在这里找到了一些完整的 JVM 1.7 二进制文件:dcevm.nentjes.com,因此无需修补您的 JVM。我尝试了win64,它对我很有用。如果您需要更多详细信息,我还在这里写了博客:javainformed.blogspot.com/2014/01/jrebel-free-alternative.html
【解决方案2】:

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

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

【讨论】:

  • 他们现在有一个专门的网站:hotswapagent.org。这个项目很新,但看起来效果很好。
  • 安装后我按照本教程将其集成到 eclipse 中:tirthalpatel.blogspot.fr/2014/06/… 它就像一个魅力
  • @edudant 安装“Hotswap agent”后,我们需要安装 DCEVM 吗?因为我在 Ubuntu 19.04 和 IntelliJ Ultimate 2019.1.3 中使用“sudo apt install openjdk-11-jre-dcevm”安装了 DCEVM。如果安装“Hotswap 代理”更不用说做 JRebel 的工作,那么 DCEVM 有什么用!?
  • DCEVM 现在可以开箱即用地进行热插拔,无需安装热插拔代理。
  • 警告,hotswapagent 本身,不增强类重载。在jvm中。它只需要 wathces classapth,如果你修改它,它会重新加载。但是遵守给定 JDK 的限制
【解决方案3】:

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

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

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

http://hotswapagent.org/

【讨论】:

    【解决方案4】:

    Spring 人,用于 Grails 重新加载,但也适用于 Java:

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

    【讨论】:

    • 不想吐槽但是spring-loaded不支持依赖重载。
    • 我记得,您可以设置一些系统属性来告诉它哪些包可以重新加载。它还有其他限制,无论如何我可能更愿意使用 DCEVM。
    • “哪些包可以重新加载” - 正确。 @lbednaszynski 指出的问题是它不会重新加载依赖的 JAR。这对于 Maven 多模块项目至关重要。
    • 这个项目现在在阁楼里!
    【解决方案5】:

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

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

    【讨论】:

    【解决方案6】:

    我一直在从事一个开源项目,该项目允许您在热交换允许的范围之外热替换类:https://github.com/fakereplace/fakereplace

    它可能适合您,也可能不适合您,但我们感谢您提供任何反馈

    【讨论】:

      【解决方案7】:

      你可能想看看这个:

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

      目前,这只允许重新部署新编译的方法体,而无需重新启动应用程序。您所要做的就是使用调试器运行它。 我在 Eclipse 中试了一下,效果很好。

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

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

      【讨论】:

        【解决方案8】:

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

        【讨论】:

        • 还有一个问题。它 JRebel Social 仅可免费用于非商业用途。是的,当然,我们不会检查您是否真的将它用于您的个人项目或工作中,但如果审核员看到您滥用该软件,他们可能会不喜欢它。
        • 我绝不会提出其他建议。事实上 - 我提出这个的唯一原因是因为不再有“个人”许可证。我能够让我的公司支付我的工作许可证费用。然后,我还为个人使用支付了 3 年以上的个人许可证费用。但是当价格超过每年 260 美元时,这变得不切实际。这对我(和其他人)来说是最好的解决方案,但如果价格合理,我也会继续支付。
        • 另外,每年我都需要重新购买我已经购买的软件这一事实令人沮丧。没有其他公司这样做。通常你购买一次软件。如果您选择升级 - 然后您以全价(或升级价格,取决于公司)再次购买。但是您当时支付的是新功能 - 与您已经支付的功能不同。这就像 Apple 或 Microsoft 每年都会禁用您的计算机,直到您再次为操作系统付费。值得深思。
        • JRebel Social 已替换为 myJRebel。非商业用途免费,您只需要允许分享统计数据:my.jrebel.com
        • 总而言之,JRebel 对于开发者软件许可证来说相对便宜。
        猜你喜欢
        • 2018-01-24
        • 2012-05-26
        • 2012-06-16
        • 2011-06-16
        • 2011-12-17
        • 2010-10-21
        • 2010-12-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多