【问题标题】:How does the Groovy compiler work?Groovy 编译器是如何工作的?
【发布时间】:2015-06-19 20:01:44
【问题描述】:

谁能解释一下 Groovy 编译器的工作原理?是否编译:

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

  2. Groovy 代码 -> 字节码

  3. 其他方法

【问题讨论】:

    标签: groovy


    【解决方案1】:

    Groovy 通过groovy grammar description 解析带有antlr 的源代码,然后使用asm 生成字节码

    不需要javac

    【讨论】:

    • 非常感谢!我知道我现在周末有一点轻松的阅读。 :)
    • 只是为了完成蒂姆所说的......当编译一个 groovy 文件(或一堆文件)时,答案是正确的。如果 Groovy 编译器也应该编译 java 代码,那么它当前执行以下操作: 1. Groovy 代码 -> .java 存根。 2. javac 编译所有java文件。 3. Groovy 代码 -> 像上面一样的类文件,也使用 javac 生成的类。这允许在 Groovy 中创建类,使用 Java 中的类,使用 Groovy 中的类(等等)。到了在不同编译步骤中仅仅分离文件将不再起作用的水平。
    【解决方案2】:

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

    groovyc 是 Groovy 编译器命令行工具。它允许您 将 Groovy 源代码编译成字节码。与javac作用相同 在 Java 世界中。

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

    【讨论】:

    • 感谢您的回复。我理解这一点,并且以前使用过 groovyc。但是这个文档没有说明 Groovy 编译器的作用。它可能在幕后使用 javac 吗?
    • @bholl 虽然我找不到信息来确认它,但我怀疑它确实如此。生成原始字节码比生成编译为所需字节码的 Java 源代码要容易得多。
    • 想象一下您创建一个包含标准 Java 代码的 .groovy 文件的情况。这不是理想的情况,但你可以做到。如果 groovyc 在正常的 java 代码环境下没有以某种方式利用 javac,这对于 groovyc 编译器的人来说似乎是很多重复的工作。
    • @bholl 在这种情况下,它实际上可能使用 javac,但没有 Groovy 代码必须通过它。
    猜你喜欢
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 2014-04-03
    相关资源
    最近更新 更多