主要 Ruby VM 的优点/缺点是什么(特性、兼容性、性能和怪癖?)我知道还有一些额外的特性,比如能够通过 JRuby 使用 Java 接口。这些也将有助于注意。在这一点上是否有任何 VM 具有明显的优势,以及在什么情况下?
2 回答
这是我在主要 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 在 .NET 上运行,利用其 DLR,并允许您将 Ruby 与 .NET 库和基础架构集成。它还不能运行 Ruby on Rails。
还有一个名为HotRuby的 VM ,可让您在浏览器或 Flash 中运行 Ruby 源代码。
我使用了 Matz 的 Ruby 和 JRuby,它们解决了不同的任务。如果您正在开发一个直接的 Ruby 或 Rails 应用程序,那么这可能就足够了,但如果有一些功能强大的 Java 库可以提供很大帮助,那么 JRuby 可能是值得的。
我没有做任何过于复杂的事情,但 JRuby 似乎匹配得很好,至少就实现核心语言特性而言(我还没有遇到任何差异,但它们可能存在)。
我想分享一个小轶事... 我正在编写一个脚本来与 DB2 数据库交互。Ruby 中的 DB2 支持非常糟糕……您必须安装整个 DB2 express 版本才能编译 Ruby 驱动程序,这对我来说甚至都不起作用。我受够了,转而使用 JRuby,使用 JDBC 和一些小的 DB2 JDBC jar。它完美地解决了我的问题。重点?好吧,如果访问某些 Java 库可以简化手头的问题,那么一定要去做!
我希望这可以帮到你!抱歉,我对其他虚拟机没有任何经验....
我读过的另一个警告,但我不太了解细节......我认为 JRuby 支持通过 Java 线程进行线程,而不是 Matz 实现中支持的“绿色”线程......所以如果你想要多线程多核系统,JRuby 可能会更好地为您服务……除非您想在 C 中执行线程。