2008-09-25 51 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源代碼。