Groovy起步

【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。

你可能感兴趣的:(java,jvm,maven,ide,groovy)