AICon 深圳站聚焦 Agent 技术、应用与生态,大咖分享实战干货 了解详情
写点什么

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

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

关注

评论

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

兆骑科创创新创业服务平台,投融资对接,线上直播路演

兆骑科创凤阁

RadonDB MySQL Kubernetes 2.2.1 发布!

RadonDB

MySQL 数据库 Kubernetes RadonDB

2021年中国智能驾驶行业洞察

易观分析

自动化 智能驾驶

牛客网论坛最具争议的Java面试成神笔记,GitHub已下载量已过百万

Geek_Yin

编程 程序员 牛客网 #java Java面试八股文

开源一夏 |log4j2漏洞复现及修复

六月的雨在InfoQ

开源 Log4j 2 Log4j2 漏洞 8月月更

阿里云 ACK One 多集群管理全面升级:多集群服务、多集群监控、两地三中心应用容灾

阿里巴巴云原生

阿里云 容器 分布式 云原生 集群

【数据结构实践】简单实现Python自定义队列

迷彩

数据结构 算法 队列 8月月更

向量数据库公司 Zilliz 完成 6000 万美元 B+ 轮融资

Zilliz

融资 数据库·

泛谈传统运营商借鉴电商模式

鲸品堂

电商 运营商 通信运营商 电信运营商

华为云CDN同舟计划

科技云未来

狂刷《Java权威面试指南(阿里版)》,冲击“金九银十”有望了

Geek_Yin

阿里 Java 面试 架构师 #java 程序员面试、

我用开天平台做了一个字符串检查API,hin 简单~~

华为云开发者联盟

云计算 API 华为云

测试 SAP 电商云 Spartacus UI 3.4.x 和 4.3.x 的 guest checkout 功能

汪子熙

typescript 前端 angular Spartacus 8月月更

一个月闭关直接面进阿里P7,这份Java面试指导手册是真的牛逼

收到请回复

Java 程序员 语言 & 开发

如何通过OpenHarmony的音频模块实现录音变速功能?

OpenHarmony开发者

OpenHarmony

2022秋招,Java岗最全面试攻略,吃透25个技术栈Offer拿到手软

Geek_Yin

程序人生 java面试 程序猿 #java Java面试八股文

太牛了!这份什么神仙级Spring Cloud Alibaba全套笔记,从入门到实战,全方位讲解微服务技术栈!

Geek_Yin

程序员 阿里 架构师 spring cloud alibaba #java

大数据培训机构学习会不会有点难?

小谷哥

“智慧”有为!AntDB数据库助力某省高速率先完成自主可控建设

亚信AntDB数据库

AntDB 国产数据库 aisware antdb

数字无限 云领未来 | 华为云&赛意信息线上直播约定您

极客天地

什么样的人适合参加Web前端培训

小谷哥

发展场景金融需要重视生态能力建设,加深对场景的渗透程度

易观分析

金融 客户 场景生态建设

TDengine 3.0 三大创新详解

TDengine

数据库 tdengine 时序数据库

一箭双雕!刷完阿里P8架构师spring学习笔记+源码剖析,涨薪8K

Geek_Yin

编程 程序员 springboot #java Spring Java

怎么选择合适自己的web编程培训机构?

小谷哥

MobTech MobLink功能说明及应用创建

MobTech袤博科技

开发 短链接 跳转访问网页

低学历能通过Java培训学习吗?

小谷哥

学习WEB前端去哪里比较好

小谷哥

行业分析| 调度行业未来趋势

anyRTC开发者

音视频 调度 快对讲 语音对讲 视频对讲

数字藏品APP开发定制

开源直播系统源码

软件开发 数字藏品 数字藏品开发 数字藏品系统

死磕它七年“腾讯限量版”Java架构笔记,要个40k不过分吧?

Geek_Yin

编程 程序员 涨薪 架构师 #java

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