2015-06-19 61 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