任何人都可以用外行的方式向我提供开发JRuby和Ruby,Rails应用程序之间的区别吗?
我使用NetBeans作为我的Ruby on Rails IDE,每次我创建一个项目都会问我这个问题 - 而且我并没有真正发挥作用。有没有任何支持和利弊?
答案 0 :(得分:58)
Ruby在基于本机C的解释器中运行。 JRuby在Java虚拟机中运行。有很多宝石和插件在JRuby中可能不起作用,特别是有本机C扩展的宝石和插件,除非它们已经被重写为用Java运行。
最终,当您想要实际部署应用程序时(假设您想要使用的宝石不是问题),就会产生差异。如果您想部署到Java Web服务器,那么JRuby将是您的选择。如果您有* nix环境,那么Passenger + Nginx或Apache也非常受欢迎,它使用标准的ruby或ruby企业解释器。总是有杂项或细集群选项,再次使用标准解释器。
答案 1 :(得分:24)
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更容易扩展,并且更容易管理。
答案 2 :(得分:6)
Ruby是一种编程语言。 JRuby是Ruby编程语言的一种实现。
询问两者之间的区别并没有多大意义:它们处于两个完全不同的抽象层次。
这类似于询问汽车和普锐斯之间的区别。它也没有意义:Prius是汽车一般概念的实现。你可以问一下普锐斯和悍马之间的区别或者汽车和飞机之间的区别,但是汽车和普锐斯之间的区别是没有意义的。
同样,使用Ruby,您可以询问Ruby和Python或JRuby和MRI之间的区别,但Ruby和JRuby之间的区别没有意义。
答案 3 :(得分:4)
JRuby是Ruby的Java实现。它与Ruby 1.8兼容,并且滞后于当前的Ruby(1.9)。它在JVM上运行,允许您轻松集成现有的Java库。
答案 4 :(得分:4)
JRuby主要与Ruby兼容。 JRuby的一个方面是你可以在performance reasons的不兼容模式下运行它。
答案 5 :(得分:0)
据我所知,jruby只是一个用java编写的ruby实现,因此可以轻松地与java运行时集成。
答案 6 :(得分:0)
JRuby是Ruby编程语言的Java实现。
答案 7 :(得分:0)
JRuby是Ruby解释器的java实现。 Rails(又名Ruby on Rails)是一个用Ruby编写的Web应用程序框架。 本文解释了如何通过JVM http://patshaughnessy.net/2012/2/7/journey-to-the-center-of-jruby
实际执行Ruby代码