JRuby是在JVM上实现的Ruby-这意味着什么?
这是一个非常初级的问题JRuby是在JVM上实现的Ruby-这意味着什么?,jvm,jruby,Jvm,Jruby,这是一个非常初级的问题 JRuby是在JVM上实现的Ruby。这是否意味着创建过程只是从头开始创建Ruby语言,用Java方法和类实现,而不是用C实现?也就是说,每个Ruby方法都是用Java逐个实现的?我认为我的问题根源在于对JVM缺乏了解。这意味着JRuby中运行的所有ruby代码最终都会转换为JVM执行的字节码。当编写和编译JRuby时,或者当JRuby编译器将Ruby代码转换为可以在JVM上运行的代码时,这种“转换”可能已经完成了。更具体地说: 编译器的经典步骤,如lexing/par
JRuby是在JVM上实现的Ruby。这是否意味着创建过程只是从头开始创建Ruby语言,用Java方法和类实现,而不是用C实现?也就是说,每个Ruby方法都是用Java逐个实现的?我认为我的问题根源在于对JVM缺乏了解。这意味着JRuby中运行的所有ruby代码最终都会转换为JVM执行的字节码。当编写和编译JRuby时,或者当JRuby编译器将Ruby代码转换为可以在JVM上运行的代码时,这种“转换”可能已经完成了。更具体地说:
- 编译器的经典步骤,如lexing/parsing/AST walking/IR翻译,都是由Java编写的代码完成的
- 许多核心Ruby类映射到实际的Java类,甚至是实现其功能的库(例如,Ruby
方法,如String
,是在Java类内部实现的,或者一些日期和时间的东西是基于capitalize!
)joda time
- JRuby利用JVM特性,如垃圾收集、多线程等
- Ruby代码可以被JIT转换成Java字节码
- 编译器的经典步骤,如lexing/parsing/AST walking/IR翻译,都是由Java编写的代码完成的
- 许多核心Ruby类映射到实际的Java类,甚至是实现其功能的库(例如,Ruby
方法,如String
,是在Java类内部实现的,或者一些日期和时间的东西是基于capitalize!
)joda time
- JRuby利用JVM特性,如垃圾收集、多线程等
- Ruby代码可以被JIT转换成Java字节码
- 这意味着JRuby中运行的所有ruby代码最终都会转换为JVM执行的字节码。当编写和编译JRuby时,或者当JRuby编译器将Ruby代码转换为可以在JVM上运行的代码时,这种“转换”可能已经完成了。更具体地说: