背景:我在
Ruby(而不是Rails)中编写一个“标准”(没什么特别的)Web应用程序,我需要开始考虑部署.
所以我一直听到很多建议,使用JRuby来部署Ruby Web应用程序,无论你是否确实需要Java库.这是真的吗是否值得使用Java实现速度?我会通过这样做获得别的东西吗?我会遇到任何问题吗?
PS:我不太了解Java,所以“你可以用Java编写它的一部分”不是很有帮助.
解决方法
JRuby是最完整的ruby实现之一(还有很多其他的,如IronRuby,Maglev,Rubinius,XRuby,YARV,MacRuby).这是非常全面的,因此,除非你使用使用本机C代码的宝石,否则很有可能是兼容性很好.
JRuby比实际的C实现要快一些,但它支持实际的线程,而官方的实现正在努力得到它(它仍然使用Green Threads).使用JRuby的Java线程是非常微不足道的,即使它需要你将代码与Java相结合(有一点DI,这种耦合只会发生一次).
另一个好处:运行时工具. Java作为平台而不是语言,有大量的运行时工具来帮助您诊断问题并检查应用程序的状态(Profiler,JConsole等).
Twitter工程师还提到,Ruby VM有可能成为长期流程的环境,而JVM非常擅长,因为在过去十年中,它已经被优化了.
Ruby最近也有一些安全问题,这并不影响JRuby的实现.
另一方面,您的项目需要更多的工件(JVM,JRuby jar等).如果您使用的应用程序将长期保持活动,并且您希望更好的运行时支持,JRuby可以是一个很好的方式.否则,您可以安全地等待,直到您需要这些事情才能实际进行(可能会顺利进行).