【问题标题】:What reasons would I have for not using JRuby over MRI/YARV?我有什么理由不使用 JRuby 而不是 MRI/YARV?
【发布时间】:2025-12-28 18:05:11
【问题描述】:

Is there an advantage to running JRuby if you don't know any Java? 中,如果您只是想要一个比“Ruby”(MRI/YARV)更好的 Ruby 实现,人们建议使用 JRuby。

您不使用 JRuby 的潜在原因是什么?

其他人提到过的有:

  1. 短节目的表现。 JRuby 被描述为对于较长的程序速度更快,但初始化时间较长。解决方法已在 in this question 讨论。
  2. C 扩展:JRuby 支持一些but not all 与 MRI/YARV 一起使用的 C 扩展。
  3. 并发是一把双刃剑。 There's non-thread-safe code out there 人们还没有发现,因为最流行的实现没有真正的并发性。
  4. JRuby can use more memory.
  5. JRuby 有decided not to do CRuby 所做的某些事情。这包括延续(我认为无论如何在 CRuby 中已弃用)和 fork。它们还具有不同的原生字节序和时间精度。
  6. JRuby doesn't enable ObjectSpace 默认。

我的潜在原因包括:

  1. 您使用的库可能未设计为在 JRuby 下运行。例如,在 GitHub 上有 127 个观察者和 60 个分支的 BioRuby,在 JRuby 上有一个minor incompatibility
  2. 担心、不确定和怀疑使用不太流行的实现。我知道 JRuby 通过 RubySpec 比 CRuby 好,但是 RubySpec 还没有完成。

您还有什么其他原因不使用 JRuby 吗?

【问题讨论】:

    标签: ruby jruby


    【解决方案1】:

    JRuby 似乎没有给予$SAFE 高优先级。这篇博文是 2007 年的,但从那以后我没有发现任何变化。

    【讨论】:

      【解决方案2】:

      就个人而言,虽然它预装在 Mac 上,但我并不总是在我的 Linux 机器上安装 Java。

      顺便说一句,RVM 应该在这里被提及,作为处理多个(8 个或更多?!)不同 Ruby 解释器的规范方法。

      【讨论】:

        最近更新 更多