Ruby VM 综述:MacRuby 0.2、JRuby JMX 和 Ruby 1.9

  • Werner Schuster
  • 马家宽

2008 年 6 月 23 日

话题:JavaRuby语言 & 开发

MacRuby 是Objective-C 运行时上 Ruby 1.9 的一部分(你可以阅读InfoQ 对 MacRuby 开发者 Laurent Sansonetti 的访谈)。

现在一个新的版本,MacRuby 0.2 已经可用。下面摘引部分它的发布说明:

在 MacRuby 0.2 中,所有的字符串、数组和哈希表现在都是基本的 Cocoa 类型,分别表示为 NSString、NSArray 和 NSDictionary 对象。

整个的 String、Array 和 Hash 接口都使用强大的 CoreFoundation 框架在Cocoa 等效架构之上进行了重写。

[..]

开 发人员不再必须将 Ruby 原始类型和 Cocoa 之间做相互转化。例如,MacRuby 中创建的一个 String 可以再不加转换的情况下被直接传递给一个接 收 NSString 参数的 C 或 Objective-C API。类似的,Ruby String 类的任何方法可以同样从一个来自 Objective-C 的 NSString 中调用。
使用Objective-C数据结构和 String 还会带来一些性能方面的改进。现在已经可以在 MacOSforge 下载 MacRuby 0.2

JRuby 开发团队一直在为JMX而忙碌。Charles Nutter 最近向 JRuby 的主版本中添加一些 MBean,这使得监视 JRuby 的中间变量成为现实。现在,开发者可以察看 JRuby 的优化器和 JIT 的工作。这使得人发人员可以对某个运行在 JRuby 上的应用如何与优化器交互有一个感性认识。此外,随着"--manage"命令行开关的加入,现在可以使用像JConsole这样的工具来更好的察看信息。

由 JRuby 团队的 Tom Enebo 所负责的JMX gem则沿着另一个方向在努力,即使用 JMX 来导出信息。它使得开发者可以连接到 JMX 服务器并列出导出的 MBeans,最后使用属性或调用操作。另一个具有这一能力的库是jmx4r。Tom Enebo 的 jmx gem 还包含了在 JRuby定 义 MBean 的能力,所定义的 MBean 随后可以被到一个常规的 MBean 服务器(JMX 自 Java5 亿来一直被包含在 Java 中)。有了这 些,JRuby 应用现在可以将它们自己的监控信息通过 JMX 系统导出,这些信息当然随后可以被诸如 JConsole 这样的工具所浏览。

最后,Sasada Koichi 注意到 Ruby 1.9.0-2 会及时为 RubyKaigi 而发布,也就是在 2008 年 6 月 20 日左右。等到正式发布之时,我们会得到更多关于修改的细节,不过关于Ruby 主版本修改记录的概览显示,RubyGems 和 RDoc 2.0 都有更新。

另一个可能在这次或未来发布版中出现的变化,是将 test/unit 替换为了 Ryan Davis 的 miniunit。Ryan 最近发布了 miniunit 1.2,并呼吁用户认识到它和 test/unit 的不同。Ryan 解释了如何使用 miniunit:

% sudo gem install miniunit

% sudo use_miniunit yes

第二条命令将会将 symlinks 安装到你的 sitelib 目录中。这发生在 stdlib dir in $LOAD_PATH,所以这不会影响 test/unit。你也可以通过提供"no"作为参数,将 symlinks 转出。这样既容易又安全。



这一发布版中加入了许多美妙的东西,主要有: 

 * 有用的新断言,如 assert_includes

 * 每一句断言提供了相反的镜像语句,如 refute_empty ary

 * 加入了 mini/spec 和 mini/mock,它们可以和 mini/test 共同使用
对于 Ruby IDE 的开发者以及使用 custom test-runners 的人们来说,需要注意以下事项:
注意:如果在尝试将 Ruby1.9.0-2 集成到某个 GUI IDE 或像 komodo 这样的 test-runner 时遇到问题,请不要觉得这是 Ruby1.9.0-2 的 bug。Ruby1.9.0-2 并不保证与这些工具的兼容性,而只保证支持你编写的测试本身。

如果你不熟悉 test/unit,那么请和我们一起回顾一下历史,原先test/unit 是被分离出来做为一个 gem 包。

查看英文原文:Ruby VM Roundup: MacRuby 0.2, JRuby JMX, Ruby 1.9

JavaRuby语言 & 开发