2015-06-19 6 views

Antwort

9

Groovy analysiert den Quellcode mit antlr über die groovy grammar description, erzeugt dann Bytecode asm

mit ihm nicht javac

+1

Super danke! Ich sehe, ich habe jetzt ein wenig Licht für das Wochenende. :) – bholl

+3

nur um zu vervollständigen, was tim sagte ... beim kompilieren einer groovy-datei (oder eine reihe von ihnen) die antwort ist richtig. Wenn der Groovy-Compiler auch Java-Code kompilieren soll, dann tut es momentan folgendes: 1. Groovy-Code -> .java stubs. 2. javac kompiliert alle Java-Dateien. 3. Groovy-Code -> Klassen-Dateien wie oben, mit den Java-Klassen produziert auch. Dies ermöglicht das Erstellen von Klassen in Groovy, die Klassen in Java verwenden, die Klassen in Groovy verwenden (und so weiter). Auf eine Ebene, auf der die bloße Trennung von Dateien in verschiedenen Kompilierungsschritten nicht mehr funktioniert. – blackdrag

2

Der Groovy-Compiler scheint Kompilieren direkt von Quelle zu Bytecode:

groovyc ist das Groovy-Compiler-Befehlszeilenprogramm. Es ermöglicht Ihnen, Groovy Quellen in Bytecode zu kompilieren. Es spielt die gleiche Rolle wie javac in der Java-Welt.

Quelle: http://www.groovy-lang.org/groovyc.html

+0

Danke für die Antwort benötigen. Ich verstehe das und habe groovyc schon einmal benutzt. Aber diese Dokumentation sagt nicht, was der Groovy-Compiler tut. Verwendet es vielleicht Javac unter der Decke? – bholl

+0

@bholl Obwohl ich keine Informationen finden kann, um es zu bestätigen, bezweifle ich, dass dies der Fall ist. Es wäre viel einfacher, einen rohen Bytecode zu erzeugen, als eine Java-Quelle zu erzeugen, die zu dem gewünschten Bytecode kompiliert. – jamestn529

+0

Stellen Sie sich vor, Sie erstellen eine .groovy-Datei, die Standard-Java-Code enthält. Dies ist nicht die ideale Situation, aber Sie können es tun. Wenn groovyc javac irgendwie unter normalen Java-Code-Umständen nicht ausnutzt, scheint das eine Menge Doppelarbeit für die Groovyc-Compiler-Typen zu sein. – bholl

Verwandte Themen