1

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

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

4

1 回答 1

1

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

  • 编译器的经典步骤,例如词法分析/解析/AST 行走/IR 翻译,是由用 Java 编写的代码完成的,
  • 许多核心 Ruby 类映射到实际的 Java 类,甚至库,它们实现了它们的功能(例如,RubyString方法,例如capitalize!,在org.jruby.RubyStringJava 类中实现,或者某些日期和时间的东西基于joda-time) ,
  • JRuby 利用了 JVM 特性,例如垃圾收集、多线程等,
  • Ruby 代码可以 JIT 化为 Java 字节码。
于 2013-06-13T16:43:09.033 回答