2008-09-25 112 views
3

主要的Ruby虚拟机有什么优点/缺点(比如特性,兼容性,性能和怪癖?)我知道还有一些额外的功能,比如能够通过JRuby使用Java接口。这些也将有所帮助。在这一点上,任何VM都有明显的优势,在什么情况下?Ruby虚拟机之间的差异

回答

6

我已经使用Matz的Ruby和JRuby,他们解决不同的任务。如果您正在开发一个直接的Ruby或Rails应用程序,那么这可能就足够了,但是如果有一些功能强大的Java库可以提供很多帮助,那么JRuby可能是值得的。至少就实现核心语言功能(我还没有遇到任何分歧,但它们可能存在)而言,JRuby似乎相当不错,至少就实现核心语言功能而言,JRuby似乎相当不错。

我想分享一个小故事...我正在编写一个脚本来与DB2数据库进行交互。 Ruby中的DB2支持很糟糕......您必须安装整个DB2 Express版本才能编译Ruby驱动程序,而这些Ruby驱动程序甚至不适合我。我受够了,转而使用JDBC和一些小的JDBC JDBC jar来转换到JRuby。它完美地解决了我的问题。重点?那么,如果获得一些Java库的访问权限将简化手头的问题,那就千万不要这么做!

我希望这有帮助!对不起,我没有与其他虚拟机的经验....


还有一个警告我看了一下,但我不知道的细节太清楚...... JRuby的,我认为支持通过Java线程线程,而不是Matz实现中支持的“绿色”线程......所以,如果您想在多核系统上使用多线程,JRuby可能会为您提供更好的服务......除非您想在C中执行线程操作。

6

这里是信息我在主VM上搜索:Ruby MRIRuby 1.9 (YARV),JRuby,XRuby,和IronRuby

去年有一个performance benchmark比较了主要的虚拟机,但是虚拟机的发展速度有多快,现在可能不太相关。我相信Ruby 1.9通常是最快的,现在仍然比JRuby更有优势。

四个虚拟机目前能够运行Ruby on Rails:Ruby MRI,Ruby 1.9,JRuby和Rubinius。

XRuby像JRuby一样在JVM上运行,并将Ruby源文件编译为Java .class。

IronRuby运行在.NET上,利用它们的DLR,并允许您将Ruby与.NET库和基础结构集成。它还不能运行Ruby on Rails。

还有一个名为HotRuby的虚拟机,可让您在浏览器或Flash中运行Ruby源代码。