(转)Groovy简介

转:https://www.w3cschool.cn/groovy/java

Groovy的官方网站是http://www.groovy-lang.org/程序员

Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码可以与 Java 代码很好地结合,也能用于扩展示有代码。因为其运行在 JVM 上的特性,Groovy 可使用其余 Java 语言编写的库。数据库

简介

Groovy是用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既能够用于面向对象编程,又能够用做纯粹的脚本语言。使用该种语言没必要编写过多的代码,同时又具备闭包和动态语言中的其余特性。编程

Groovy是JVM的一个替代语言(替代是指能够用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一块儿使用,设计时充分考虑了Java集成,这使 Groovy 与 Java 代码的互操做很容易。(注意:不是指Groovy替代java,而是指Groovy和java很好的结合编程。数组

基本特色

一、构建在强大的Java语言之上 并 添加了从Python,Ruby和Smalltalk等语言中学到的 诸多特征,例如动态类型转换、闭包和元编程(metaprogramming)支持。闭包

二、为Java开发者提供了 现代最流行的编程语言特性,并且学习成本很低(几乎为零)。框架

三、支持DSL(Domain Specific Languages领域定义语言)和其它简洁的语法,让代码变得易于阅读和维护。eclipse

四、受检查类型异常(Checked Exception)也能够不用捕获。jvm

五、Groovy拥有处理原生类型,面向对象以及一个Ant DSL,使得建立Shell Scripts变得很是简单。编程语言

六、在开发Web,GUI,数据库或控制台程序时 经过 减小框架性代码 大大提升了开发者的效率。

七、支持单元测试和模拟(对象),能够 简化测试。

八、无缝集成 全部已经存在的 Java对象和类库。

九、直接编译成Java字节码,这样能够在任何使用Java的地方 使用Groovy。

十、支持函数式编程,不须要main函数。

十一、一些新的运算符。

十二、默认导入经常使用的包。

1三、断言不支持jvm的-ea参数进行开关。

1四、支持对对象进行布尔求值。

1五、类不支持default做用域,且默认做用域为public。

1六、groovy中基本类型也是对象,能够直接调用对象的方法。

动态类型

类型对于变量,属性,方法,闭包的参数以及方法的返回类型都是无关紧要的,都是在给变量赋值的时候才决定它的类型, 不一样的类型会在后面用到,任何类型均可以被使用,即便是基本类型 (经过自动包装(autoboxing)). 当须要时,不少类型之间的转换都会自动发生,好比在这些类型之间的转换: 字符串(String),基本类型(如int) 和类型的包装类 (如Integer)之间,能够把不一样的基本类型添加到同一数组(collections)中。

闭包

闭包就是可使用参数的代码片断,每一个闭包会被编译成继承groovy.lang.Closure类的类,这个类有一个叫call方法,经过该方法能够传递参数并调用这个闭包.它们能够访问并修改在闭包建立的范围内的变量,在闭包内建立的变量在闭包被调用的范围内一样能够被引用, 闭包能够保存在变量中并被做为参数传递到方法中。

语法

Groovy 语法与Java 语言的语法很类似,虽然 Groovy 的语法源于Smalltalk和Ruby这类语言的理念,可是能够将它想像成 Java 语言的一种更加简单、表达能力更强的变体。(在这点上,Ruby与 Groovy 不一样,由于它的语法与 Java 语法差别很大。)

许多 Java 开发人员喜欢 Groovy 代码和 Java 代码的类似性。从学习的角度看,若是知道如何编写 Java 代码,那就已经了解 Groovy 了。Groovy 和 Java 语言的主要区别是:完成一样的任务所需的 Groovy 代码比 Java 代码更少。

Groovy类和java类同样,彻底能够用标准java bean的语法定义一个Groovy类。但做为另外一种语言,可使用更Groovy的方式定义类,这样的好处是,能够少写一半以上的javabean代码。

(1)不需public修饰符

如前面所言,Groovy的默认访问修饰符就是public,若是Groovy类成员须要public修饰,则根本不用写它。

(2)不须要类型说明

一样前面也说过,Groovy也不关心变量和方法参数的具体类型。

(3)不须要getter/setter方法

在不少ide(如eclipse)早就能够为程序员自动产生getter/setter方法了,在Groovy中,不须要getter/setter方法--全部类成员(若是是默认的public)根本不用经过getter/setter方法引用它们(固然,若是必定要经过getter/setter方法访问成员属性,Groovy也提供了它们)。

(4)不须要构造函数

再也不须要程序员声明任何构造函数,由于实际上只须要两个构造函数(1个不带参数的默认构造函数,1个只带一个map参数的构造函数--因为是map类型,经过这个参数能够构造对象时任意初始化它的成员变量)。

(5)不须要return

Groovy中,方法不须要return来返回值。

(6)不须要()

Groovy中方法调用能够省略()(构造函数除外)。

相关文章
相关标签/搜索