`
mmdev
  • 浏览: 12966443 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

JRuby 1.7 Preview 1发布:默认使用Ruby 1.9,通过Invokedynamic改进了性能

 
阅读更多
本文来源于我在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

分享到:
评论

相关推荐

    asciidoctorj-jruby-test:展示JRuby 1.7和9.0.0.0之间的类加载差异

    阿西德·奥克托·杰鲁比测验 ... 使用JRuby 1.7,您将看到一个Hello World页面。 使用JRuby 9.0.0.0.pre2,您将看到此错误: org.jruby.exceptions.RaiseException: (LoadError) no such file to load -- ascii

    jruby1.7.8版本呢

    jruby是一个ruby的解析器,可将ruby解析为java文件,jruby作为ruby解析器时刻调用java代码

    jruby_windows1.7and bin1.7

    JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。Rails彻底加快及简化了Web应用的开发,不过它让人觉得不够成熟,特别是在高端...

    jruby-complet-1.7.zip

    找不到或无法加载主类org.jruby.Main。 原因是/usr/local/hbase/lib 目录下没有jruby-complete-1.7.19.jar文件.,下载本文件,解压缩后将jar文件直接添加到/usr/local/hbase/lib 目录下。

    jruby:JRuby,Ruby在JVM上的实现

    JRuby-在JVM上实现Ruby语言主: 9.2分支:关于JRuby是使用JVM的的实现。 它旨在成为Ruby的完整,正确和快速的实现,同时提供强大的新功能,例如没有并发,真正的并行性以及与Java语言的紧密集成,以允许您使用Java。...

    巧妙规避Java与Ruby语言迁移过程中的风险

    “使用Ruby具有风险”是一种普遍的看法,因为使用新的语言天生是有风险的。随着Ruby on Rails逐步进入到主流的开发领域中,这样的风险将会随时间逐渐降低,因为有逐步增长的开发者群、组件相关的书籍、以及业务合作...

    Java 版的 Ruby 解释器 JRuby 1.7.14 发布

    JRuby 1.7 主要是为了兼容 Ruby 1.9.3 版本,改进记录如下: 解决了 30 个 issues 修复了 Jar 文件源潜在的内存泄漏问题 因为在 Rails 应用启动比较慢,所以默认禁用 invokedynamic load/require 内部重构和简化 ...

    jruby_activerecord_test:尝试让JRuby使用ActiveRecord 6

    自述文件 这是一个示例应用程序,试图让JRuby与ActiveRecord 6和Postgres一起运行。... cd到该文件夹​​并运行ruby -v确保您正在使用JRuby。 .tool-versions文件将其设置为jruby-9.2.13.0我也尝试了jru

    jruby-stdlib-1.7.23.jar

    jruby-stdlib-1.7.23.jar

    JRuby语言实战技术

    JRuby语言实战技术,java下运用ruby

    JRuby,在JVM上实现Ruby-Ruby开发

    JRuby-JVM Master上的Ruby语言的实现:9.1分支:关于JRuby是使用JVM的Ruby语言的实现。 它旨在成为Ruby,JRuby的完整,正确和快速的实现-JVM Master上的Ruby语言的实现:9.1分支:关于JRuby是使用JVM的Ruby语言的...

    ruby_vs_crystal:三种 Ruby(MRI、JRuby 和 Rubinius)与 Crystal 的比较

    三种 Ruby(MRI、JRuby 和 Rubinius)与 Crystal 的比较 设置 Mac OSX(小牛队) Ruby MacBook Air(1.3 Intel i5,4GB 1600 MHz DDR3) 水晶 $ time ./foo_crystal real 0m7.971s user 0m7.994s sys 0m0.250s ...

    boilerplate-jruby9k_torquebox4:JRuby 9.0.0.0 + Torquebox 4 样板

    从或使用 Ruby 版本管理器(例如安装 JRuby 9.0.0.0: rvm install jruby-9.0.0.0.pre1 安装 gem 依赖项: bundle 跑步 使用 Torquebox 4 运行应用程序: torquebox run 部署到 Heroku 样板已经在 Heroku 上...

    Ruby-JRuby一个Ruby语言的Java实现

    JRuby - 一个Ruby语言的Java实现,Ruby在JVM上的实现

    Memcached的Ruby客户端Dalli.zip

    Dalli 是一个高性能的 Memcached 的 Ruby 客户端,支持 Memcached 1.4 ,使用新的二进制协议。 支持: JRuby 1.6 Ruby 1.9.3 Rubinius 2.0 示例代码: require 'dalli' options = { :namespace => "app...

    jruby-lab:JRuby的实验室是jruby内容的存储库。 带有示例和参考

    Wiki和文章一点JRuby历史 JRuby Wiki以及开始使用JRuby进行学习的方式 JRuby on Rails的Wiki部分 有关在JRuby中进行编程需要什么的文章 该参考资料显示了从Ruby类到Java类的转换 JSR-292和Invokedynamic文章...

    jruby-dist-9.1.15.0-bin.zip

    JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。 截至2017.12.08最新稳定版 JRuby 官方更新说明: JRuby 9.1.x is our current ...

    jruby-sandbox:JRuby VM沙箱

    JRuby沙箱是_why怪异的怪异沙箱在JRuby中的重新实现,并且很大程度上基于Ola Bini的 ,但已针对JRuby 1.7进行了更新。 先决条件 该gem是针对JRuby 1.7.6开发的,已知可与1.7.8一起使用,但尚未针对其他版本进行测试...

    jruby-dist-9.1.15.0-bin.tar.gz

    JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。 截至2017.12.08最新稳定版 JRuby 官方更新说明: JRuby 9.1.x is our current ...

    QCon 2009 beijing全球企业开发大会ppt:14.让Ruby和Rails让Ruby语言融入于Java项目

    人们肯定在考虑,在Java语言与Ruby语言交互过程中,使用JRuby语言,到底能够发挥多大的作用;在充分利用Java资源过程中,使用Rails 框架技术,是否真正能够起到效益作用?所有这一切,人们不可能不问,Ruby语言是否...

Global site tag (gtag.js) - Google Analytics