QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

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

关注

评论

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

有图,有代码,好理解,学习内存管理,mmap机制

奔着腾讯去

Linux 内存管理 Mmap 内存映射

河南平安,附最全自救锦囊

石云升

7月日更 郑州加油

什么是共识?(生活篇)

趣链科技

想聊天?自己搭建个聊天机器人吧!

百度大脑

人工智能 聊天 飞桨

gitlab ee 14.1稳定版安装教程

阿呆

gitlab

为什么BAT的程序员能月薪 20k ,而你一个月只能拿 6K 的低保?差别就在这!

白亦杨

Java 编程 程序员

一文读懂区块链技术如何改变非洲贸易(上)

CECBC

大型企业采购云管理平台的诉求分析-行云管家

行云管家

云计算 云安全 云管平台 云资源

澳鹏看点 | 厉害了,3D点云语义分割

澳鹏Appen

人工智能 自动驾驶 语义分割 数据标注 3D点云

手写归并排序算法

实力程序员

程序员 C语言 排序算法 实力 编程实战

【堡垒机】堡垒机到底有用不?国内哪家堡垒机好用?

行云管家

云计算 数据安全 堡垒机

我们都是那条流浪的小黄狗|靠谱点评

无量靠谱

《小马哥java项目实战》训练营培训小结

夏日

光子是深度学习的未来!光子有望替代电子计算机加速神经网络计算

百度开发者中心

深度学习 最佳实践 方法论

Pravega Flink connector 的过去、现在和未来

阿里云大数据AI技术

现代分布式架构设计原则-互操作性

余先生

RESTful 接口 REST API

注意:线程的执行顺序与你想象的可能不一样!

冰河

Java 程序员 并发编程 多线程 异步编程

盘点Java线程池配置的常见误区,你中了几个?

北游学Java

Java 多线程

优秀!百度技术官甩出SpringBoot全栈小册,GitHub星标92.5k

Java 编程 程序员

结构化流-Structured Streaming(八-上)

Databri_AI

spark 查询引擎 结构化思维

腾讯、网易纷纷出手,火到出圈的元宇宙到底是个啥?

行者AI

游戏

免费分享Redis从入门到精通的优秀图书

Java入门到架构

Java 书籍

基于机器学习的语音编解码器声网Agora Silver:支持超低码率下的高音质语音互动

声网

RTE 技术详解 音频体验 AI Codec

好未来 x StarRocks:全新实时数仓实践,深入释放实时数据价值

StarRocks

数据库 flink 实时数仓 好未来 StarRocks

声网Agora 教育 aPaaS 灵动课堂升级:UI与业务逻辑分离,界面、功能自定义更灵活

声网

在线教育 网络

下一代5G计算终端,正在你我的案头苏醒

脑极体

Java的内存区域是如何划分的?

卢卡多多

内存 Java内存模型 7月日更

gopher成长之路(一):致三年前的我

非晓为骁

个人成长 架构师 全栈工程师 Go 语言 努力

没有你,对我很重要|靠谱点评

无量靠谱

质量基础建设一站式服务平台搭建

为什么开发人员都不愿写 API 文档?

狐哥说技术

Postman Apifox 接口文档 接口管理

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