写点什么

采访 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:291322
用户头像

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

关注

评论

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

使用PAI × LLaMA Factory 微调 Llama3 模型

阿里云大数据AI技术

人工智能 模型训练 LLM PAI

基于51单片机设计的计算器

DS小龙哥

8月月更

LLM活动 | 与UP主“老陈打码”一起使用PAI×LLaMA Factory搭建AI诸葛亮

阿里云大数据AI技术

人工智能 阿里云 AIGC LLM PAI

京东集团项目管理人才发展通道代表受邀参加第三届中国PMO&PM大会

京东零售技术

企业号2024年8月PK榜

好的测试用例应该具备哪些特质

老张

软件测试 质量保障 测试用例 研发管理工具

云服务应用就在828,精准优化企业管理,华为云Flexus X实例有你好看!

YG科技

云计算优化震撼828,华为云Flexus X实例邀请您分享数字化转型红利

YG科技

合约量化系统开发详细流程丨量化合约系统开发源码实例说明分析

V\TG【ch3nguang】

量化合约系统开发

强大 SSH 工具Termius mac 版

Mac相关知识分享

LED显示屏批发需要注意的关键事项

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家 市场 采购

电子阅读软件中文版MarginNote 3 for Mac

Mac相关知识分享

强大全景图拼接制作工具PTGui Pro for Mac

Mac相关知识分享

Mac软件 图像制作

数据分析统计软件Minitab Express for Mac激活版

Mac相关知识分享

数据分析 Mac软件

讯兔科技携手豆包大模型,勇闯AI投研“深水区”

新消费日报

大数据时代来袭,那么工程领域的数据科学如何成为行业的新超级英雄呢

Altair RapidMiner

人工智能 设计 仿真 altair

亚马逊Amazon商品详情API接口(主图|SKU|标题|价格|库存)

tbapi

亚马逊 亚马逊商品详情接口 亚马逊API接口 亚马孙商品数据采集

零信任SDP更新 卓越性能全新体验

芯盾时代

iam 统一身份认证 零信任 sdp

没有它,你的Scrum无法实现!

敏捷开发

Scrum 敏捷开发

得物Flink内核探索实践

得物技术

flink 技术分享 企业号2024年8月PK榜

Java Agent 开发初探

FunTester

京东秒送LBS场景下的容灾数据备份方案

京东零售技术

架构 数据 LBS 企业号2024年8月PK榜

陶建辉在第 41 届中国数据库学术会议上深度解析时序数据库

TDengine

谷歌访问助手插件 for Mac中文版

Mac相关知识分享

谷歌插件

科大讯飞学习机P30和C10 Pro 区别对比评测

妙龙

科大讯飞 学习机

高性能无锁队列 Disruptor 核心原理分析及其在i主题业务中的应用

vivo互联网技术

Disruptor 无锁 伪共享 内存队列 CPU Cache

大促高并发系统性能优化实战--京东联盟广告推荐系统

京东零售技术

算法 数据 企业号2024年8月PK榜

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