什么是 Groovy?
Groovy 是 JVM 的一個替代語言 — 替代 是指可以用 Groovy 在 Java 平臺上進行 Java 編程,使用方式基本與使用 Java 代碼的方式相同。在編寫新應用程序時,Groovy 代碼能夠與 Java 代碼很好地結合,也能用于擴展現有代碼。目前的 Groovy 版本是 1.5.4,在 Java 1.4 和 Java 5 平臺上都能使用,也能在 Java 6 上使用。
Groovy 的一個好處是,它的語法與 Java 語言的語法很相似。雖然 Groovy 的語法源于 Smalltalk 和 Ruby 這類語言的理念,但是可以將它想像成 Java 語言的一種更加簡單、表達能力更強的變體。(在這點上,Ruby 與 Groovy 不同,因為它的語法與 Java 語法差異很大。)
許多 Java 開發人員非常喜歡 Groovy 代碼和 Java 代碼的相似性。從學習的角度看,如果知道如何編寫 Java 代碼,那就已經了解 Groovy 了。Groovy 和 Java 語言的主要區別是:完成同樣的任務所需的 Groovy 代碼比 Java 代碼更少。(有時候會少很多!)
Groovy 快捷方式
開始使用 Groovy 時,您會發現它使日常的編程活動變得快了許多。完成本教程之后,您會了解更多的 Groovy 語法快捷方式。不過現在只需知道以下這些要點:
Groovy 的松散的 Java 語法允許省略分號和修改符。
除非另行指定,Groovy 的所有內容都為 public。
Groovy 允許定義簡單腳本,同時無需定義正規的class 對象。
Groovy 在普通的常用 Java 對象上增加了一些獨特的方法和快捷方式,使得它們更容易使用。
Groovy 語法還允許省略變量類型。
Groovy 的新增特性
雖然 Groovy 允許省略 Java 語法中的一些元素,但也增加了一些新特性,例如本地集合、內置的正則表達式和閉包。在標準的 Java 代碼中,如果想要創建一個項列表,首先要導入<code>java.util.ArrayList</code>,然后程序化地初始化 <code>ArrayList</code> 實例,然后 再向實例中添加項。在 Groovy 中,列表和映射都內置在語法中 — 無需導入任何內容。正則表達式也不需要額外的導入或對象;它們可以通過特殊的 Groovy 語法來創建。
關于閉包
對于任何 Java 開發人員來說,閉包都是一個令人興奮的新技巧。這些神奇的構造將會包含在未來的 Java 發行版(很可能是 Java 7)中,成為正式的 Java 語法,但現在已經可以在 Groovy 中使用了。可以將閉包 想像為一個代碼塊,可以現在定義,以后再執行。可以使用這些強大的構造做許多漂亮的事,不過最著名的是簡化迭代。使用 Groovy 之后,就有可能再也不需要編寫Iterator 實例了。
[table][tbody][/tbody][/table]
動態的 Groovy
從技術上講,Groovy 可能是您最近聽說過的類型最松散的動態語言之一。從這個角度講,Groovy 與 Java 語言的區別很大,Java 語言是一種固定類型語言。在 Groovy 中,類型是可選的,所以您不必輸入String myStr = "Hello"; 來聲明 String 變量。
除此之外,Groovy 代碼還能在運行時輕松地改變自己。這實際上意味著,能夠在運行時輕松地為對象指定新方法和屬性。這一編程領域稱為元編程,Groovy 能夠很好地支持這種編程方式。在學習本教程的過程中,您將了解到關于 Groovy 的動態性質的更多內容。現在惟一要補充的是,您會驚訝地發現,在 Groovy 會使操作 XML 或普通的 java.io.File 實例變得非常輕松。
一體兩面
用 Groovy 編寫的任何內容都可以編譯成標準的 Java 類文件并在 Java 代碼中重用。類似地,用標準 Java 代碼編寫的內容也可以在 Groovy 中重用。所以,可以輕易地使用 Groovy 為 Java 代碼編寫單元測試。而且,如果用 Groovy 編寫一個方便的小工具,那么也可以在 Java 程序中使用這個小工具。
Groovy是用Java實現的開源腳本語言并且和它聯系緊密.它需要JDK 1.4. Groovy向Java添加了許多Ruby和Python腳本語言的特性. Groovy的特性包括動態類型(dynamic typing), 閉包(closures),簡單對象導航( easy object navigation)和更加簡潔的Lists和Maps語法.
Groovy是由James Strachan和Bob McWhirter創造的. James還參與了許多其他開源項目的開發,其中包括Jelly, dom4j, Jaxen, Betwixt和Maven. Bob是Jaxen和Drools (一個開源的面向對象的JAVA規則引擎) 的創始人.
目前最新穩定版為Groovy1.5。這個Groovy版本包含了很多Java5的特性(Annotation,泛型,Enum...),并修正了很多錯誤。