原文地址
Scala 和 Groovy 都是基于 JVM 的語言,相比 Java,它們都有語法更加簡明和表達能力更豐富。對于那些既想不脫離開 JVM 又想避免 Java 繁瑣語句的開發(fā)人員來說,Scala 和 Groovy 都是不錯的選擇。可是哪一個才能在未來發(fā)展過程中取得先機呢?哪一個是未來發(fā)展的方向呢?
去年早些時候,一篇名為“Scala,Groovy 的殺手? ”的博客對 Scala 和 Groovy 進行了對比:
Scala 和 Groovy 之間的核心區(qū)別在于前者是靜態(tài)類型的。有些人可能爭辯說,這使得達到腳本化目標變得更加復雜了,而腳本化正是 Groovy 的動機。然而,Scala 有完整的體系特征,這使 Groovy 看上去更像個玩具。比如,Scala有“sequence comPRehensions”。該特性導致對算法的表述非常緊湊和強大。
Scala 還有更多被證明是非常有用的特性,如嵌套類,currying 和代數類型模式匹配。它還支持類似于 JDK1.5 所增加的泛型和注解。這些還都只是冰山一角。
之后,Derek Young 撰文“Scala 對比 Groovy:靜態(tài)類型是性能的關鍵(scala-vs-groovy-static-typing-is-key-to-performance)”。文中,他舉了一個實際的例子,試圖說明針對同樣的算法,Scala 的性能遠高于 Groovy。
然而,Scala 并不是盡善盡美的,它也有一些明顯的缺陷。Rick Hightower 在最近發(fā)表的一篇博客中,尖銳地批評了 Scala 的語法問題:
Scala 并不是更好的選擇。在閱讀了 Scala 文檔后,我的想法是:雖然這種語言的特性聽起來挺好,但語法卻讓我想放棄。為什么事情非要為了不同而不同?Scala 讓 Groovy 看起來比以前更加美味可口。
憎恨是個很強烈的詞。我恨 Scala 的語法。請不要再推進這種語法了。……Scala 有好的思想嗎?有。借用過來就行了……
總而言之,Scala 看起來像下一個被過度宣傳的語言。只需要把其精華引入到 Groovy 中,然后扔掉那些糟糕的語法。我最喜歡的 Scala 特性是推理類型和強類型。C#3.0 也有這些。(我不用 C#,不見得我不喜歡它的一些特性。)
Rick Hightower 還建議 Sun 應該在 Groovy 上進行投資,而不是對 JRuby 作無謂的投資。
Groovy 更像 Java,更容易上手,語法也讓開發(fā)者不反感。為什么 Sun 在 JRuby 上投那么多錢呢?
投資應該給 Groovy。這樣了解Java的開發(fā)者可以更快地學習 Groovy,而且如果有工具支持他們,那么就更可能這樣做。
為了說明 Sun 投資在 Ruby 上的不明智,Rick Hightower 還引用了一幅統(tǒng)計圖表來說明企業(yè)采用 Ruby 的趨勢還是比較低的:

另外,無論是 Ruby、Scala 還是 Groovy 都有對應的 Web 框架,且對應的框架都是用各自對應的語言編寫的。這些框架分別是 Rails、 Lift 和 Grails。盡管 Lift 和 Grails 中的許多東西都從 Rails 借鑒來的,但 Grails 對其他已有 Java 技術框架進行了很好的繼承,這無疑會保護用戶或廠商在這方面的已有投資。Grails 框架參考文檔中這樣描述:
Grails 構建在這些概念之上,并且顯著地減少了在 Java 平臺上構建 Web 應用的復雜程度。不同的是,這些是建立在已確立的如 Spring 和 Hibernate 這樣的 Java 技術之上的。
目前,Scala 和 Groovy 兩種語言都在快速發(fā)展的過程中。就目前的情況來看,Groovy 的優(yōu)勢在于易用性以及與 Java 無縫銜接,Scala 的優(yōu)勢在于性能和一些高級特性。如果在發(fā)展過程中兩者能互相借鑒對方的優(yōu)點來充實自身,對開發(fā)者來講無疑是福音。正如第一篇所引用的博客作者最后提到的那樣:
大家并不想看到一場殊死斗爭,而是想看到更注重實效思想的Groovy團隊能與更具有學術思想的Scala團隊一起合作,制作出一門既強大又易用的語言。
你會將賭注押在誰身上呢?
|
新聞熱點
疑難解答