2013-06-12 27 views
1

這是一個非常初學者的問題。JRuby是在JVM上實現的Ruby--這是什麼意思?

JRuby是在JVM上實現的Ruby。這是否意味着創建過程只是從頭開始創建Ruby語言,在Java方法和類中實現,而不是在C中實現?也就是說,每個Ruby方法在Java中都是一個一個地實現的?我認爲我的問題根源在於對JVM缺乏瞭解。

+0

這意味着Ruby解析器輸出Java字節碼而不是Ruby AST。 – 2013-06-12 18:10:18

回答

1

這意味着在JRuby中運行的所有ruby代碼最終都會轉換爲由JVM執行的字節碼。當JRuby被編寫和編譯時,這種「翻譯」可能已經完成,或者它在運行時發生,當JRuby編譯器將Ruby代碼轉換爲可以在JVM上運行的某些東西時。更具體地說:

  • 的編譯器,如詞法/分析/ AST步行/ IR翻譯經典的步驟是由Java代碼編寫完成,
  • 許多核心的Ruby類映射到實際的Java類,或即使是實現其功能的庫(例如,Ruby的String方法,例如capitalize!,都在org.jruby.RubyString Java類中實現,或者某些日期和時間內容基於joda-time),但是JRuby利用JVM功能,如垃圾收集,多線程等,
  • Ruby代碼可以得到JITed到Java字節碼。