JRuby 1.7.0 已发布:默认为 Ruby 1.9 模式, 能够使用 InvokeDynamic

来源:互联网 发布:ic hr软件 编辑:程序博客网 时间:2024/05/22 00:52

JRuby 1.7.0 已发布:默认为 Ruby 1.9 模式, 能够使用 InvokeDynamic

Mirko Stocker 发表于 十月 25, 2012

在第一次预览发布的五个月(参见InfoQ的新闻报道),以及在其后的第二次预览发布后,JRuby 1.7.0的最终版本发布了.

JRuby 1.7最值得记下的变化是Ruby 1.9.3是现在默认的运行时模式,但仍然支持1.8.7。虽然大量1.9不兼容问题的已经修复,但现在还不能完整支持Ruby 1.9全部功能.参见发布记录

我们知道我们还不支持许多1.9部件,像Ripper,但我们在一个稳定的点上,人们可以使用1.9模式的JRuby部署生产性应用系统.在这里,为可预见的将来,我们计划每2-3周就放出1.7.x的阶段性发布.这些阶段性的发布将用于定位用户运行时的错误报告;以及补充一些在1.9库中我们还没完成的缺失功能。

对Java 5 的支持已经被去除, Rubygems 和 Rake 被分别更新到 1.8.24 和 0.9.2.2.

JRuby 1.7 现在可以使用 Java 7的 invokedynamic(动态调用), 但和第一次预览发布不同的是,它现在被默认设置为off.
JRuby wiki 的原因解释: 

[..] 当前 OpenJDK 7 的发行版本有时候会抛出一些错误,或没有能够在优化代码时像它们应该的那样优化的那么好.为了提供JRuby的一贯体验,对 Java 7 中的invokedynamic默认设为off.

对于那些没有遇到错误或影响性能的应用程序, 为最大化性能仍建议使用invokedynamic.

通过设置JRuby参数 -Xcompile.invokedynamic=true (或在JRUBY_OPTS中),或通过在JVM级设置jruby.compile.invokedynamic=true可以强制启用.

而在 JVM invokedynamic 的Java 8构建包  中是默认设为启用的.

你已经在JRuby 1.7尝试启用了invokedynamic 吗?在你的程序中得到了多大的性能提升呢?

 

 

 

原创粉丝点击