Каково различие между javac и компилятором Eclipse?

Компилятор Java Eclipse просто обертка вокруг того же ядра что javac программа переносится, или действительно ли это - отдельный компилятор в целом? Если бы последний, почему они изобрели бы велосипед?

192
задан sepp2k 8 March 2019 в 10:43
поделиться

4 ответа

В Eclipse реализован собственный компилятор, называемый Eclipse Compiler for Java (ECJ).

Он отличается от javac, компилятора, поставляемого с Sun JDK. Одно из заметных отличий заключается в том, что компилятор Eclipse позволяет запускать код, который на самом деле не был правильно скомпилирован. Если блок кода с ошибкой никогда не будет запущен, ваша программа будет работать нормально. В противном случае будет выброшено исключение, указывающее на то, что вы пытались запустить код, который не компилируется.

Еще одно отличие заключается в том, что компилятор Eclipse позволяет выполнять инкрементальную сборку из среды Eclipse IDE, то есть весь код компилируется сразу после того, как вы закончили набор текста.

Тот факт, что Eclipse поставляется с собственным компилятором, также очевиден, поскольку вы можете писать, компилировать и запускать Java-код в Eclipse, даже не устанавливая Java SDK.

Несколько примеров, когда ECJ предпочтительнее javac:

  • Apache Tomcat использует ECJ для компиляции JSP,
  • IntelliJ IDEA имеет поддержку ECJ, по состоянию на GNU Compiler for Java (GCJ) 4.3,
  • GCJ интегрируется с ECJ,
  • Liferay собирается с ECJ.
202
ответ дан 23 November 2019 в 05:31
поделиться

Все уже объяснили, что они разные. Вот некоторые различия в поведении двух компиляторов, которые я заметил. Все они сводятся к ошибке (по крайней мере) в одной из реализаций.

Связанная с оптимизацией времени компиляции

Связано с определением типа Generics

35
ответ дан 23 November 2019 в 05:31
поделиться

Встроенный компилятор Eclipse основан на Jikes java compiler компании IBM. (Обратите внимание, что Eclipse также начинал свою жизнь в IBM). Он полностью независим от компилятора Java компании Sun в JDK; это не обертка вокруг javac компании Sun.

Jikes существует уже давно, раньше он был намного быстрее, чем стандартный компилятор Java в JDK (но я не знаю, так ли это сейчас). Что касается того, почему IBM хотела написать свой собственный компилятор Java: возможно, по причинам лицензирования (у них также есть своя реализация Java).

17
ответ дан 23 November 2019 в 05:31
поделиться

Это вообще отдельный компилятор. Он необходим, так как javac не позволяет компилировать слегка поломанный код, с сайта eclipse

Инкрементный компилятор Java. Реализован в виде конструктора Eclipse, основан на технологии, развитой из компилятора VisualAge for Java. В частности, он позволяет запускать и отлаживать код, который все еще содержит нерешенные ошибки.

14
ответ дан 23 November 2019 в 05:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: