写点什么

JRuby 1.7 Preview 1 发布:默认使用 Ruby 1.9,通过 Invokedynamic 改进了性能

  • 2012-07-08
  • 本文字数:1332 字

    阅读完需:约 4 分钟

自从 JRuby 1.6 系列的首个版本发布以来已经过去了一年多的时间,现在 JRuby 1.7.0 的首个预览版也已经发布了。

JRuby 1.6 是首个兼容于 Ruby 1.9.2 的版本,借助于 JRuby 1.7,Ruby 1.9 甚至已经成为了默认的运行时模式。在此次发布声明中,其他值得关注的变化有:

  • 修复了众多 1.9.x 的兼容性问题
  • 支持 Java 7 的 invokedynamic
  • 性能与并发的改进
  • 放弃了对 Java 5 的支持(需要使用 Java 6+)
  • 更新到 Rubygems 1.8.24
  • 更新到 Rake 0.9.2.2

对 invokedynamic 的支持是自动开启的,但为了能够充分利用这一点,你需要在最新发布的 Java 7 上运行。InfoQ 有幸采访到了Charles Nutter以深入了解 JRuby 是如何从对 invokedynamic 的支持上获益的:

JRuby 对 invokedynamic 的使用使得我们更加接近于这一目标:让 Ruby 达到 Java 一样的运行速度。由于现在 JVM 能够清楚地理解我们是如何进行动态调用的,因此它可以对这些动态调用进行优化,就像对常规的静态类型调用所做的那样。突然间,那些使得 Java 运行速度加快的小技巧都能够应用到普通的老式 Ruby 代码上了。这真是太奇妙了。 无论是 JRuby 还是 JVM 都有很多尚未挖掘出的潜力。目前 JRuby 对 invokedynamic 的使用尚未达到 100% 的优化程度,在某些情况下存在一些不必要的浪费会导致其运行速度变慢。既然我们已经可以使用 invokedynamic,那么我们就可以将精力放在改进对其的使用上。JVM(特别是 Hotspot)还能为我们带来更大的帮助。最初的 Java 7 发布并未很好地优化 invokedynamic,但这是功能性的。Update 2 为我们带来了可靠的 JVM JIT 支持以及对服务端编译的优化。Update 6 应该会对 JIT 逻辑进行重写,使得完整的 JVM 优化集合能够更加轻松地应用到 invokedynamic 调用上。

我们将会继续与 Hotspot 开发人员合作以确保 invokedynamic 能够持续得到改进。

InfoQ:目前的 JRuby 是最快的 Ruby 实现么?

我觉得最终我们可以这么说。总会存在一些情况是我们没有处理的,或是需要未来的 JVM 改进支持的,但一般来说,JRuby 总是要比其他的 Ruby 实现快一些。随着在 JRuby 与 OpenJDK 上 invokedynamic 工作的不断进行,我们会走得更远。

InfoQ:Fibers 怎么样了,我听坊间传闻 Java 8 将会对协程提供一些支持。你了解么?

很遗憾,协程并不会添加到 Java 8 中,但可能会添加到 Java 9 中。为了降低 JRuby Fiber 实现的代价,我们现在正与 Google 代码之夏的一个学生一同探索基于 Kilim 的实现。但我们也不知道付出的努力是否能够成功,但他已经取得了一些进展。

InfoQ:Tom Enebo 与你从 Engine Yard 来到了 Red Hat ,可你还是在继续从事 JRuby 的工作。你还打算从事 Red Hat 自己的 JVM 语言 Ceylon 的开发么?

一切皆有可能!我对自己的这个转变感到兴奋异常,因为我的工作除了继续开发 JRuby 外,还会探索其他的 JVM 语言以及 JVM 对其的支持。我完全相信对于语言来说,JVM 是最棒的运行时,无论这些语言是静态还是动态的;现在,我就会证明给大家看。

InfoQ:感谢你能接受我们的采访!

感兴趣的读者可以从 JRuby 网站上下载 preview1 版,如果使用的是 RVM ,那么你可以通过 rvm install jruby-1.7.0.preview1 安装。

