写点什么

JRuby 近况:1.6 RC1、JSR 292 及 Java 7 中的 NIO2、1.9.2 支持

  • 2011-01-19
  • 本文字数:2248 字

    阅读完需:约 7 分钟

JRuby 1.6 RC1 发布了,带来了一大串改进: Charles Nutter 给出了 JRuby 1.6 的一个概述,Tom Enebo演示了改进后的Windows 支持,Yoko Harada罗列JRuby API 的变化

InfoQ 就 JRuby 的现状与未来采访了 JRuby 的Charles Nutter.

InfoQ:​JRuby 1.6 中有什么大的变化?​

JRuby 1.6 RC​有超过 2000 次提交,解决了超过 260 个问题。这让 JRuby 1.6 成为迄今为止最大的发布。​ JRuby 1.6 RC 中的主要特性有:Ruby 1.9 兼容性——JRuby 继续跟进 Ruby 的最新版本,即 1.9.2,JRuby 1.6​承诺改善大多数 1.9 应用程序的兼容性,包括支持新的编码 API。改善 Ruby 代码的性能——JRuby 1.6 吸纳了很多增量的性能改进内容,包括 Ruby 1.9 中更快的标准库,还为日后的开发打下基础。

改善 Windows 支持——JRuby 1.6 发布了新一轮的 Windows 支持内容,包括内置对 WIN32OLE 的支持,还有其他一些兼容性补丁​,它们让 Ruby 应用程序能无缝运行于 Windows 之上,就像在其他平台上一样。​

Ruby 1.9.2 的兼容性已经完成的差不多了。还有一些特性会安排在后续版本中:Encoding::Converter、非 ASCII 标识符以及“ripper”和“fiddle”库。​我们希望用户能在 1.9 模式中测试 JRuby,在 1.6.0 最终版前发现那些剩余的问题。

InfoQ:​纤程(Fiber)怎么样了?

JRuby 1.6 RC 中​已经有纤程了,我们在今后的版本中会继续改善性能。​

InfoQ:我想最近的 MLVM 已经有了协程(Coroutine)支持( Lukas Stadler 的工作?)​;你有没有尝试过呢?​

我们已经尝试过了 MLVM,计划在后续版本支持它。​​

InfoQ:​Ruby 社区以及其他一些来自 Node.js 社区的人最近一直在谈论关于异步和非阻塞 I/O 的好处。你是怎么看待阻塞式 I/O 和非阻塞式 I/O 的?​

和其他东西一样,混合多种方法通常才是最好的。​​异步 I/O 允许你​将 I/O 通道放在一个工作队列里,当 I/O 通道等待时释放线程和资源。 对单线程运行时(例如 MRI 或 V8)而言,这很重要,因为只有一个线程可以工作。对那些像 JRuby 这样的多线程实现,异步​I/O 同样很有用,​但它也可以有多个并发工作线程来处理阻塞和非阻塞调用。​混用阻塞和非阻塞 I/O 提供了最大的灵活性,那些不支持异步的系统调用或库​也不会对此有什么妨碍。​

InfoQ:JRuby 好像同时提供两种方式​,因为它和 MRI 不同,JRuby 既有并行线程,又有​NIO。有没有什么非阻塞 I/O(或带有 Java 7 中的 NIO 2 的异步 I/O)​可以发挥的场景?​

在实现一个必须处理数以千计连接的服务器或客户端时,唯一的选择就是弄一个较小的工作线程池来处理大量异步 I/O 通道​。大多数用户都不会碰到这样的场景,但在你需要异步通道时,它是无可替代的。JRuby 的 I/O 子系统​直接构建于 NIO 之上,​这就有可能在线程之间复用可选 I/O 通道​。任何一个对高并发、高负载 I/O 感兴趣的 Ruby 用户都应该来看看 JRuby。​

InfoQ:对于 Ruby 2.0 最近的工作​你有什么看法,例如 Ruby Refinements ?你有没有尝试一下,或者试着在 JRuby 中实现它们(我相信你实现了一个关于选择器命名空间的初期概念)?​

Refinements 是一个很有意思的特性,我们希望规范再“细化”​一点后就支持它。如果可以安全地为 monkey-patch 分配命名空间,这就可以解决 Ruby 世界里的一个常见问题。我们在 Refinements 的讨论中贡献了评论和原型实现,而且在规范制定阶段会继续做一些模拟的范例实现。​

InfoQ:看起来 Java 7 可能会在 2011 年的某个时间成为现实;​你有没有计划在未来的某个 JRuby 版本(1.7、2.0……)​中使用 Java 7 的特性?如果有的话,会先做哪个特性(除了 invokedynamic)?

我们计划为 Java 7 特性增加端到端的支持。​具体来说,我们会大量利用 invokedynamic 和方法处理,让 JVM 能更方便地优化 Ruby 代码。对于 NIO2 中的文件系统级特性,我们也感到很兴奋,例如其中对符号链接的支持​、文件系统事件以及其他一些以前只能通过我们的本地 POSIX 扩展才能拥有的底层功能。​在进行文件系统操作时,NIO2 可能意味着 JRuby​能更接近本地 Ruby 实现。它也让 JRuby 成为了在跨平台衔接文件系统事件方面最可靠的 Ruby 实现。我们同时计划继续支持 Java 5 和 Java 6​。

