Eclipse внедрил собственный компилятор, который называется Eclipse Compiler for Java (ECJ).
Он отличается от javac, компилятора, поставляемого с Sun JDK. Одно заметное отличие состоит в том, что компилятор Eclipse позволяет запускать код, который на самом деле не компилировался должным образом. Если блок кода с ошибкой никогда не запускается, ваша программа будет работать нормально. В противном случае будет выдано исключение, указывающее, что вы пытались запустить код, который не компилируется.
Другое отличие состоит в том, что компилятор Eclipse допускает инкрементные сборки из Eclipse IDE, то есть весь код компилируется, как только вы заканчиваете ввод.
Тот факт, что Eclipse поставляется с собственным компилятором, также очевиден, поскольку вы можете писать, компилировать и запускать код Java в Eclipse, даже не устанавливая Java SDK.
Вот несколько примеров, когда ECJ предпочтительнее javac: