JRuby 综述:Google App Engine 支持、BiteScript 及新的编译器

  • Werner Schuster
  • 张龙

2009 年 4 月 14 日

话题:JavaRubyRuby on Rails语言 & 开发架构

几周前 JRuby 1.2 发布了(InfoQ 对 JRuby 1.2RC1 的报道总览了其变化)。借助于该发布,JRuby 团队现在又开始了新的项目。

现在 Ola Bini 正忙于 JRuby 和 Ioke 的测试工作,它们将用在 Google 新发布的 Google App Engine 的 Java 支持上(请查看InfoQ 对Java on GAE 的报道)。Ola 还谈到了GAE 上的 JRuby 和 Rails 的需求以及建立 JRuby on Rails 应用的方式:

你需要使用最新版的 JRuby。对于 JRuby 来说,自从 1.2 版发布后大多数变化都加到了主干上,因此请先检出最新的代码然后再进行构建。最新版的 Rails 也没什么问题。

因为 GAE 并不支持 RDBMS,所以无须使用 JDBC。Ola 给出了 Bumble,这是对 Google DataStore 的一个包装器

JRuby 仅仅是 GAE 所支持的众多 JVM 语言中的一个,其他还有Clojure及 Rhino(Google维护了支持语言的一个列表)。Ola 还列出了 GAE 的一些限制,这些限制会导致 JVM 语言出现问题,同时关于反射、线程、字节码验证等方面的一些示例也进行了更新。

与此同时,Tom Enebo 创建了JRuby-Parser,它从 JRuby 中抽取出了 JRuby 解析器,凭借这一点,IDE 或其他工具可以使用解析器而无需依赖整个 JRuby。

Charles Nutter 开始着手编写全新的 Ruby 编译器,其目标是将 Ruby 类型编译成 Java 类

* 使用我的字节码 DSL “BiteScript”,就像 Duby 一样

* 使用类的“运行时”定义来生成对应的 Java 版本

第二点很重要。相对于使用离线编译器来检测文件并生成代码,该编译器实际上使用了运行时的类来创建对应的 Java 版本。这意味着我们可以使用通常的元编程工具,这样无论何时,只要编译器得到类,它就能查看到其中的所有方法。

Charles 还发布了一个有用的工具BiteScript(用于创建字节码的内部 DSL),该工具使用 JRuby 生成字节码。JVM 字节码会映射到 Ruby 方法上,由后者生成字节码;用于创建类和方法的那些 Ruby 方法构成了 API 并采取紧凑的方式来生成 class 文件。

请查看Charles 关于 BiteScript 发布的声明来了解更多信息。

查看英文原文:JRuby Roundup: Google App Engine Support, BiteScript, New Compiler

JavaRubyRuby on Rails语言 & 开发架构