转: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中方法调用能够省略()(构造函数除外)。