2013-06-12 30 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字节码。