一直想抽些时间回顾一下Groovy,非常感谢Groovy,虽然只使用了其很小一部分功能,却给项目运行带来了极大的便利。
该博客用于帮助那些需要在Java中集成Groovy的童鞋们。
一.Groovy简单了解
1.简介
Groovy 是 用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。
Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使Groovy 与 Java 代码的互操作很容易。(注意:不是指Groovy替代java,而是指Groovy和java很好的结合编程。
有人说,Groovy 是下一代的Java语言,不是说Groovy会替代Java,读者如果看过Java8 之 lambda表达式 与 Stream,不难发现lambda和Groovy中的闭包非常相似,Stream也融入了Groovy的思想,所以Java会越来越像Groovy。
2.基本特性
(1). 构建在强大的Java语言之上 并 添加了从Python,Ruby和Smalltalk等语言中学到的 诸多特征,例如动态类型转换、闭包和元编程(metaprogramming)支持。。
(2).为Java开发者提供了 现代最流行的编程语言特性,而且学习成本很低(几乎为零)。
(3). 支持DSL(Domain Specific Languages领域定义语言)和其它简洁的语法,让代码变得易于阅读和维护。
(4).受检查类型异常(Checked Exception)也可以不用捕获。
(5). Groovy拥有处理原生类型,面向对象以及一个Ant DSL,使得创建Shell Scripts变得非常简单。
(6).在开发Web,GUI,数据库或控制台程序时 通过 减少框架性代码 大大提高了开发者的效率。
(7).支持单元测试和模拟(对象),可以 简化测试。
(8).无缝集成 所有已经存在的 Java对象和类库。
(9).直接编译成Java字节码,这样可以在任何使用Java的地方 使用Groovy。
(10).支持函数式编程,不需要main函数。
(11).一些新的运算符。
(12).默认导入常用的包。
(13).断言不支持jvm的-ea参数进行开关。
(14).支持对对象进行布尔求值。
(15).类不支持default作用域,且默认作用域为public。
(16).groovy中基本类型也是对象,可以直接调用对象的方法。
二.Java中使用Groovy的三种方式
注:该Maven项目需要加入groovy-all包的依赖,这里使用的是最新的2.4.3版本。Eclipse中最好安装groovy的插件,便于调试。
1.使用GroovyShell执行groovy脚本
(1).通过evaluate方法执行groovy片段
GroovyShell类提供一个evaluate方法,可直接运行一段字符串标示的groovy片段,如
// 调用evaluate方法直接执行一段Groovy
public static void testGroovy1() throws CompilationFailedException, IOException {
GroovyShell groovyShell = new GroovyShell();
groovyShell.evaluate("