使用 groovyc 编译 groovy

编译groovy是很简单的,因为groovy包括了一个名叫groovyc的编译器,groovyc 编译器为每个groovy源文件产生至少一个类文件。

作为例子,我们通过运行groovyc来编译上节的Fibonacci.groovy文件为一个一般的java字节码:> groovyc –d classes Fibonacci.groovy在我们的这个例子中,groovyc产生一个父类为groovy.lang.Script的java类,这个类包括一个main方法,因此java能直接运行它,编译出来的class的名称同脚本的名称是一致的,在这里为Fibonacci。

根据编写的groovy代码,编译器也许会产生更多的类,不管怎样,我们不需要关心它,因为它是java平台的话题,本质上,groovyc的编译方式与javac的编译方式是相同的。

注意:Fibonacci脚本包括了代码“10.times{}”结构导致groovyc产生一个类型 为Closure的类,代码的实现是花括号内的代码,这个类嵌套在Fibonacci.class中。

类文件的实现映射显示在表1.2中,包括了每一个类的详细解释。

表 groovyc为Fibonacci.groovy文件产生的类
[table]
[tr][td=163] [align=left]类文件[/align] [/td][td=180][align=left][align=left]父类[/align][/align][/td][td=225][align=left][align=left]作用[/align][/align][/td][/tr]
[tr][td=163][align=left]
[align=left]Fibonacci.class[/align]

[align=left]Fibonacci$_run_cl osure1.class[/align][/align][/td][td=180][align=right]
[align=left]groovy.lang.Script[/align]

[align=left]groovy.lang.Closure[/align][/align][/td][td=225][align=right][align=left]为了Java命令中运行,包括了一个[/align]
[align=left]main方法 处理在10次循环中每次循环所做的[/align] [align=left]工作,目前可以忽略它[/align][/align][/td][/tr]
[/table]