主要Ruby VM的优点/缺点是什么(功能,兼容性,性能和怪癖等等)?我知道还有一些额外的功能,例如能够通过JRuby使用Java接口。这些也有助于注意。在这一点以及在什么情况下,任何VM都有明显的优势吗?
答案 0 :(得分:6)
我已经使用了Matz的Ruby和JRuby,他们解决了不同的任务。如果你正在开发一个直接的Ruby或Rails应用程序,那么这可能就足够了,但如果有一些强大的Java库可以提供很多帮助,那么JRuby可能是值得的。
我没有做过于复杂的事情,但JRuby看起来相当不错,至少就实现核心语言功能而言(我还没有遇到任何差异,但它们可能存在)。
我想分享的一个小轶事......我正在编写一个与DB2数据库交互的脚本。 Ruby中的DB2支持非常糟糕......你必须安装整个DB2 express版本才能编译Ruby驱动程序,这对我来说根本不起作用。我厌倦了并使用JDBC和一些小型DB2 JDBC jar切换到JRuby。它完美地解决了我的问题。关键点?好吧,如果获得对某些Java库的访问权限可以简化手头的问题,那么一定要去吧!
我希望这有用!对不起,我对其他虚拟机没有任何经验....
我已经读到了一个警告,但我不太了解细节...... JRuby我认为支持通过Java线程进行线程化,而不是Matz实现中支持的“绿色”线程...所以如果你想要在多核系统上进行多线程处理,JRuby可能会更好地为您服务......除非您想在C中进行线程化。
答案 1 :(得分:6)
以下是我在主要虚拟机上发现的一些信息:Ruby MRI,Ruby 1.9 (YARV),JRuby,XRuby,Rubinius和{{3 }}
去年有一个IronRuby比较了主要虚拟机,但是虚拟机开发的速度有多快,今天可能并不那么重要。 Ruby 1.9通常是最快的,现在仍然优于JRuby,我相信。
目前有四个虚拟机能够运行Ruby on Rails:Ruby MRI,Ruby 1.9,JRuby和Rubinius。
XRuby在JVM上运行,JRuby也运行,并将Ruby源文件编译为Java .class。
IronRuby在.NET上运行,利用他们的DLR,并允许您将Ruby与.NET库和基础架构集成。它还不能运行Ruby on Rails。
还有一个名为performance benchmark的VM,它允许您在浏览器或Flash中运行Ruby源代码。