本頁使用了標題或全文手工轉換

Groovy

維基百科,自由的百科全書
前往: 導覽搜尋
Groovy
Groovy-logo
編程範型 物件導向腳本語言
設計者 JCP
實作者 Guillaume Laforge
(專案的領導者,和《JSR-241規範》組長)
面市時間 2003年
最近釋出日期 2.4.12(2017年6月21日 (2017-06-21)
型態系統 動態duck
系統平台 Java虛擬機器
作業系統 跨平台Java虛擬機器
授權條款 Apache授權條款v2.0
網站 http://groovy-lang.org/

ApacheGroovyJava平台上設計的物件導向編程語言。這門動態語言擁有類似PythonRubySmalltalk中的一些特性,可以作為Java平台的手稿語言使用,Groovy代碼動態地編譯成執行於Java虛擬機器(JVM)上的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軟體基金會的專案管理委員會(PMC)[1]

特性[編輯]

大部分有效的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)。這發生在下一個層次,編譯後的版本不會儲存為行程的元件

程式範例[編輯]

下面是來自於 https://web.archive.org/web/20140302111159/http://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支援[編輯]

已經有許多的整合式開發環境支援了該門語言:

參考資訊[編輯]

  1. ^ "Groovy joins Apache Incubator".11 Mar 2015.

外部連結[編輯]