当前位置:  开发笔记 > 编程语言 > 正文

使用JRuby进行Ruby Web应用程序?这值得么?

如何解决《使用JRuby进行RubyWeb应用程序?这值得么?》经验,为你挑选了2个好方法。

背景:我在Ruby(而不是Rails)中编写一个"标准"(没什么特别的)Web应用程序,我需要开始考虑部署.

因此,无论您是否真的需要Java库,我都会听到很多建议使用JRuby来部署Ruby Web应用程序.这是真的吗?是否值得使用Java实现速度?这样做我还能获得其他任何东西吗?我会遇到任何问题吗?

PS:我不太了解Java,所以"你可以用Java编写部分内容"并不是很有帮助.



1> Daniel Ribei..:

JRuby是最完整的ruby实现之一(还有很多其他的实现,如IronRuby,Maglev,Rubinius,XRuby,YARV,MacRuby).因此,它是非常全面的,除非您使用使用本机C代码的宝石,否则您很可能在兼容性方面很好.

JRuby比实际的C实现快一点,但它支持实际的线程,而官方实现正在努力获得它(它仍然使用绿色线程).使用来自JRuby的Java线程非常简单,即使它需要您将代码与Java相结合(使用一点DI,这种耦合只会发生一次).

另一个好处:运行时工具.Java作为一种平台而不是语言,有许多运行时工具可以帮助您诊断问题并检查应用程序的状态(分析器,JConsole等).

Twitter工程师还提到Ruby VM有点难以成为长期存在的进程的环境,而JVM非常擅长,因为它在过去的十年中已经针对它进行了优化.

Ruby最近也有一点安全问题,这不会影响JRuby的实现.

另一方面,您的项目需要更多工件(JVM,JRuby jar等).如果您使用的应用程序将保持很长时间,并且您希望获得更好的运行时支持,那么JRuby可能是一个很好的方法.否则,您可以安全地等待,直到您需要这些东西来实际移动(它可能会顺利进行).


还要注意的是Twitter的红宝石斯卡拉此举主要是在应用程序中,其中(a)他们承认在Ruby和做不好的排队部分(b)是welll适合于高性能的语言呢.
Twitter开发人员对Ruby的看法有点似是而非.如果问题出现在他们所说的话,那么明智的事情就是和JRuby一起去.他们没有将他们的Ruby代码移动到Java - 他们在Scala中重写了它.听起来他们的问题更多的是他们的代码而不是MRI.
有java版本的数据库gems,因此你不会遇到兼容性问题.

2> Robert Brown..:

我每天都使用和喜欢JRuby,但我建议你使用MRI(又名C-Ruby),除非你真的需要JRuby.

使用JRuby的原因:

    Java集成

    受限制的环境(您的计算机安装的Java不是ruby而您没有root)

    受限制的环境(你安装了ruby但没有root,所以无法安装你需要的宝石)

    你达到了Ruby 1.8性能的极限,不能使用1.9

根据您的描述,您没有上述任何原因.

与C-Ruby 1.8相比,C-Ruby 1.9具有显着的性能改进.我还没有阅读(或自己找出)C-Ruby 1.9与JRuby 1.8或JRuby 1.9的比较.无论如何,你还没有性能问题,所以不用担心.

好消息是,您可以从任何一个开始,如果需要,可以稍后转换.这一切都是Ruby,Webrick和Mongrel宝石同时兼顾.

如上所述,具有C扩展名的ruby gem无法在JRuby下安装.希望如果ruby C扩展使用FFI,这将在未来发生变化.

http://kenai.com/projects/ruby-ffi/pages/Home

http://isitjruby.com/

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有