1. 程式人生 > >groovy 簡介(基於JVM的指令碼語言)

groovy 簡介(基於JVM的指令碼語言)

groovy ,[ˈgru:vi ] ,adj. 絕妙的 流行的; 

groovy是一個基於JVM的指令碼語言,可以與java很好地結合、混用。

1.JVM指令碼語言三巨頭

它們都是基於JVM的指令碼語言。此外還有Jython、Jruby,就不展開了。

1.1clojure 

Clojure 是一種 Lisp 方言,在語法上徹底背離了其他語言。它是一種強動態型別語言(和 Groovy 一樣),反映了專斷的設計決策。雖然 Clojure 允許您用遺留 Java 進行完整和深入的互動操作,但它並不試圖構建與舊式正規化相連的橋樑。例如,Clojure 不具備糾錯功能,並且支援面向物件進行互動操作。但是,它還支援物件程式設計師所習慣的所有特性,如多型性,但它以函式方式而非面向物件的方式來實現這些特性。Clojure 圍繞一些核心工程原理(比如 Software Transactional Memory)進行設計,它打破了舊的正規化,支援新的功能。

1.2scala 

Scala 是一種充分利用了 JVM 優勢的語言,但其語法完全進行了重新設計。Scala 是一種強靜態型別語言(比對型別要求比較嚴格的 Java 更嚴格)支援面向物件正規化和函式正規化,而且更青睞於後者。例如,Scala 傾向 val宣告,並使不變的變數(類似於在 Java 中將引數標記為 final)服從於 var,這建立了人們更加熟悉的可變變數。通過大力支援這兩種正規化,Scala 為您提供了從您可能是(一名面向物件的命令式程式設計師)到可能應該是(一名傾向函式式的程式設計師)的橋樑。

1.3groovy

Groovy 是 21 世紀的 Java 語法(濃縮咖啡,而非普通咖啡)。Groovy 的設計目標是更新並減少 Java 語法阻力,同時支援 Java 語言中的主要正規化。因此,Groovy 需要 “瞭解” JavaBeans 這類技術,並簡化屬性訪問。Groovy 快速合併新特性,並提供了一些重要函式特性,我將在後面幾期中重點介紹。Groovy 在根本上依然是面向物件的命令式語言。Groovy 與 Java 的兩個主要區別是,Groovy 是 靜態而非動態型別,而且它的元程式功能更佳。

2.與java巨集觀對比

網上的討論很亂,教科書也不討論這些,先給這麼一版答案吧。 靜態型別:編譯時明確變數的型別。如java。
動態型別:執行時才確定變數的型別。如groovy。
強型別:一旦變數被指定某個資料型別,不能再變。如java。 若型別:與強型別相反。如js。