InfoQ:JRuby 1.6 中有哪些性能改进​,其中哪一个是你想放在下一个版本中的?​

最大的性能方面的工作涉及到减少 Ruby 调用的开销。​在 JRuby 1.5 和更早的版本​中,所有的 Ruby 调用都会​在调用时占据一个 thread-local 数据结构。那个数据用于生成回溯​(backtrace​)、处理“super”​调用、决定当前的“self”​和包含类​等等。JRuby 1.6 中,​在生成回溯时不再需要这个数据结构了,这意味着很多 Ruby​方法现在的人为调用开销接近于 0​。这让一些大派发量的性能测试结果提升了好几倍​。​ 我们还开始了对未来的优化目标的实验工作​。上面提到的“回溯”​方面的工作还让一个名为“dynopt”​的特性成为可能,它可以在编译时使用 JRuby 解释器的信息​将动态调用转为直接的静态 Java 调用。JRuby 1.6 并不支持此特性,但你可以通过 -Xcompile.dynopt=true 开启它。在小型性能测试上,能产生巨大的性能差异。另一个实验工作与我们在优化的编译器有关。我们在构建​一个新的编译器和​中间表述,这样在我们生成 JVM 字节码前更容易做一些优化​。这允许我们用 JVM 可能还没​发现到的方式来预优化 Ruby 代码​。在未来的 JRuby 版本中,我们会继续在这两个特性上下功夫的​。​

查看英文原文: The State of JRuby: 1.6 RC1, JSR 292 and NIO2 in Java 7, 1.9.2 Support​

2011-01-19 21:461918
用户头像

发布了 135 篇内容, 共 65.0 次阅读, 收获喜欢 43 次。

关注

评论

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

腾讯云发布全新非关系型数据库KeeWiDB 搭载全自研存储引擎

科技热闻

linux中vi,vim操作技巧

入门小站

Linux

在线TSV转YAML工具

入门小站

工具

在线文本列表补集计算工具

入门小站

工具

你中奖了吗?低代码开发师(高级)认证中奖名单揭晓啦!

一只大光圈

钉钉宜搭

先进数据中心背后,“东数西算”的三重意志

脑极体

宠物类自媒体运营心得:如何才能拍得更有创意

石头IT视角

JavaWeb 数据库操作

Emperor_LawD

sql javaWeb 5月月更

6 月亚马逊云科技培训与认证课程,精彩不容错过!

亚马逊云科技 (Amazon Web Services)

架构师 培训 认证

企评家,企业数据分析评价提供投资信息支撑

企评家

OpenHarmony浏览器上新,在Dayu200开发板上终于能优雅地浏览网页

离北况归

浏览器 OpenHarmony Openharmony啃论文俱乐部 PIMF OpenHarmony应用安装

Redis「5」事件处理模型与键过期策略

Samson

学习笔记 Redis 核心技术与实战 5月月更

飞书将于5月25日举行春季发布会 同步推出全新项目管理产品

陈泽涛

飞书 飞书项目

直播预告丨Hello HarmonyOS进阶课程第三课——游戏开发实践

HarmonyOS开发者

游戏开发 HarmonyOS

抢先预约 | 阿里云无影云应用线上发布会预约开启

阿里云弹性计算

无影云电脑 云应用

企评家 | 白银有色集团股份有限公司成长性评价简介

企评家

HDD·耀星领航出海峰会:华为游戏中心联运服务加速游戏出海获量增长

最新动态

柏拉图会成为元宇宙风险标吗?PlatoFarm的机会很大

小哈区块

一文彻悟容器网络通信

阿里巴巴中间件

阿里云 容器 云原生 中间件

Dubbo3 落地实践及 Mesh 解决方案

阿里巴巴中间件

阿里云 开源 云原生 dubbo 中间件

FinClip+系列 | VUE前端开发框架核心原理

Speedoooo

Vue 前端框架 移动开发 移动端开发 小程序容器

不会吧不会吧!听说还有人在手动迁移Vault密钥?

Jianmu

自动化 数据迁移 密钥 建木CI vault

李俊刚:我是如何在OpenHarmony完成ap6275s WiFi驱动的HDF适配工作的?

OpenHarmony开发者

OpenHarmony WiFi驱动

HIVE3 深度剖析 (下篇)

明哥的IT随笔

大数据 hive

【JavaScript】数值转换为数值

恒山其若陋兮

5月月更

druid 源码阅读(七)Druid Filter 介绍

爱晒太阳的大白

5月月更

源码分析 Flutter 的 setState 过程

岛上码农

flutter ios 前端 跨平台开发 5月月更

Cocos 常用功能介绍

空城机

Cocos 5月月更

接口测试工具简介!

Liam

测试 自动化测试 测试工具 测试自动化 测试管理工具

企评家|广州白云国际机场股份有限公司成长性报告简述

企评家

服务网格接口 SMI 规范解读

Flomesh

云原生 服务网格 SMI OpenServiceMesh

JRuby近况:1.6 RC1、JSR 292及Java 7中的NIO2、1.9.2支持_Java_Werner Schuster_InfoQ精选文章