Groovy

Apache嘅Groovy係Java平台上面設計嘅物件導向語言。呢隻動態語言擁有類似Python、Ruby同埋Smalltalk入面嘅一啲特性，可以做Java平台嘅腳本語言嚟用，Groovy代碼動態咁編譯做運行喺Java虛擬機上嘅Java字節碼，仲同其他Java代碼同埋庫進行互操作。所以其運行喺JVM上嘅特性，Groovy可以用其他Java語言編寫嘅庫。Groovy嘅語法同Java好似，大多數Java代碼都符合Groovy嘅語法規則，雖然語義可能唔同。

Groovy 1.0喺2007年1月2日發布，再喺2012年7月發布咗Groovy 2.0。由版本2開始，Groovy都可以靜態編譯，提供類型推論同Java相近嘅性能。Groovy 2.4係Pivotal軟件贊助嘅最後一個主要版本，喺2015年3月截止。Groovy已經將佢治理結構更改咗做Apache軟件基金會嘅項目管理委員會。

特性 
大部分有效嘅Java文件都係有效嘅Groovy文件。Groovy代碼對比起Java代碼更加緊湊，因為佢唔使Java要嘅所有元素。呢兩種語言嘅相似性，令Java開發者可以先由熟悉嘅Java語法開始逐步學Groovy。

Groovy特性包括咗Java入面唔支援嘅靜態同動態類型，運算符重載，提供埋lists仲有關聯數組提供咗原生語法，原生支援正則表達式，多態迭代，字符串內嵌表達式，添加幫助方法同埋Null條件運算符，自動空指針檢查。

由Groovy 2開始，支援模塊化，用JDK7嘅類型檢查，靜態編譯，Project Coin語法增強，多塊模塊同埋持續嘅性能增強，仲可以調用動態指令。

Groovy透過內聯文檔對像模型語法對唔同標記語言提供咗原生支持。呢個功能實現咗用統一簡潔嘅語法同埋編程方法嚟定義同操縱好多類型嘅異構數據資源。

同Java唔同嘅係，Groovy源代碼文件可以當做腳本執行，如果佢含有任何類定義之外嘅代碼，或者佢係具有main方法嘅類，或者佢係Runnable或者GroovyTestCase。Groovy腳本喺執行之前搞掂解析、編譯同埋生成。呢件事發生喺下一個層次，編譯後嘅版本唔會保存做進程嘅組件。

程式例子 
下面係嚟自 codehaus.org 嘅一個例子程式：

class Foo {
   doSomething() {
     data = ["name": "James", "location": "London"]
     for (e in data) {
       println("entry ${e.key} is ${e.value}")
     }
   }

closureExample(collection) {
     collection.each { println("value ${it}") }
   }

static void main(args) {
     values = [1, 2, 3, "abc"]
     foo = new Foo()
     foo.closureExample(values)
     foo.doSomething()
   }
 }

可以用嘅IDE 
已經有好多集成開發環境支援咗呢隻語言：

Eclipse，插件Groovy-Eclipse
 IntelliJ IDEA，預設支援Groovy開發
 NetBeans 預設支援

Groovy 嘅官方網站 
 Groovy++ 

程式語言