2015-06-19 60 views
5

任何人都可以解释Groovy编译器的工作原理吗?它是否编译:Groovy编译器如何工作?

  1. Groovy代码 - > Java代码 - >字节码

  2. Groovy代码 - >字节码

  3. 其他一些方法

回答

9

Groovy的经由groovy grammar description解析与antlr源代码,然后生成利用asm

它不需要的javac

+1

真棒谢谢!我看到我现在在周末有一点点阅读。 :) – bholl

+3

只是为了完成tim说什么......编译一个groovy文件(或一堆)时,答案是正确的。如果Groovy编译器也应该编译java代码,那么它目前的代码如下: 1. Groovy代码 - > .java存根。 2. javac编译所有的java文件。 3. Groovy代码 - >上面的类文件,也使用javac生成的类。 这使得Groovy中的类可以使用Java中的类来使用Groovy中的类(依此类推)。在不同的编译步骤中仅仅分离文件将不再起作用。 – blackdrag

2

Groovy编译器似乎直接从源代码编译成字节码:

groovyc是Groovy编译器命令行工具。它允许你将 编译成字节码。它在Java世界扮演与javac 相同的角色。

来源:http://www.groovy-lang.org/groovyc.html

+0

感谢您的答复字节码。我明白这一点,并使用过groovyc。但是这篇文档没有说明Groovy编译器的功能。它可能在封面下使用javac吗? – bholl

+0

@bholl虽然我无法找到确认的信息,但我怀疑它确实如此。生成原始字节码要比生成编译为所需字节码的Java源码容易得多。 – jamestn529

+0

想象一下您创建包含标准Java代码的.groovy文件的情况。这不是理想的情况,但你可以做到。如果groovyc在正常的java代码环境下没有利用javac,这看起来像是groovyc编译器人员的大量重复工作。 – bholl