Groovy是
JVM的一个替代语言(替代是指能够用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与
Spring的动态语言支持一块儿使用,设计时充分考虑了Java集成,这使 Groovy 与 Java 代码的互操做很容易。(注意:不是指Groovy替代java,而是指Groovy和java很好的结合编程。[1]
基本特色
二、为Java开发者提供了 现代最流行的编程语言特性,并且学习成本很低(几乎为零)。
三、 支持
DSL(Domain Specific Languages领域定义语言)和其它简洁的语法,让代码变得易于阅读和维护。
四、受检查类型异常(Checked Exception)也能够不用捕获。
五、 Groovy拥有处理原生类型,
面向对象以及一个Ant DSL,使得建立Shell Scripts变得很是简单。
六、在开发Web,
GUI,数据库或控制台程序时 经过 减小框架性代码 大大提升了开发者的效率。
七、支持
单元测试和模拟(对象),能够 简化测试。
八、无缝集成 全部已经存在的 Java对象和类库。
九、直接编译成Java
字节码,这样能够在任何使用Java的地方 使用Groovy。[2]
十二、默认导入经常使用的包。
1三、断言不支持jvm的-ea参数进行开关。
1四、支持对对象进行布尔求值。
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 代码更少。