В Eclipse реализован собственный компилятор под названием Eclipse Compiler for Java (ECJ). Этот тег предназначен для вопросов, касающихся поведения этого компилятора.

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

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

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

Дальнейшее чтение: в чем разница между javac и компилятором Eclipse?(откуда взят приведенный выше текст).