【发布时间】:2013-06-12 18:03:50
【问题描述】:
这是一个非常初学者的问题。
JRuby 是在 JVM 上实现的 Ruby。这是否意味着创建过程只是从头开始创建 Ruby 语言,用 Java 方法和类实现,而不是用 C?也就是说,每个 Ruby 方法都是在 Java 中一一实现的?我认为我的问题源于对 JVM 缺乏了解。
【问题讨论】:
-
这意味着Ruby解析器输出Java字节码而不是Ruby AST。
这是一个非常初学者的问题。
JRuby 是在 JVM 上实现的 Ruby。这是否意味着创建过程只是从头开始创建 Ruby 语言,用 Java 方法和类实现,而不是用 C?也就是说,每个 Ruby 方法都是在 Java 中一一实现的?我认为我的问题源于对 JVM 缺乏了解。
【问题讨论】:
这意味着在 JRuby 中运行的所有 ruby 代码最终都会转换为由 JVM 执行的字节码。这种“翻译”可以在 JRuby 被编写和编译时已经完成,或者它发生在运行时,当 JRuby 编译器将 Ruby 代码转换为可以在 JVM 上运行的东西时。更具体地说:
String 方法,如 capitalize!,在 org.jruby.RubyString Java 类中实现,或者一些日期和时间的东西是基于joda-time),【讨论】: