Groovy
Apache嘅Groovy係Java平台上面設計嘅物件導向語言。呢隻動態語言擁有類似Python、Ruby同埋Smalltalk入面嘅一啲特性,可以做Java平台嘅腳本語言嚟用,Groovy代碼動態咁編譯做運行喺Java虛擬機(JVM)上嘅Java字節碼,仲同其他Java代碼同埋庫進行互操作。所以其運行喺JVM上嘅特性,Groovy可以用其他Java語言編寫嘅庫。Groovy嘅語法同Java好似,大多數Java代碼都符合Groovy嘅語法規則,雖然語義可能唔同。
![]() | |
編程範式 | 物件導向,腳本語言 |
---|---|
設計者 | James Strachan |
編程員 | Guillaume Laforge(PMC主席) Jochen Theodorou(技術主管) Paul King Cedric Champeau |
第一次出現 | 2003年 |
穩定版本 | 3.0.7
/ Template:Release date |
類型系統 | 強類型、動態類型,鴨子類型 |
系統平台 | Java虛擬機 |
操作系統 | 跨平台(Java虛擬機) |
軟件授權 | Apache許可證v2.0 |
副檔名 | .groovy、.gvy、.gy,.gsh [1] |
網站 | http://groovy-lang.org/ |
啟發語言 | |
Java、Python、Ruby、Perl、Smalltalk,Objective-C |
Groovy 1.0喺2007年1月2日發布,再喺2012年7月發布咗Groovy 2.0。由版本2開始,Groovy都可以靜態編譯,提供類型推論同Java相近嘅性能。Groovy 2.4係Pivotal軟件贊助嘅最後一個主要版本,喺2015年3月截止。Groovy已經將佢治理結構更改咗做Apache軟件基金會嘅項目管理委員會(PMC)[2]。
特性
編輯大部分有效嘅Java文件都係有效嘅Groovy文件。Groovy代碼對比起Java代碼更加緊湊,因為佢唔使Java要嘅所有元素。呢兩種語言嘅相似性,令Java開發者可以先由熟悉嘅Java語法開始逐步學Groovy。
Groovy特性包括咗Java入面唔支援嘅靜態同動態類型(使用關鍵字 def),運算符重載,提供埋lists(列表)仲有關聯數組(maps)提供咗原生語法,原生支援正則表達式,多態迭代,字符串內嵌表達式,添加幫助方法同埋Null條件運算符,自動空指針檢查(列:variable?.method()
,或 variable?.field
)。
由Groovy 2開始,支援模塊化(能只根據項目需要添加所需嘅jar包,從而減少Groovy庫嘅大小),用JDK7嘅類型檢查,靜態編譯,Project Coin語法增強,多塊模塊同埋持續嘅性能增強,仲可以調用動態指令。
Groovy透過內聯文檔對像模型(DOM)語法對唔同標記語言(如XML和HTML)提供咗原生支持。呢個功能實現咗用統一簡潔嘅語法同埋編程方法嚟定義同操縱好多類型嘅異構數據資源。
同Java唔同嘅係,Groovy源代碼文件可以當做(未編譯嘅)腳本執行,如果佢含有任何類定義之外嘅代碼,或者佢係具有main方法嘅類,或者佢係Runnable或者GroovyTestCase。Groovy腳本喺執行之前搞掂解析、編譯同埋生成(類似Perl同埋Ruby)。呢件事發生喺下一個層次,編譯後嘅版本唔會保存做進程嘅組件。
程式例子
編輯下面係嚟自 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 Goodness: Default Groovy Script File Extensions".
- ↑ ""Groovy joins Apache Incubator".11 Mar 2015". 原先內容歸檔喺2020-12-04. 喺2017-08-24搵到.
出面網頁
編輯- Groovy 嘅官方網站 Wayback Machine嘅版面存檔備份
- Groovy++ Wayback Machine嘅版面存檔備份