Ist der Java-Compiler von Eclipse nur ein Wrapper um denselben Kern, um den das javac
Programm gewickelt ist, oder handelt es sich insgesamt um einen separaten Compiler? Wenn letztere, warum sollten sie das Rad neu erfinden?
Eclipse hat einen eigenen Compiler namens Eclipse Compiler for Java (ECJ) implementiert .
Es unterscheidet sich vom javac, dem Compiler, der mit Sun JDK geliefert wird. Ein bemerkenswerter Unterschied besteht darin, dass Sie mit dem Eclipse-Compiler Code ausführen können, der nicht ordnungsgemäß kompiliert wurde. Wenn der Codeblock mit dem Fehler nie ausgeführt wird, läuft Ihr Programm einwandfrei. Andernfalls wird eine Ausnahme ausgelöst, die angibt, dass Sie versucht haben, nicht kompilierten Code auszuführen.
Ein weiterer Unterschied besteht darin, dass der Eclipse-Compiler inkrementelle Builds innerhalb der Eclipse-IDE zulässt, dh der gesamte Code wird kompiliert, sobald Sie mit der Eingabe fertig sind.
Die Tatsache, dass Eclipse mit einem eigenen Compiler geliefert wird, ist auch offensichtlich, da Sie Java-Code in Eclipse schreiben, kompilieren und ausführen können, ohne das Java SDK zu installieren.
Einige Beispiele, bei denen der EuGH javac vorgezogen wird, sind:
-proceedOnError
und es werden einfach keine .class-Dateien aus dem Quellcode mit Fehlern erstellt.Jeder hat bereits erklärt, dass sie anders sind. Hier sind einige Unterschiede im Verhalten, die ich zwischen den beiden Compilern festgestellt habe. Sie alle laufen auf einen Fehler in (mindestens) einer der Implementierungen hinaus.
Optimierung zur Kompilierungszeit
Generika Typ Inferenz bezogen
quelle
Der in Eclipse integrierte Compiler basiert auf dem Java-Compiler Jikes von IBM . (Beachten Sie, dass Eclipse auch bei IBM angefangen hat). Es ist völlig unabhängig vom Java-Compiler von Sun im JDK. Es ist keine Hülle um Suns
javac
.Jikes gibt es schon lange, es war früher viel schneller als der Standard-JDK-Java-Compiler (aber ich weiß nicht, ob das noch stimmt). Warum IBM einen eigenen Java-Compiler schreiben wollte: möglicherweise aus Lizenzgründen (sie haben auch eine eigene Java-Implementierung).
quelle
Es ist insgesamt ein separater Compiler. Dies ist erforderlich, da Javac das Kompilieren von leicht fehlerhaftem Code von der Eclipse-Site nicht zulässt
quelle