- 易于与现有Java组件(在持久域之外)集成,例如JMS、EIP
- 支持功能测试框架
- 单机性能
- 可扩展性
(我查看了 Grails vs. Rails,但这与我无关)
尝试两者,选择最适合您的语言和环境。事实是,Grails堆栈默认更适合于Java集成,但许多组件距离与Rails集成仅有几行Ruby代码。Rails 3是一个很棒的版本,不需要您使用ActiveRecord,实际上,使用Hibernate代替模型将变得微不足道。此外,还可以查看DataMapper、MongoMapper和大量数据库适配器,适用于各种SQL和NoSQL数据库。
同时,JUnit!=功能测试。相反,请查看Cucumber + Cucumber-Rails + Capybara + Selenium,以获得集成浏览器自动化测试体验。请参阅https://github.com/elabs/front_end_testing,获取演示此堆栈的示例应用程序。
我建议Ruby更适合作为Web集成语言,而JRuby则恰到好处地使集成Java易于使用且舒适,同时为您提供了非Java库的丰富资源。不要认为Groovy自动赢得了优势,因为它与Java“更接近”。有时候,您需要进入一个耳目一新的不同环境,以重新审视如何解决问题。
声明:作为JRuby团队的成员,我的偏见在我的答案中明显。
java_import
,java_send
)。简而言之,Groovy是专门针对Java世界的语言,而JRuby则是将Ruby放在JVM上。希望这能帮到你,鉴于完全透明化的利益,我是Grails团队的成员。
使用Groovy更容易,因为Groovy基本上就是Java。您不需要进行大量的上下文切换。
Ruby有自己的一堆测试框架,如rspec/shoulda/cucumber/steak等等。由于我喜欢Ruby语法,所以我更喜欢这些框架。
据我所知,Grails在多线程方面更好,因为Rails过去没有太关注这个问题。他们目前正在赶上,所以可能会打平。
两者都可以扩展到JVM环境。如果您已经有了Java的运行基础设施,则更容易集成Grails。
对于2012年对此问题感兴趣的新手...
"使用@CompileStatic,Groovy的性能比Java慢1-2倍,而没有Groovy,则慢3-5倍。(...)这对我来说意味着Groovy已经准备好用于需要与Java性能相当的应用程序."
性能测试:Groovy 2.0 vs. Java http://java.dzone.com/articles/groovy-20-performance-compared
除了作者之外,我自2008年以来一直成功地使用Groovy,不仅用于简历,而且为了按时完成业务需求。性能始终是相对于您想要做什么而言。
关于集成,Grails确实“非常好”。我从未需要进一步采取措施将其与现有库集成。相反,基于Spring的Grails性质使工作更加容易。
对于那些可能会抱怨微基准测试和真实用例的人,这里有一个有关Web框架(Grails 1.3.7)的旧一点但不错的例子(Grails 1.8):http://www.jtict.com/blog/rails-wicket-grails-play-lift-jsp/
希望这可以帮到你!
附注:我想看到最近使用JRuby和其他真正动态的JVM语言的基准测试。