JRuby:1.0.3 解决兼容性问题,1.1 改进性能

  • Werner Schuster
  • 宋玮

2007 年 12 月 25 日

话题:JavaRubyRuby on Rails语言 & 开发

JRuby 1.0.3 已经发布了,它是 JRuby 1.0.x 分支的另一个稳定版。在所修正的错误当中,这一版修正了一些与 Rails 2.0 相关的问题,这些问题是由于 Rails 2.0 现在需要 OpenSSL 所引起的。

Nick Sieger,JRuby 团队成员,报告了在 JRuby 1.0.3 中的另一个修改

正常情况下,一个 1.0.3 版本不至于让人这么兴奋,但是这一回,主干(trunk)的内部 API(好几个 JRuby 扩展所依赖的)开始产生分叉。很不幸,这迫使我们面临一个抉择:要么分叉并维护每个扩展的两个版本(一个是 1.0.x,另一个是 1.1 及更高版),要么中止向后兼容。最终我们选择了后者,宁愿是一个单一教派,也不愿陷入并行版本的苦境。
根据这一点,Nick 继续给出了一个有用的表格,显示 Ruby 库和 Gem 与 JRuby 版本的对应关系:
  1.0 - 1.0.2, 1.1b1 1.0.3, 1.1b2
Library  
rubygems <= 0.9.4 <= 0.9.4, = 1.0 *
rails <= 1.2.6,

>= 2.0.x †
any
activerecord-jdbc <= 0.6 >= 0.7
jruby-openssl <= 0.0.5 >= 0.1
goldspike 1.3 1.4
mongrel any ‡ 1.1.2



注意 Rails 2.0 可以与所有版本一起工作,虽然在表格左手侧 JRuby 版本(1.0 - 1.0.2, 1.1b1)一列,jruby-openssl <= 0.5 是需要被安装的。

在 JRuby 1.1 的新闻中,花在改善正则表达式支持和性能上的工作看起来已经兑现。 Tim Bray 展示了一个用 Ruby 写的工具的运行时间,运行是在不同 Ruby 版本下进行的。最后两行(摘录至此)显示了 JRuby 1.1 中最近的性能提升(值越低越好):



Elapsed User System
JRuby 1.1b 62.5 63.4 1.3
JRuby trunk 43.5 44.5 1.0



这个JRuby trunk是 2007 年 12 月 17 日源文件的 checkout,而这个JRuby 1.1b是几个星期前发布的。在 Tim 文章的评论中,JRuby 的 Charles Nutter 解释了这两者相当多的区别:
从 JRuby 1.1b1 到 trunk 的改进几乎全部归功于 Marcin Mielczynski 令人惊讶的举动——他将 Oniguruma 移植到了 JVM。我们第一次有了真正的基于 byte 数组的 regex 引擎,这意味着 JRuby regex 性能得到了极大的提升。

查看英文原文:JRuby: 1.0.3 addresses compatibility issues, 1.1 performance update

JavaRubyRuby on Rails语言 & 开发