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
评论