Quelle est la différence entre javac et le compilateur Eclipse?


Le compilateur Java d'Eclipse n'est-il qu'un wrapper autour du même noyau que le programme javac, ou s'agit-il d'un compilateur séparé? Si ce dernier, pourquoi réinventeraient-ils la roue?

Author: sevenforce, 2010-06-17

4 answers

Eclipse a implémenté son propre compilateur appeléCompilateur Eclipse pour 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é compilé correctement. 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 compile pas.

Un autre la différence est que le compilateur Eclipse permet des constructions incrémentales à partir de l'EDI 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 évident 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 CJCE est préférée à javac:

  • Apache Tomcat utilise ECJ pour compiler les JSP,
  • Il s'agit d'un compilateur GNU pour Java (GCJ) 4.3,
  • La CJG s'intègre à la CJCE,
  • Liferay construit avec la CJCE.
 183
Author: jjnguy, 2013-05-09 20:54:27

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 bogue dans (au moins) l'une des implémentations.

Optimisation liée à la compilation

L'inférence de type générique liée

 34
Author: polygenelubricants, 2017-05-23 12:25:52

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; ce n'est pas un wrapper 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).

 14
Author: Jesper, 2010-06-17 12:47:18

C'est un compilateur complètement séparé. Ceci est nécessaire car javac ne permet pas la compilation de code légèrement cassé, à partir de du site eclipse

Un compilateur Java incrémental. Implémenté en tant que constructeur Eclipse, il est basé sur la technologie développée à partir du compilateur VisualAge for Java. En particulier, il permet d'exécuter et de déboguer du code qui contient encore des erreurs non résolues.

 13
Author: BenM, 2011-09-28 13:14:24