当谈论groovy和java的区别的时候,比较的是两者源代码的区别,但是groovy联合java之后非常强大,在后台,所有的groovy代码都运行在JVM中并且使用的是java对象模型,不管你写的是groovy类,或者是groovy脚本,它们都作为java类在JVM中运行。 在JVM中运行groovy类有两种方式:
使用groovyc编译所有的*.groovy为java的*.class文件,把这些*.class文件放在java类路径中,通过java类加载器来加载这些类。
通过groovy的类加载器在运行时直接加载*.groovy文件并且生成对象,在这种方式下,没有生成任何*.class,但是生成了一个java.lang.Class对象的实例,也就是说,当groovy代码中包括一个new MyClass()的表达式时,并且也有一个MyClass.groovy的文件,这个文件将被解释,一个MyClass的类型将被产生并且增加到类加载器中,在代码中将像从*.class一样获取到MyClass对象。
groovy源代码可以使用groovyc编译,然后通过java类加载器加载,也可以直接通过groovy类加载器直接加载