JRuby 综述:JRuby 发布、ruby2java、JSR 292 进展

阅读数:540 2009 年 6 月 11 日

话题:JavaRubyJVM性能调优语言 & 开发架构

JRuby 1.3 现已发布,包括很多性能改进和错误修正。新的改进包括添加了 Nailgun、快速 timeout 和其他(点击查看 1.3 版的更多变化信息,如 Nailgun、不再支持 Java1.4)。

JRuby 1.3 也是首个兼容 Google AppEngine Java 支持的稳定版本。

在新版本中 timeout 似乎存在问题,不过该问题已经在 JRuby 的分支版本中修正。目前的解决办法是,从分支中构建 JRuby,或者等待 1.3.1 版本发布。

同时,改进 JRuby 速度的工作仍在进行中。其中一个改进编译 JRuby 的项目是ruby2java

Ruby2Java 编译器检查类的运行时定义来产生正常的 Java 类。所有元编程方法都反映在 Java 类中,就像对这些方法做了运行时修改一样。

ruby2java 项目位于 Kenai,需要最低 JRuby 1.3 版本运行。

Ruby2java 旨在改善 JRuby 在现有 JVM 上的速度。但是,JDK/Java 7 中的一些变化可能对性能有显著的提高。JSR-292收集了 JVM 的前几个变化以实现这个目标。 

其中一个变化是引入了新的字节码invokedynamic,其提供了针对调用的定制查找方法,例如,如果一个消息发送给接受者,语言运行时被调用并处理查找、返回实际运行的方法。虽然这本身不会带来很大的改进,但指导思想是 JVM 可以对调用提供更好的优化。

这种方法已讨论多年,但是慢慢才变成现实。JavaOne 09 大会上的某些讨论就是针对 JSR-292:复兴虚拟机技术JSR 292 手册,深入探讨了 JVM 的变化和未来的变化趋势。

Charles Nutter 也在使用 invokedynamic 和新方法处理方式上取得了进展,包含该代码的 JRuby 版本在某一个代码分支上。

新功能目前只在 JVM 的研究版本或者早期 JDK 7 版本中提供(invokedynamic 几周前已经包含在 JDK 7 中)。

查看英文原文:JRuby Roundup: JRuby 1.3 Released, ruby2java, JSR 292 Progress