JRuby 1.7 Preview 1发布:默认使用Ruby 1.9,通过Invokedynamic改进了性能
来源:互联网 发布:淘宝网乒乓球桌多少钱 编辑:程序博客网 时间:2024/05/22 00:05
本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2012/07/jruby-17
自从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
- JRuby 1.7 Preview 1发布:默认使用Ruby 1.9,通过Invokedynamic改进了性能
- JRuby 1.7.0 已发布:默认为 Ruby 1.9 模式, 能够使用 InvokeDynamic
- JRuby 1.0发布:实现JVM对Ruby的兼容
- AutoAuto preview 1发布
- Ruby 程序设计语言正式发布了1.9版。
- Mozilla Labs Apps Developer Preview发布了
- JRuby 1.0 发布
- JRuby的性能优化
- Visual Studio 15 Preview 5 发布 大幅提升性能
- Flash Player10.1 彻底改进了GC性能
- Expression Blend 2 December Preview (12月份版本)发布了
- OrangeUI For FMX 1.0 Preview XE5UP2发布了
- Oculus SDK 0.3.2 Preview Release 2发布了
- Android Studio 1.3 Preview 1 发布下载
- JRuby 1.6.0 正式版 发布!
- 让Ruby性能增加30%的改进方法分析
- JRuby使用经验
- JRuby使用经验
- JSP基础----Scriptlet
- Linux网络协议栈 -- socket bind 地址绑定
- Mysql 维护的一点整理
- Android关于SD卡中多层目录的创建
- Java基础回顾(四)
- JRuby 1.7 Preview 1发布:默认使用Ruby 1.9,通过Invokedynamic改进了性能
- bochs调试指令
- ISO 20000之业务关系管理
- JUnit的使用
- 黑苹果教程 win7+virtualbox安装Mac os搭建完美越狱环境
- equals和==的区别
- HttpURLConnection设置代理服务器
- Linux网络协议栈 -- socket listen监听
- 如何书写一个恰当的equals()方法?