与java的友好性有俩方面:与java运行时环境无缝集成和与java相似的语法。
无缝集成
如图显示groovy的集成情况:groovy运行在java虚拟机,java的类库也可以继续使用,Groovy仅仅是创建java类的一种新的途径——通过在运行时创建,groovy是使用了额外jar文件为依赖的java。
因此,从groovy 调用java 是没有任何问题的。
当使用groovy 开发的时候,你不需要得到任何通知就可以这样做,每一个groovy 的类型(groovy type)都是java.lang.Object 的子类。
每一个groovy 对象都是一个类的实例。
一个groovy date 对象是java.util.Date 的实例等等。
反向集成也是非常容易,假设一个groovy 类MyGroovyClass 被编译到一个以“.class”结尾的文件中,并且把它放在java 的classpath 中,那么你能在java 类中以一个类的形式使用这个groovy 类new MyGroovyClass(); //create from java
换句话说,实例化一个groovy 类与实例化一个java 类是一样的,在这之后,一个groovy类就是一个java 类,你能在这个实例上调用类的方法,传参数给方法等等,JVM 根本不知道运行的代码是通过groovy 编写的。