产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

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

  • 2007-04-26
  • 本文字数:1505 字

    阅读完需:约 5 分钟

近日 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 实现未来会怎样,我们拭目以待。

2007-04-26 23:291234
用户头像

发布了 21 篇内容, 共 31135 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

架构训练营第二周作业

Geek_ce484f

极客大学架构师训练营

第三周学习心得

alpha

极客大学架构师训练营

设计模式--正确学习姿势

张荣召

架构训练营第二周作业

Geek_ce484f

极客大学架构师训练营

极客时间架构师培训 1 期 - 第 3 周作业

Kaven

架构师训练营 1 期第 3 周:代码重构 - 作业

piercebn

极客大学架构师训练营

java安全编码指南之:死锁dead lock

程序那些事

java安全编码 java安全 java安全编码指南

架构师训练营 - 第三周总结

一个节点

极客大学架构师训练营

架构师训练营第三周作业

吴传禹

极客大学架构师训练营

不是我不小心

escray

Java ruby ruby-on-rails 面试 面经

架构师训练营第三周-homework

张荣召

设计模式-单例模式

张荣召

ARTS Week12

丽子

区块链技术在司法行业的服务应用

CECBC

区块链 司法

第三周 学习总结

Yangjing

极客大学架构师训练营

一个草根的日常杂碎(9月30日)

刘新吾

随笔杂谈 生活记录 社会百态

区块链如何深刻变革现代金融?

CECBC

区块链 金融

第三周作业

alpha

极客大学架构师训练营

架构师训练营第三周学习总结

吴传禹

极客大学架构师训练营

UML学习笔记

Edison

UML

设计模式--模板模式/策略模式

张荣召

Template Pattern Strategy Pattern

极客时间架构师培训 1 期 - 第 3周总结

Kaven

微服务部署测试简单实践

MySQL从删库到跑路

zookeeper 微服务 dubbo Sprint Boot session

架构师训练营 - 第三周作业

一个节点

极客大学架构师训练营

【获奖名单】赢千元数码大奖!竟然如此简单!

InfoQ写作社区官方

美食 摄影 热门活动

设计模式--组合模式/装饰模式

张荣召

Composite Pattern Decorator Pattern

架构师训练营第三周--学习总结

张荣召

区块链有助金融监管效能提升

CECBC

区块链 金融

AQS 都看完了,Condition 原理可不能少!

程序员小航

Java 源码 源码阅读 JUC Condition

第三课代码重构课后作业

Geek_michael

极客大学架构师训练营

第三周 作业1

Yangjing

极客大学架构师训练营

采访XRuby开发者:“有趣的”Ruby实现_Ruby_Jeff Xiong_InfoQ精选文章