技术开发 频道

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

  【IT168资讯】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中)。

0
相关文章