InfoQ

新闻

采访XRuby开发者:“有趣的”Ruby实现

作者 Jeff Xiong 发布于 2007年4月26日 下午11时29分

社区
Ruby
主题
开放源代码,
社区
标签
性能评估,
XRuby,
Ruby on Rails
近日InfoQ中文站对XRuby项目的开发者郑晔进行了一次采访。郑晔介绍了XRuby项目的基本情况和发展方向。

目前在Java平台上实现Ruby语言的项目主要有两个:JRuby和XRuby。二者的差别主要在实现技术上。JRuby目前为止是一个解释器,而XRuby是一个编译器。所以,二者的差别就是解释器和编译器的差别。郑晔说:
解释器和编译器,在前端部分都是相同的编译器前端技术,包括词法分析、语法分析、建立语法树等等,主要的差别在于执行的方式不同。解释器是直接执行一个其内部的可执行结构,比如Ruby现在的实现就是中间生成一个树,这棵树就是Ruby内部的可执行结构,然后执行这棵树,而编译器是生成目标平台的可执行代码,比如我们常见的编译器生成对应平台的可执行文件。由此可见,二者的执行方式并不是在同一个级别上执行的,一个是平台之上利用软件构建的执行引擎,一个是利用平台(硬件或虚拟机)执行,所以,性能上会有一些差别。

简单说来,XRuby生成的代码直接运行在JVM上,而JRuby在JVM上构建了一个执行引擎来执行程序,而且是Ruby现在实现得不那么好的那个执行引擎。所以,XRuby目前在性能上可以领先JRuby许多。
测试数据表明,XRuby的性能超过了Ruby1.8.5版本。在最近进行的一次性能评测中,XRuby由于尚不支持YAML而没有参加,JRuby与Ruby1.8.5之间还存在较大的性能差距。
Ruby解释器
使用笔记本电池 耗时
ruby 1.8.5 (2006-12-25 patchlevel 12) [i686-linux] 31.0 +/ 3.1
ruby 1.9.0 (2007-04-18 patchlevel 0) [i686-linux] 31.1 +/ 3.27
ruby 1.8.5 (2007-04-23 rev 3539) [i386-jruby0.9.9] 67.5 +/ 7.15
使用外接电源
ruby 1.8.5 (2006-12-25 patchlevel 12) [i686-linux] 12.0 +/ 1.2
ruby 1.9.0 (2007-04-18 patchlevel 0) [i686-linux] 12.4 +/ 1.8
ruby 1.8.5 (2007-04-23 rev 3539) [i386-jruby0.9.9] 33.3 +/ 6.83
较早前InfoQ的另一篇报道详细介绍了XRuby与JRuby的技术差异。

但由于发展时间较短,XRuby现在还达不到实用的要求。虽然已经可以运行一些程序了,但距离完整支持Ruby,还有很长的一段路要走。XRuby 0.2.0的目标是支持单元测试框架,XRuby团队计划在年底可以支持Rails。在语言特性方面,XRuby也并未完全实现Ruby所有的语言特性,因为Ruby某些语言的特性是与builtin库结合在一起的(比如method missing等),而XRuby现在目前最大的问题就是builtin库的实现。郑晔这样介绍:
因为JVM平台本身并不支持动态语言的特性,所以,在XRuby(包括JRuby)需要用Java代码构建出一个动态语言支撑的结构,也就是我们所说的Runtime。现在这个Runtime是我实现的,基本上是按照C Ruby的结构进行实现,因为我之前翻译了《Ruby Hacking Guide》,对C Ruby的动态语言Runtime有一定的了解。其实,支持这些特性本身难度并不大,但是需要大量的时间和精力来做这件事情,这也是XRuby最为欠缺的资源。
在谈及XRuby项目的发展时,郑晔说道:
XRuby在某些方面进行的一些工作,会比较有趣,比如正在开发的Antlr V3前端和调试器等等。这些方面对于在JVM上实现动态语言是一个比较有益的探索。XRuby本身起步时,考虑得更多的是乐趣,参与者都是因为乐趣加入其中的。所以,我想说,XRuby的一个很大的优点就是它还年轻,其中有很多可以做的有趣事情。

短时间之内,我们不敢奢望有人可以把XRuby用于实际的项目。现阶段,我们只是希望赢得更多的关注,吸引更多的人加入到XRuby的开发中来,这样,可以尽快实现XRuby的目标。
JRuby的开发者Ola Bini之后,郑晔也加入了ThoughtWorks公司。XRuby这个“有趣的”Ruby实现未来会怎样,我们拭目以待。
祝贺XRuby和郑晔 发表人 徐 亮 发表于 2007年4月27日 上午1时19分
Re: 祝贺XRuby和郑晔 发表人 Kevin Wang 发表于 2007年4月30日 下午1时2分
  1. 返回顶部

    祝贺XRuby和郑晔

    2007年4月27日 上午1时19分 发表人 徐 亮

    希望XRuby能够尽快用于实际的项目,这样才能使他更有后劲发展起来,也希望郑晔加入ThoughtWorks后这个项目能得到ThoughtWorks官方的支持,对XRuby的发展会更有利!

  2. 返回顶部

    Re: 祝贺XRuby和郑晔

    2007年4月30日 下午1时2分 发表人 Kevin Wang

    祝贺郑晔! 看到JRuby的开发者Ola Bini声称,加入TW后会继续为JRuby工作。 郑晔也会继续对XRuby付出努力。 他们也许都是因为找到了共同的爱好,走到了一起。

深度内容

和Google互补的搜索引擎Wolfram|Alpha

Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。

SOA契约成熟度模型

本文说明了所推荐的契约版本管理设计策略是如何与SOA成熟度模型发生联系的。文章目的是为实现版本管理和可组合性提供一个路线图。

数据服务简介

Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。

分块云计算

在本文中,Jimmy Nilsson描述了一种他在过去数年间观察到的一种正在缓慢成长的架构风格,他把这种风格称为“分块云计算”。

豆瓣网技术架构变迁

罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。

融合思想:深入探索S#arp架构

Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。

王雷谈开源以及新兴市场计划

中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。

使用HTML5构建下一代的Web Form

HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。