跳转到内容

Groovy

本页使用了标题或全文手工转换
维基百科,自由的百科全书
(重定向自Apache Groovy
Groovy
Groovy-logo
编程范型面向对象腳本語言
設計者James Strachan英语James Strachan (programmer)
實作者Guillaume Laforge (PMC主席)
Jochen Theodorou (技术主管)
Paul King
Cedric Champeau
发行时间2003年
当前版本
  • 4.0.24(2024年11月5日;穩定版本)[1]
編輯維基數據鏈接
型態系統动态duck
系统平台Java虚拟机
操作系统跨平台Java虚拟机
許可證Apache許可證v2.0
網站http://groovy-lang.org/
啟發語言
Java, Python, Ruby, Perl, SmalltalkObjective-C

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)[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)。这发生在下一个层次,编译后的版本不会保存为进程的组件

程式範例

下面是来自于 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. ^ Release 4.0.24. 2024年11月5日 [2024年11月22日]. 
  2. ^ "Groovy joins Apache Incubator".11 Mar 2015.. [2017-08-24]. (原始内容存档于2020-12-04). 

外部連結