JRuby是在JVM上实现的Ruby - 这是什么意思?

时间:2013-06-12 18:03:51

标签: jvm jruby

这是一个非常初学的问题。

JRuby是在JVM上实现的Ruby。这是否意味着创建过程只是从头开始创建Ruby语言,用Java方法和类实现,而不是用C语言实现?也就是说,每个Ruby方法都是用Java实现的?我认为我的问题源于缺乏对JVM的理解。

1 个答案:

答案 0 :(得分:1)

这意味着在JRuby中运行的所有ruby代码最终都会转换为由JVM执行的字节码。当JRuby编译和编译时,或者在运行时,当JRuby编译器将Ruby代码转换为可以在JVM上运行的东西时,就可以完成“转换”。更具体地说:

  • 编译器的经典步骤,例如lexing / parsing / AST walking / IR translation,由用Java编写的代码完成,
  • 许多核心Ruby类映射到实际的Java类,甚至库,它们实现了它们的功能(例如,String方法,如capitalize!,在joda-time内部实现3}} Java类,或者某些日期和时间内容基于{{1}}),
  • JRuby利用JVM功能,例如垃圾收集,多线程等,
  • Ruby代码可以将JIT编译为Java字节码。