JRuby 1.7.0 发布:默认使用Rudy1.9 模式,并可使用InvokeDynamic

在第一个预览版(见InfoQ的报道)发布五个月之后及第二个预览版发布不久,JRuby 1.7.0 发布了正式版。

JRuby 1.7最显著的变化就是使用Ruby1.9.3作为默认运行模式,当然它仍然支持1.8.7. 从以下发布说明上看,尽管JRuby 1.7修复了很多与1.9不兼容的问题,但仍未完全支持Ruby 1.9的 所有特性。

“虽然JRuby 1.7对1.9的某些特性还不支持,比如Ripper,但已经可以稳定地在1.9模式中运行产品应用程序了。在可预见的未来,我们会每隔2到3周发布一个1.7.x补丁包,这些补丁将会解决用户向我们报告的问题以及那些尚未完成的1.9的库。”

JRuby 1.7不再继续支持Java 5,同时Rubygems和Rake的相应版本也更新到1.8.24 和0.9.2.2。

JRuby1.7能使用Java 7 的invokedynamic功能,但和第一个预览版不同,此功能现在默认为关闭状态。详细原因可见JRuby wiki:

“OpenJDK7的现有版本有时会发生错误或者无法优化代码。为了提供一致的JRuby体验,在Java 7中将默认关闭invokedynamic功能。

对于那些没有出现运行错误或者性能降低的应用,我们推荐开启invokedynamic功能以获得最大性能。可以通过强制传递以下参数“Xcompile.invokedynamic=true”给JRuby(或者添加到JRUBY_OPTS里),或者在Java虚拟机层面设置 “jruby.compile.invokedynamic=true” 参数来开启invokedynamic功能。”

在Java 8 builds 的Java虚拟机中invokedynamic功能默认是开启的。

您是否已经尝试过在JRuby1.7中开启invokedynamic功能? 您的应用的性能有了多少提升?

查看英文原文:http://www.infoq.com/news/2012/10/jruby-17

感谢李永伦对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至[email protected]。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

你可能感兴趣的:(JRuby 1.7.0 发布:默认使用Rudy1.9 模式,并可使用InvokeDynamic)