Ruby和JRuby有什么区别?

有人可以用外行的术语为我提供开发JRuby和Ruby,Rails应用程序之间的区别吗?

我将NetBeans用作Ruby on Rails IDE,每次创建项目时都会问我这个问题-但我并没有真正的区别。 有什么利弊吗?

Ash asked 2020-01-14T02:39:49Z
8个解决方案
60 votes

Ruby在基于C的本地解释器中运行。 JRuby在Java虚拟机中运行。 有许多gem和插件可能无法在JRuby中运行,特别是带有本机C扩展的gem和插件,除非它们已被重写为可以在Java中运行。

最终,区别在于您要实际部署应用程序时(假设您要使用的gems不是问题)。 如果您想部署到Java Web服务器,那么JRuby将是您的最佳选择。 如果您具有* nix环境,那么Passenger + Nginx或Apache也非常受欢迎,它们使用标准的ruby或ruby企业解释器。 总是有杂种或瘦群集选项,再次使用标准解释器。

danivovich answered 2020-01-14T02:40:15Z
24 votes

JRuby在Java VM上运行(解释器是用Java编写的),而原始的Ruby解释器是用C编写的。两者都有其优缺点(Ruby可以使用本机扩展,JRuby可以访问Java类型,对象等)。

JRuby使用Ruby 1.8.6的语法,即将推出1.9.x。 JRuby有Java线程(这意味着它将扩展到许多cpus,内核等),Ruby在用户空间线程,锁定ec方面存在一些问题。

就我个人而言,我将JRuby与Glassfish v3和Netbeans一起用于RoR开发,它的伸缩性比ruby +大量的mongrels,Apaches更好,并且易于管理。

Tamas Mezei answered 2020-01-14T02:40:44Z
5 votes

Ruby是一种编程语言。 JRuby是Ruby编程语言的实现。

询问两者之间的区别实际上没有任何意义:它们处于两个完全不同的抽象级别。

这类似于询问汽车和Prius有什么区别。 这也没有意义:Prius是汽车一般概念的实现。 您可能会问,普锐斯与悍马之间的区别是什么,或者汽车与飞机之间的区别是什么,但是汽车与普锐斯之间的区别是没有意义的。

同样,对于Ruby,您可以询问Ruby与Python或JRuby与MRI之间的区别,但是Ruby与JRuby之间的区别没有任何意义。

Jörg W Mittag answered 2020-01-14T02:41:19Z
4 votes

JRuby是Ruby的Java实现。 它与Ruby 1.8兼容,并且落后于当前的Ruby(1.9)。 它运行在JVM上,可让您轻松集成现有的Java库。

Brian Agnew answered 2020-01-14T02:41:39Z
4 votes

JRuby主要与Ruby兼容。 JRuby的一方面是出于性能原因,您可以在非兼容模式下运行它。

Thomas Jung answered 2020-01-14T02:41:59Z
0 votes

据我所知,jruby只是用Java编写的ruby实现,因此可以轻松地与Java运行时集成。

ennuikiller answered 2020-01-14T02:42:19Z
0 votes

JRuby是Ruby编程语言的Java实现。

answered 2020-01-14T02:42:39Z
0 votes

JRuby是Ruby解释器的Java实现。 Rails(又名Ruby on Rails)是一个用Ruby编写的Web应用程序框架。本文介绍了如何通过JVM实际执行Ruby代码[http://patshaughnessy.net/2012/2/7/journey-to-the-center-of-jruby]

RushabhM answered 2020-01-14T02:42:59Z
translate from https://stackoverflow.com:/questions/1728999/whats-the-difference-between-ruby-and-jruby