Groovy是
JVM的一個替代語言(替代是指能夠用 Groovy 在Java平臺上進行 Java 編程),使用方式基本與使用 Java代碼的方式相同,該語言特別適合與
Spring的動態語言支持一塊兒使用,設計時充分考慮了Java集成,這使 Groovy 與 Java 代碼的互操做很容易。(注意:不是指Groovy替代java,而是指Groovy和java很好的結合編程。[1]
基本特色
二、爲Java開發者提供了 現代最流行的編程語言特性,並且學習成本很低(幾乎爲零)。
三、 支持
DSL(Domain Specific Languages領域定義語言)和其它簡潔的語法,讓代碼變得易於閱讀和維護。
四、受檢查類型異常(Checked Exception)也能夠不用捕獲。
五、 Groovy擁有處理原生類型,
面向對象以及一個Ant DSL,使得建立Shell Scripts變得很是簡單。
六、在開發Web,
GUI,數據庫或控制檯程序時 經過 減小框架性代碼 大大提升了開發者的效率。
七、支持
單元測試和模擬(對象),能夠 簡化測試。
八、無縫集成 全部已經存在的 Java對象和類庫。
九、直接編譯成Java
字節碼,這樣能夠在任何使用Java的地方 使用Groovy。[2]
十二、默認導入經常使用的包。
1三、斷言不支持jvm的-ea參數進行開關。
1四、支持對對象進行布爾求值。
1六、groovy中基本類型也是對象,能夠直接調用對象的方法。
動態類型
類型對於變量,屬性,方法,閉包的參數以及方法的返回類型都是無關緊要的,都是在給變量賦值的時候才決定它的類型, 不一樣的類型會在後面用到,任何類型均可以被使用,即便是基本類型 (經過自動包裝(autoboxing)). 當須要時,不少類型之間的轉換都會自動發生,好比在這些類型之間的轉換: 字符串(String),基本類型(如int) 和類型的包裝類 (如
Integer)之間,能夠把不一樣的基本類型添加到同一數組(collections)中。
閉包
閉包就是可使用參數的代碼片斷,每一個閉包會被編譯成
繼承groovy.lang.Closure類的類,這個類有一個叫call方法,經過該方法能夠傳遞參數並調用這個閉包.它們能夠訪問並修改在閉包建立的範圍內的變量,在閉包內建立的變量在閉包被調用的範圍內一樣能夠被引用, 閉包能夠保存在變量中並被做爲參數傳遞到方法中。
Groovy 語法與Java 語言的語法很類似,雖然 Groovy 的語法源於
Smalltalk和
Ruby這類語言的理念,可是能夠將它想像成 Java 語言的一種更加簡單、表達能力更強的變體。(在這點上,Ruby與 Groovy 不一樣,由於它的語法與 Java 語法差別很大。)
許多 Java 開發人員喜歡 Groovy 代碼和 Java 代碼的類似性。從學習的角度看,若是知道如何編寫 Java 代碼,那就已經瞭解 Groovy 了。Groovy 和 Java 語言的主要區別是:完成一樣的任務所需的 Groovy 代碼比 Java 代碼更少。