Le compilateur Java d'Eclipse est-il juste un wrapper autour du même noyau que le javac
programme est enveloppé, ou s'agit-il d'un compilateur distinct? Si ces derniers, pourquoi réinventeraient-ils la roue?
Eclipse a implémenté son propre compilateur appelé Eclipse Compiler for Java (ECJ).
Il est différent du javac, le compilateur fourni avec Sun JDK. Une différence notable est que le compilateur Eclipse vous permet d'exécuter du code qui n'a pas été correctement compilé. Si le bloc de code avec l'erreur n'est jamais exécuté, votre programme fonctionnera correctement. Sinon, il lèvera une exception indiquant que vous avez essayé d'exécuter du code qui ne se compile pas.
Une autre différence est que le compilateur Eclipse permet des constructions incrémentielles à partir de l'IDE Eclipse, c'est-à-dire que tout le code est compilé dès que vous avez fini de taper.
Le fait qu'Eclipse soit livré avec son propre compilateur est également apparent car vous pouvez écrire, compiler et exécuter du code Java dans Eclipse sans même installer le SDK Java.
Voici quelques exemples où la CJE est préférée à javac:
-proceedOnError
et il ne produira tout simplement pas de fichiers .class à partir de la source avec des erreurs.Tout le monde a déjà expliqué qu'ils étaient différents. Voici quelques différences de comportements que j'ai remarquées entre les deux compilateurs. Ils se résument tous à un bug dans (au moins) l'une des implémentations.
Optimisation à la compilation liée
Inférence de type générique
la source
Le compilateur intégré d'Eclipse est basé sur le compilateur Java Jikes d'IBM . (Notez qu'Eclipse a également commencé sa vie chez IBM). Il est complètement indépendant du compilateur Java de Sun dans le JDK; il n'est pas une enveloppe autour de Sun
javac
.Jikes existe depuis longtemps, il était beaucoup plus rapide que le compilateur Java JDK standard (mais je ne sais pas si c'est toujours vrai). Quant à savoir pourquoi IBM voulait écrire son propre compilateur Java: peut-être pour des raisons de licence (ils ont également leur propre implémentation Java).
la source
Il s'agit d'un compilateur distinct. Cela est nécessaire car javac ne permet pas la compilation de code légèrement cassé, à partir du site eclipse
la source