代码之家  ›  专栏  ›  技术社区  ›  epochwolf

JRuby on Rails和Ruby on Rails有什么区别?

  •  130
  • epochwolf  · 技术社区  · 16 年前

    我希望在Rails上试用JRuby和JRuby。我很难找到关于JRuby on Rails和Ruby on Rails之间的区别的信息。

    我需要注意的区别是什么?

    4 回复  |  直到 15 年前
        1
  •  163
  •   qutax    4 年前

    JRuby是运行在JVM上的Ruby实现,而Matz的Ruby是C实现。

    需要注意的主要特点是:

    1. JRuby运行在Java虚拟机上,它被编译或解释为Java字节码。
    2. JRuby可以与Java代码集成。如果您有Java类库(.jar),那么可以通过JRuby在Ruby代码中引用和使用它们。另一方面,您也可以从Java内部调用JRuby代码。JRuby还可以使用JVM和应用服务器功能。
    3. 尽管不能将原生Ruby gems与JRuby结合使用,但大多数流行的Ruby库都有JRuby实现。

        2
  •  62
  •   kares    12 年前

    我很惊讶在这个问题的所有答案中都缺少一个关键的东西,与 吉尔 .

    真正并发 (“全局解释器锁”空闲)。当使用JRuby运行两个线程(例如,服务2个用户请求)时,它们能够在单个进程内并发运行,而在MRI中,GIL(即使使用1.9的本机线程)可以避免并行执行Ruby代码。

    对于应用程序开发人员来说,在考虑JRuby时首先要记住这一点,因为JRuby在很多方面都非常出色 config.threadsafe!

        3
  •  7
  •   Nic Wise    16 年前

    我可能错了,但我认为你可以用一种普通RoR无法实现的方式来打包JRuby on Rails应用程序——看看Mingle或类似的软件。可以在不脱裤子/不打开komono的情况下销售。

    也就是说,我对RoR包装还不够熟悉,所以不要强迫我:)

        4
  •  4
  •   Michael Neale    16 年前

    大多数情况下,它的工作原理应该是一样的。在jRoR中,您可以访问RoR中没有的内容。通常这主要是一个部署问题。

    但是,如果您的RoR应用程序使用的本机库没有在JVM上运行的等效库,那么这可能是一个难题。然而,大多数lib都有非本机版本(至少是我遇到的流行版本)。

        5
  •  2
  •   user2057354    5 年前

    这里已经有了一些很好的答案。

    eebbesen已经涵盖了基础知识,kares(他自己!)告诉我们JRuby没有GIL。

    我将从更实际的角度补充,我已经在RubyonRails上启动了应用程序,然后出于性能原因迁移到JRuby。

    有两个主要的性能优势:JRuby在某些情况下比Ruby快,还有两个,缺少kares提到的全局解释器锁,这使我能够进行多线程处理,虽然这很棘手,但却带来了几个数量级的性能优势。