2009 年 11 月 2 日,在经历了 3 个 RC 版本之后,JRuby 社区终于迎来了 JRuby 1.4 的正式版本。(点击此处查看官方发布说明。)
说起 JRuby 1.4,最令人关注的特性应该就是对 Ruby 1.8.7 的兼容了。考虑到 1.8.7 已经成为 Rails 的推荐 Ruby 版本,而且很多操作系统也将 1.8.7 作为默认的 Ruby 版本,JRuby 团队在 1.4 版中开始兼容 1.8.7,需要注意的是其 patchlevel 是 174,因此并不保证兼容其后的特性也能得到支持。对于 Ruby 1.9 的支持也是大家关注的焦点,JRuby 1.4 对–1.9 做了一些改进,例如升级 stdlib 到 1.9.2preview2,能够运行 RubyGems(RubyGems 版本升级到了 1.3.5)了等等。
>jruby -v jruby 1.4.0 (ruby 1.8.7 patchlevel 174) (2009-11-02 69fbfa3) (Java HotSpot(TM) Client VM 1.6.0_10) [x86-java]
>jruby --1.9 -v jruby 1.4.0 (ruby 1.9.2dev trunk 24787) (2009-11-02 69fbfa3) (Java HotSpot(TM) Client VM 1.6.0_10) [x86-java]
对于 Windows 用户而言,新版本解决了很多 Windows Native Launcher 相关的问题,同时还特意提供了适用于 Windows 版本的安装包(分为带 JRE 不带 JRE 的两个版本),安装十分方便,比较人性化。
Ola Bini 重新实现了 JRuby 的 YAML 解析器—— Yecht ,它更接近于 MRI 中使用的 Syck,这一改变将能解决很多 YAML 方面的兼容性问题,JRuby 团队希望 Yecht 能成为 JRuby 最终的 YAML 解析器。
在 Java 集成支持方面,除了性能提升,还对 Java 方法选择和 Java/Ruby 类型间的强制转换 API 做了修改,例如,1.4 中提供了 java_method、java_send 和 java_alias 方法。关于更多细节和整个 Java 集成方面的计划,Charles Nutter 在邮件列表中做了详细说明。
此外,JRuby 1.4 还提供了一套新的嵌入框架—— RedBridge ,自 1.4RC1 以来该框架也得到了不少改进。有了 RedBridge,使用者可以直接使用 JSR223,而无须另外下载 JAR 包;对于 BSF,RedBridge 的实现也优于之前的版本。RedBridge 的使用非常简单,在其 Wiki 上提供了一个范例:
package vanilla; import org.jruby.embed.ScriptingContainer; public class HelloWorld { private HelloWorld() { ScriptingContainer container = new ScriptingContainer(); container.runScriptlet("puts \"Hello World!\""); } public static void main(String[] args) { new HelloWorld(); } }
最后,JRuby 1.4 修复了自 1.3.1 以来的 301 个 Bug。每次大版本的发布,JRuby 团队都会给我们带来不少惊喜,如果希望了解更多 1.4 后续版本的计划内容,可以访问 Engine Yard 的博客。
作者介绍:丁雪丰,网名DigitalSonic,满江红开放技术研究组织核心成员, Spring Framework 2.0 & 2.5 文档翻译项目负责人,也参与了 Hibernate、Seam 等多份文档的翻译及校对工作。平时积极投身开源项目,是著名SFTP/SCP 软件WinSCP 的简体中文汉化者。参与翻译及编著的书籍有《Spring 攻略》、《JRuby 实战》等。InfoQ 中文站内容团队,尤其是架构、SOA 和Ruby 社区需要您的参与,有意者请邮件至 editors【AT】cn.infoq.com 。
评论