我想在Rails上试用JRuby和JRuby.我无法找到有关JRuby on Rails和Ruby on Rails之间区别的信息.
我需要注意哪些不同之处?
JRuby是在JVM上运行的ruby实现,而Matz的ruby是C实现.
要注意的主要特点是:
Jruby在Java VM上运行,它可以编译或解释为Java字节代码.
JRuby可以与Java代码集成.如果你有java类库(.jar),你可以使用JRuby在ruby代码中引用和使用它们.在另一个方向,您还可以从Java中调用Jruby代码.JRuby还可以使用JVM和应用程序服务器功能.
JRuby通常托管在Java应用程序服务器中,例如Sun的glassfish甚至是Tomcat Web服务器.
虽然你不能在JRuby上使用原生的ruby gems,但是大多数流行的ruby库都有jruby实现.
jruby wiki中列出了其他差异:
JRuby和Ruby(MRI)之间的差异
JRuby On Rails
我很惊讶这个问题的所有答案中都缺少一个关键的东西,与GIL有关.
你应该关心的主要区别是esp.在Web应用程序中,例如使用Rails构建的应用程序是真正的并发("Global Interpreter Lock"免费).当使用JRuby运行两个线程(例如,提供2个用户请求)时,它们能够在单个进程内并发运行,而在MRI中,GIL(即使使用1.9的本机线程)也可以避免并行执行Ruby代码.
对于应用程序开发人员来说,这是考虑JRuby时要记住的第一件事,因为它真的很闪亮,config.threadsafe!
但要求您确保您的代码(和您的宝石代码)"真正"是线程安全的.
我可能错了,但我认为你可以用一种你不能用正常RoR做的方式打包JRuby on Rails应用程序 - 看看Mingle或类似的.可以在不丢弃裤子/打开komono的情况下进行销售.
也就是说,我对RoR包装不够熟悉,所以不要抱它我:)