Ruby VM之间的差异

时间:2020-03-06 14:44:06  来源:igfitidea点击:

主要Ruby VM的优点/缺点是什么(诸如功能,兼容性,性能和怪癖之类的东西?),我知道还有一些额外的功能,例如能够通过JRuby使用Java接口。这些也将有助于注意。在这一点上以及在什么情况下,任何虚拟机都具有明显的优势吗?

解决方案

我曾经使用过Matz的Ruby和JRuby,它们分别解决了不同的任务。如果我们正在开发一个简单的Ruby或者Rails应用程序,那可能就足够了,但是,如果有一些功能强大的Java库可以提供很多帮助,那么JRuby可能是值得的。

我没有做过任何过于复杂的事情,但是JRuby看起来相当不错,至少在实现核心语言功能方面(我还没有遇到任何差异,但是它们可能存在)。

我想分享一个小故事...我正在编写一个脚本来与DB2数据库进行交互。 Ruby对DB2的支持非常糟糕……我们必须安装整个DB2 Express版本,才能编译Ruby驱动程序,这对我来说什至不起作用。我受够了,并使用JDBC和一些小的DB2 JDBC jar切换到JRuby。它完美地解决了我的问题。重点是什么?好吧,如果获得对某些Java库的访问权将简化当前的问题,那么一定要去做!

我希望这可以帮到你!抱歉,我没有其他VM的经验。

我已经阅读了另外一个警告,但是我不太了解细节... JRuby我认为支持通过Java线程进行线程化,而不是Matz实现中支持的"绿色"线程...因此,如果我们希望在多线程上多核系统,JRuby可能会为我们提供更好的服务……除非我们想在C中进行线程化。

以下是我在主要VM上了解到的一些信息:Ruby MRI,Ruby 1.9(YARV),JRuby,XRuby,Rubinius和IronRuby

去年有一个性能基准可以比较主要的VM,但是就VM开发的发展速度而言,它今天可能已不那么重要了。我相信Ruby 1.9通常是最快的,但目前仍比JRuby更具优势。

当前,有四个VM能够运行Ruby on Rails:Ruby MRI,Ruby 1.9,JRuby和Rubinius。

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

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

还有一个名为HotRuby的VM,可让我们在浏览器或者Flash中运行Ruby源代码。