推荐给好友 上一篇 | 下一篇

Java之外,选择Scala还是Groovy?

更新时间:2008-01-15 13:53
gg#Y2|G&O关 键 词:Java  Scala  Groovy
b.l"InKXc阅读提示:Scala和Groovy都是基于JVM的语言,相比Java都有更加简明的语法和丰富的表达能力。对于那些既想不脱离开JVM又想避免Java繁琐的语句的开发人员来说,Scala和Groovy都是不错的选择。可是选择哪一个才能在未来发展过程中取得先机呢?哪一个是未来发展的方向呢?这些都是困扰开发者的难题。

]}b]j

0t't0Y'C8X6L%?yq去年早些时候,一篇名为“Scala,Groovy的杀手? ”的博客对Scala和Groovy进行了对比:

;nA'i-Mi%c&a7WDE

q!P0qc;YsScala和Groovy之间的核心区别在于前者是静态类型的。有些人可能争辩说这使得达到脚本化目标变得更加复杂了,而脚本化正是Groovy的动机。然而,Scala有完整的体系特征,这使Groovy看上去更像个玩具。比如,Scala有“sequence comprehensions”。该要素导致对算法的表述非常紧凑和强大。JAVA中文站社区门户M-{)L6l~c9CY8kN

JAVA中文站社区门户} Z&R5]V.k+L

Scala还有更多被证明是非常有用的特性,如嵌套类,currying和代数类型模式匹配。它还支持类似于JDK1.5所增加的泛型和注解。这些还都只是冰山一角。JAVA中文站社区门户8|5f`qP a

jr6}u6R之后,Derek Young撰文“Scala对比Groovy:静态类型是性能的关键”。在文中他举了一个实际的例子,试图说明针对同样的算法,Scala的性能远高于Groovy。

-W']rbo JAVA中文站社区门户9L WB1J+H Y

然而,Scala并不是尽善尽美的,它也有一些明显的缺陷。Rick Hightower在最近发表的一篇博客中,尖锐地批评了Scala的语法问题: JAVA中文站社区门户%Dg [&u8{Kn

JAVA中文站社区门户'C Al3}`[+Uw

Scala并不是更好的选择。在阅读了Scala的文档之后,我的想法是:虽然这种语言的特性听起来挺好,但是语法却让我想放弃。为什么事情非要为了不同而不同?Scala让Groovy看起来比以前更加美味可口。JAVA中文站社区门户1_{ HKUA-}G

JAVA中文站社区门户xg$]2~ Um,]V

憎恨是个很强烈的词。我恨Scala的语法。请不要再推进这种语法了。……Scala有好的思想吗?有。借用过来就行了……

4X(Q:WZk w6Bl

*S&c&V2{ P#Q]K总而言之,Scala看起来像下一个被过度宣传的语言。只需要把其精华引入到Groovy中,然后扔掉那些糟糕的语法。我最喜欢的Scala特性是推理类型和强类型。C#3.0也有这些。(我不用C#,不见得我不喜欢它的一些特性。) JAVA中文站社区门户-r5a^7w7Ld3DT0v

2wTgs^.G:y)s~.qRick Hightower还建议Sun应该在Groovy上进行投资,而不是对JRuby作无谓的投资。 JAVA中文站社区门户} a4zW e-TVV

J,b` B2o W5ZnUGroovy更像Java,更容易上手,语法也让开发者不反感。为什么Sun在JRuby上投那么多钱呢?JAVA中文站社区门户"Z-Sgn NO[5L

JAVA中文站社区门户 I [u$~M

投资应该给Groovy。这样了解Java的开发者可以更快地学习Groovy,而且如果有工具支持他们,那么就更可能这样做。 JAVA中文站社区门户h1r6]J5B6rr E

JAVA中文站社区门户%KuF]`0p(ni}y

为了说明Sun投资在Ruby上的不明智,Rick Hightower还引用了一幅统计图表来说明企业采用Ruby的趋势还是比较低的:

m%V({}S SR
图1

&A*X.]5`Hl ~`另外,无论是Ruby、Scala还是Groovy都有对应的Web框架,且对应的框架都是用各自对应的语言编写的。这些框架分别是Rails、Lift和Grails。尽管Lift和Grails中的许多东西都从Rails借鉴来的,但是Grails对其他已有Java技术框架进行了很好的继承,这无疑会保护用户或厂商在这方面的已有投资。Grails框架参考文档中这样描述:

9|m2h;l4U4n.f D JAVA中文站社区门户QMt+Hp8D{

Grails构建在这些概念之上,并且显著地减少了在Java平台上构建Web应用的复杂程度。不同的是,这些是建立在已确立的如Spring和Hibernate这样的Java技术之上的。

~S/lyq/On JAVA中文站社区门户v@p7@*O"D

目前,Scala和Groovy两种语言都在快速发展的过程中。就目前的情况来看,Groovy的优势在于易用性以及与Java无缝衔接,Scala的优势在于性能和一些高级特性,如果在发展过程中两者能互相借鉴对方的优点来充实自身,对开发者来讲无疑是福音。正如第一篇所引用的博客作者最后提到的那样: JAVA中文站社区门户j2d G#l){:cm1b|(h9B

JAVA中文站社区门户g dE!bv@J5V

大家并不想看到一场殊死斗争,而是想看到更注重实效思想的Groovy团队能与更具有学术思想的Scala团队一起合作,制作出一门既强大又易用的语言。

7s2y*L4oI#` JAVA中文站社区门户$S.cv$|T)dXq)~

你会将赌注押在谁身上呢?JAVA中文站社区门户6g+y/l3q"wy-rq B:_

rZ4kes3x原文链接:http://www.infoq.com/cn/news/2008/01/scala_or_groovy

$n4SQ%\{/J*D.Qx

Java之外,选择Scala还是Groovy?
Java之外,选择Scala还是Groovy?


TAG: Java JAVA Groovy Scala 选择 时间
 

评分:0

我来说两句

seccode