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

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

关注

评论

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

MSVC编译环境介绍

Loken

音视频 5月月更

一个程序员眼中的元宇宙

总师

程序员 元宇宙

密码学系列之:PEM和PKCS7,PKCS8,PKCS12

程序那些事

密码学 程序那些事 5月月更

Jenkins Agent 的低成本高弹性实践

玄月九

Kubernetes jenkins 弹性 降本 Kaniko

[Day47]-[递归]-基本计算器

方勇(gopher)

递归 LeetCode

AdapterPattern-适配器模式

梁歪歪 ♚

设计模式

微信朋友圈高性能复杂度分析

Justin1024

一文读懂AQUANEE的开创性特点与未来

小哈区块

Flutter 利用 StreamProvider 一起玩 WebSocket

岛上码农

flutter ios 前端 安卓开发 5月月更

上篇:技术架构的设计方法

阿里巴巴中间件

阿里云 中间件 技术分享 技术思考

RocketMQ 5.0: 存储计算分离新思路

阿里巴巴中间件

阿里云 开源 云原生 消息队列 Apache RocketMQ

从原理到操作,让你在 Apache APISIX 中代理 Dubbo3 服务更便捷

阿里巴巴中间件

阿里云 开源 云原生 dubbo

跨平台应用开发进阶(十八) :全局异常日志处理方案探究

No Silver Bullet

5月月更 异常日志 处理方案探究

如何提高技术部的信任值

石云升

项目管理 职场经验 5月月更 跨部门沟通

SDN系统方法 | 1. 概述

俞凡

架构 网络 sdn SDN系统方法

「AuthTalk」今晚 7 点直播|从制造到“智造”,探索制造企业破局之道

Authing

云原生 身份云 制造业 Idaas

BuilderPattern-建造者模式

梁歪歪 ♚

设计模式

ProxyPattern-代理模式

梁歪歪 ♚

设计模式

【Go实现】实践GoF的23种设计模式:抽象工厂模式

元闰子

Go 设计模式 抽象工厂模式

Feign 共享登录信息进行请求

Java Feign

微信朋友圈高性能架构设计

地下地上

架构实战营

[go]mongo工具类

林逸民

Go mongo goalng-underscore

Docker下RabbitMQ四部曲之四:高可用实战

程序员欣宸

Java Docker Docker-compose RabbitMQ 5月月更

leetcode 540. Single Element in a Sorted Array 有序数组中的单一元素

okokabcd

LeetCode 查找

一文读懂AQUANEE的开创性特点与未来

西柚子

# 继续前行github star突破8k即时通讯IM开源项目OpenIM版本发布计划

Geek_1ef48b

SAP UI5 的自动化测试套件页面的开发步骤介绍

Jerry Wang

JavaScript SAP SAP UI5 5月月更 SAP前端开发

架构实战营模块二作业:微信朋友圈高性能复杂度

融冰

DecoratorPattern-装饰者模式

梁歪歪 ♚

设计模式

在操作系统这条赛道上,为什么Laxcus和Windows、MacOS不一样

LAXCUS分布式操作系统

大数据 容器 虚拟化 并行计算 分布式操作系统

下篇:技术 Leader 的思考方式

阿里巴巴中间件

阿里云 中间件 技术分享

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