【问题标题】:JRuby is Ruby implemented on the JVM - what does this mean?JRuby 是在 JVM 上实现的 Ruby - 这是什么意思?
【发布时间】:2013-06-12 18:03:50
【问题描述】:

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

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

【问题讨论】:

  • 这意味着Ruby解析器输出Java字节码而不是Ruby AST。

标签: jvm jruby


【解决方案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 代码可以 JIT 化为 Java 字节码。

【讨论】:

    猜你喜欢
    • 2010-09-15
    • 2016-08-17
    • 2011-04-06
    • 2016-12-16
    • 1970-01-01
    • 2011-04-18
    • 2011-01-10
    • 2011-10-14
    • 2014-06-21
    相关资源
    最近更新 更多