Является ли Java-компилятор Eclipse просто оболочкой вокруг того же ядра, в javac
которое обернута программа, или это отдельный компилятор? Если последнее, зачем им изобретать велосипед?
Является ли Java-компилятор Eclipse просто оболочкой вокруг того же ядра, в javac
которое обернута программа, или это отдельный компилятор? Если последнее, зачем им изобретать велосипед?
Ответы:
В Eclipse реализован собственный компилятор, называемый Eclipse Compiler for Java (ECJ).
Он отличается от javac, компилятора, поставляемого с Sun JDK. Одно заметное отличие состоит в том, что компилятор Eclipse позволяет запускать код, который на самом деле не компилировался должным образом. Если блок кода с ошибкой никогда не запускается, ваша программа будет работать нормально. В противном случае он выдаст исключение, указывающее, что вы пытались запустить код, который не компилируется.
Другое отличие состоит в том, что компилятор Eclipse допускает инкрементные сборки внутри Eclipse IDE, то есть весь код компилируется, как только вы закончите вводить текст.
Тот факт, что Eclipse поставляется с собственным компилятором, также очевиден, поскольку вы можете писать, компилировать и запускать код Java в Eclipse, даже не устанавливая Java SDK.
Вот несколько примеров, где ECJ предпочтительнее javac:
-proceedOnError
и он просто не будет создавать файлы .class из источника с ошибками.
Все уже объяснили, что они разные. Вот некоторые различия в поведении, которые я заметил между двумя компиляторами. Все они сводятся к ошибке (по крайней мере) в одной из реализаций.
Встроенный компилятор Eclipse основан на Java-компиляторе Jikes IBM . (Обратите внимание, что Eclipse также начал свою жизнь в IBM). Он полностью независим от Java-компилятора Sun в JDK; это не обертка вокруг Солнца javac
.
Jikes существует уже давно, раньше он был намного быстрее, чем стандартный JDK Java-компилятор (но я не знаю, так ли это до сих пор). Что касается того, почему IBM хотела написать свой собственный компилятор Java: возможно, по причинам лицензирования (у них также есть своя собственная реализация Java).
Это отдельный компилятор. Это необходимо, поскольку javac не позволяет компилировать слегка испорченный код с сайта Eclipse.
Инкрементный компилятор Java. Реализованный как Eclipse-компоновщик, он основан на технологии, разработанной на основе VisualAge для компилятора Java. В частности, он позволяет запускать и отлаживать код, который все еще содержит неразрешенные ошибки.