查看英文原文: JRuby 1.7 Preview 1 Released: Defaults to 1.9 and Improves Performance With Invokedynamic

2012-07-08 06:411388
用户头像

发布了 88 篇内容, 共 263.1 次阅读, 收获喜欢 8 次。

关注

评论

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

在 DataOps 体系建设中,主动元数据是何角色?

Aloudata

数据治理 Data 元数据 DataOps

Ubuntu安装Protobuf,指定版本

百度搜索:蓝易云

Quartz Plus - 基于Spring的Quartz任务调度框架扩展

redcoder54

quartz spring-boot Java development springboot整合quartz 作业调度

一线实战:运维人少,我们是如何从 0 到 1 实践 DevOps 和云原生?

阿里云云效

阿里云 云原生

文心智能体平台已入驻60万开发者,合作10万企业

Geek_2d6073

Ubuntu20.04同时安装ROS1和ROS2

百度搜索:蓝易云

mybatis使用多参数查询

百度搜索:蓝易云

数据存储“取经路”,HBlock轻松“渡”!

天翼云开发者社区

云计算 存储 天翼云

智IN共创 境界无限:2024英特尔中国学术峰会开幕

E科讯

文档管理工具大赏:10款神器总有一款适合你

爱吃小舅的鱼

文档管理

基于 INFINI Pizza 为 Hugo 静态站点添加搜索功能

极限实验室

搜索引擎 Pizza

Docker部署EMQX

百度搜索:蓝易云

数据迁移新技能,MongoDB轻松同步至ClickHouse

RestCloud

数据库 mongodb ETL 数据集成 Click house

KubeCon China 2024|技术与产业双向驱动,华为云持续开源创新,加速全球智能化升级

华为云原生团队

云计算 容器 云原生

终极预告!2024 龙蜥操作系统大会全议程高能来袭

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥操作系统大会

Ubuntu扩容lvm空间

百度搜索:蓝易云

第六届金蝶云苍穹开发者大赛院校赛道圆满落幕!61支队伍获颁国家级奖项

金蝶云·苍穹

开发者大赛 金蝶 金蝶云苍穹 中国软件杯

基于Spring Initializr的Spring Boot项目脚手架rc-initializr

redcoder54

spring spring-boot Java脚手架 Java development Web App开发

如何理解RPA的技术架构与原理

八爪鱼采集器︱RPA机器人

RPA 自动化 RPAxAI

深入解析RPA:概念、应用和前景一网打尽

八爪鱼采集器︱RPA机器人

RPA 自动化 RPAxAI

高效规划每一天!10款免费待办事项App大揭秘

爱吃小舅的鱼

免费工具 待办事项管理

2024 龙蜥操作系统大会参会指南抢先看

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥操作系统大会

NGINX 专业概念文章合集

NGINX开源社区

微服务 网络安全 物联网 经验分享

从 7000 余项目脱颖而出,飞轮科技《新一代实时分析数据仓库解决方案》荣获 HICOOL 2024 全球创业大赛二等奖

SelectDB

数据仓库 数据分析 Hicool 大数据 开源

天猫商品详情API:解锁商品收藏与加购信息的秘密

代码忍者

API 测试 API 策略

基于LangChain手工测试用例转Web自动化测试生成工具

霍格沃兹测试开发学社

LSP协议:技术创新背后的团队与愿景

股市老人

大语言模型数据增强与模型蒸馏解决方案

阿里云大数据AI技术

人工智能 自然语言处理 通义千问 大语言模型

一线实战:运维人少,我们是如何从 0 到 1 实践 DevOps 和云原生?

阿里巴巴云原生

阿里云 云原生

文档管理系统大比拼:找到适合你的选择

爱吃小舅的鱼

文档管理

曙光存储的“引力弹弓”,让AI向产业宇宙加速狂奔

脑极体

AI

JRuby 1.7 Preview 1发布:默认使用Ruby 1.9,通过Invokedynamic改进了性能_Ruby_Mirko Stocker_InfoQ精选文章