【Groovy起步】
参考书:《Manning-Groovy in Action》和《Programming Groovy Dynamic Productivity for The Java Developer》
【实验环境】
JAVA:JDK16
Groovy:1.6.5
环境变量: JAVA_HOME, PATH,GROOVY_HOME
IDE:Eclipse34插件 http://dist.codehaus.org/groovy/distributions/update/
【1】Groovy运行方式
Groovy 的Class文件可以以两种方式运行在JVM中。
预编译方式:使用groovyc编译Code.groovy文件为Code.class文件,再使用Java ClassLoader加载,并运行在JVM中。即使用groovyc 编译Code.groovy 成Code.class文件,再使用java 命令运行Code.class。
直接运行方式:直接使用Groovy ClassLoader加载Code.groovy文件到JVM中运行。
第一种方式举例:
Code.groovy(有main方法)
在包cn.gwssi.groovy中
在windows系统中的位置是c:\cn\gwssi\groovy\Code.groovy
打开一个命令台
使用groovyc编译
C:\>groovyc cn/gwssi/groovy/Code.groovy
使用java运行
C:\>java -cp %GROOVY_HOME%/embeddable/groovy-all-1.6.5.jar; cn.gwssi.groovy.Code
第二种方式说明:
Groovy解析器(parser)为Code.groovy生成一个抽象语法树(Abstract Syntax Tree, AST)。
Groovy Class 生成器根据AST生成class文件。
Groovy ClassLoader加载class文件到内存中。
整个过程不会看到class文件
特性简单总结:
解析过程是按行的(对应IDE中的语法提示),但执行不是按行的。
最终要生成class文件,由类加载器加载成byteCode到JVM中运行。
这个ByteCode是不能再改变的,但Groovy支持在运行时动态选择要执行的内容。虽然ByteCode不能变,但我可以动态选择要执行的内容。实现起来用两种方式:getMetaClass和evaluate。