论坛首页 编程语言技术论坛

Sun公司收编JRuby

浏览 23187 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-09-16  
能详细讲讲执行效率很低的具体数据不?如直接Ruby运行与在JRuby上面运行的对比?
0 请登录后投票
   发表时间:2006-09-16  
JRuby 0.9应该还不是编译成字节码,速度慢得惊人。
一些特性好像也不支持,比如callcc
0 请登录后投票
   发表时间:2006-09-16  
JRuby还是解释方式的,有个编译器正在内部开发中。另外一个消息是有个我们的同胞正在搞一个Ruby到Java字节码的编译器:

http://xruby.com/default.aspx

代码在http://code.google.com/p/xruby/
0 请登录后投票
   发表时间:2006-09-19  
sun直接支持groovy不更好吗?
0 请登录后投票
   发表时间:2006-10-05  
关心groovy的性能...为什么非要搞成ruby那要所有的东西都是对象,没必要,根本没必要.应该允许简单类型的存在.
0 请登录后投票
   发表时间:2006-10-25  
JRuby的慢,主要问题不在于前端解析上(当然对比C还是慢一些),而是后端代码运行上。去看一下JRuby的代码,就会发现JRuby实际上是用Java写了一个Ruby的虚拟机。Ruby的虚拟机本来就不快,现在有个YARV的项目,就是为了改善Ruby虚拟机的性能。可想而知,用一种跑在虚拟机上的语言(Java)去写一个不快的虚拟机(Ruby),性能高才是件怪事。
0 请登录后投票
   发表时间:2006-10-26  
上周JRuby 0.9.1 新版本发布了。

JRuby是一个Ruby脚本语言的纯Java实现。JRuby可以嵌入任到Java应用程序并可以在脚本中使Java类。

此次发布的新版本中主要新特性是,增加了对Rails的支持。也就是说,理论上你可以在JVM上运行Rails了。

其他的提升包括:
- Overall performance is 50-60% faster than JRuby 0.9.0
- Improved Rails support
- New syntax for including Java classes into Ruby
- New interpreter design
- Refactoring of method dispatch, code evaluation, and block dispatch code
- Parser performance enhancement
- Rewriting of Enumerable and StringScanner in Java
- New experimental syntax for implementing interfaces
- 86 Jira issues resolved since 0.9.0

"理论上你可以在JVM上运行Rails了" 这句话很好玩
0 请登录后投票
   发表时间:2006-10-26  
但实际上,我只觉得用JVM来解释Ruby是最有用处的,可以解决ruby的效率问题,ruby 和 java混用好像用处不大吧,除非是,有些组件只有java里面有,看着眼馋
0 请登录后投票
   发表时间:2006-10-26  
fyol 写道
但实际上,我只觉得用JVM来解释Ruby是最有用处的,可以解决ruby的效率问题,ruby 和 java混用好像用处不大吧,除非是,有些组件只有java里面有,看着眼馋


你说了一个大家都希望的事实,在JVM上直接运行Ruby。但是这个也是说起来容易,做起来难。

可以直接想到的方案有两种:
直接把代码转成bytecode。如果你了解Ruby的实现,实际上,Ruby的类结构在运行时可能会发生变化,比如include一个module,或是为某个对象定义singleton方法,这个过程都可能产生一个新的类,在Ruby中称之为singleton class,然后把这个类插入到现有类继承体系中去。当然,这个类在Ruby的层次上不可见。简而言之,就是A继承自B,现在有个C,让A继承自C,C继承自B。在Java的bytecode一级动态修改类之间继承关系如何来实现,不知道哪位对此有高见。这只是转换过程中遇到的一个问题,对此问题深入研究下去,会有更多有趣的问题。

用Java语言写一个Ruby的runtime,也就是自己维护Ruby底层的对象之间的关系。事实上,JRuby也是这么做的。但稍微可以改进一点的是,直接用Java语言去写方法,直接用JVM去执行,而不用去像JRuby一样,再去用解释执行的方式转换成内部结构,再用自己写的虚拟机去执行。同JRuby的方式相比,这样的做法效率上会稍有一些提高,主要体现在对方法的处理上。

如果哪位想到什么更好的方式,可以一起来讨论一下!
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics