去年早些时候,一篇名为“Scala,Groovy的杀手? ”的博客对Scala和Groovy进行了对比:算法
Scala和Groovy之间的核心区别在于前者是静态类型的。有些人可能争辩说这使得达到脚本化目标变得更加复杂了,而脚本化正是Groovy的动机。然而,Scala有完整的体系特征,这使Groovy看上去更像个玩具。好比,Scala有“sequence comprehensions”。该要素致使对算法的表述很是紧凑和强大。框架
Scala还有更多被证实是很是有用的特性,如嵌套类,currying和代数类型模式匹配。它还支持相似于JDK1.5所增长的泛型和注解。这些还都只是冰山一角。
以后,Derek Young撰文“Scala对比Groovy:静态类型是性能的关键”。在文中他举了一个实际的例子,试图说明针对一样的算法,Scala的性能远高于Groovy。工具
然而,Scala并非尽善尽美的,它也有一些明显的缺陷。Rick Hightower在最近发表的一篇博客中,尖锐地批评了Scala的语法问题:性能
Scala并非更好的选择。在阅读了Scala的文档以后,个人想法是:虽然这种语言的特性听起来挺好,可是语法却让我想放弃。为何事情非要为了避免同而不一样?Scala让Groovy看起来比之前更加美味可口。学习
憎恨是个很强烈的词。我恨Scala的语法。请不要再推动这种语法了。……Scala有好的思想吗?有。借用过来就好了……spa
总而言之,Scala看起来像下一个被过分宣传的语言。只须要把其精华引入到Groovy中,而后扔掉那些糟糕的语法。我最喜欢的Scala特性是推理类型和强类型。C#3.0也有这些。(我不用C#,不见得我不喜欢它的一些特性。)继承
Rick Hightower还建议Sun应该在Groovy上进行投资,而不是对JRuby做无谓的投资。ci
Groovy更像Java,更容易上手,语法也让开发者不反感。为何Sun在JRuby上投那么多钱呢?开发
投资应该给Groovy。这样了解Java的开发者能够更快地学习Groovy,并且若是有工具支持他们,那么就更可能这样作。文档
为了说明Sun投资在Ruby上的不明智,Rick Hightower还引用了一幅统计图表来讲明企业采用Ruby的趋势仍是比较低的:
![]() |
图1 |
另外,不管是Ruby、Scala仍是Groovy都有对应的Web框架,且对应的框架都是用各自对应的语言编写的。这些框架分别是Rails、Lift和Grails。尽管Lift和Grails中的许多东西都从Rails借鉴来的,可是Grails对其余已有Java技术框架进行了很好的继承,这无疑会保护用户或厂商在这方面的已有投资。Grails框架参考文档中这样描述:
Grails构建在这些概念之上,而且显著地减小了在Java平台上构建Web应用的复杂程度。不一样的是,这些是创建在已确立的如Spring和Hibernate这样的Java技术之上的。
目前,Scala和Groovy两种语言都在快速发展的过程当中。就目前的状况来看,Groovy的优点在于易用性以及与Java无缝衔接,Scala的优点在于性能和一些高级特性,若是在发展过程当中二者能互相借鉴对方的优势来充实自身,对开发者来说无疑是福音。正如第一篇所引用的博客做者最后提到的那样:
你们并不想看到一场殊死斗争,而是想看到更注重实效思想的Groovy团队能与更具备学术思想的Scala团队一块儿合做,制做出一门既强大又易用的语言。
你会将赌注押在谁身上呢?