AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

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:411386
用户头像

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

关注

评论

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

JAVA concurrency -- AQS 源码详解

骑牛上青山

Java 源码

哪些前端学习方法对小白比较有用?

小谷哥

自助客户服务页面|从To B产品流量获取到客户服务体验上升

Baklib

OpenI启智社区2022年度优秀项目及开发者申报通知

OpenI启智社区

开源社区 优秀项目 优秀开发者 OpenI启智社区

web前端培训上海学习好吗

小谷哥

惊艳华为PocketS发布会! 杰美特旗下高端品牌决色推出首款“月光宝壳”

科技热闻

Milvus 编译环境演进

Zilliz

c++ Python Milvus cmake 编译环境

5 步!用阿里云 Serverless 搭建高质量的图片压缩工具

阿里巴巴云原生

阿里云 Serverless 云原生

Docker安装minio(CentOS7)

蜗牛也是牛

鼎医信息加入PolarDB开源数据库社区

阿里云数据库开源

阿里云 polarDB PolarDB-X 阿里云数据库 PolarDB for PostgreSQL

专为实时而生 — GreptimeDB 现已在 GitHub 正式开源

Greptime 格睿科技

开源 分布式 云原生 时序数据库 存算分离

java学习后该怎么培养自主学习能力

小谷哥

web前端培训学习需要注意什么

小谷哥

STL迭代器失效问题

Maybe_fl

带你全面了解Gateway

好程序员IT教育

Spring Cloud Gateway SpringCloud Gateway

微博评论高可用高性能计算架构设计

Jack

架构实战训练营9期

「推荐收藏」提高组件库Level必做好这六件事

GFE

前端 组件库

pytorch实现空洞卷积+残差网络实验(torch实现

Studying_swz

深度学习 11月月更

搭建企业镜像仓库~Harbor

蜗牛也是牛

阿里内部高并发核心编程笔记:多线程、锁、JMM、JUC、设计模式

程序知音

高并发 java架构 后端技术 高并发架构

数据挖掘、机器学习、深度学习的区别

九章云极DataCanvas

数据挖掘 机器学习 深度学习

直播预告|全闪文件存储在 AI 大数据领域的前沿应用

焱融科技

云计算 分布式系统 高性能 文件存储 全闪存储

Go语言—基本输入输出包的使用

良猿

Go golang 后端 11月月更

系统运维利器,百万服务器运维实战总结!一文了解最新版SysAK|龙蜥技术

OpenAnolis小助手

Linux 开源 运维 龙蜥社区 SysAK

深入理解Node.js的进程与子进程

coder2028

node.js

量化交易炒币机器人开发合约策略

薇電13242772558

量化策略

面向智慧城市的GIS框架

tjn

GIS 可视化 11月月更

大数据培训学习后,就业不好就业

小谷哥

5 分钟教你搭建「视频动作分类」系统

Zilliz

人工智能 计算机视觉 Towhee 视频动作分类

豆瓣评分9.8!阿里内部的分布式架构手册让多少人突破了瓶颈?

程序知音

Java 分布式 java架构 java架构师 后端技术

极客时间运维进阶训练营第四周作业

好吃不贵

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