Eclipse имеет свой собственный компилятор (JDT). Он не использует компилятор javac.exe. Вопрос в том, как добиться такого короткого времени компиляции?
Внутренняя структура данных, поддерживаемая Eclipse для представления Java-программы (AST), является той же структурой данных, которая используется компилятором JDT. Такое совместное использование данных позволяет компилятору работать быстрее, так как не требуется повторная компиляция всей программы (или даже всего файла) снова.
Кроме того, в отличие от javac.exe, компилятор JDT находится внутри Eclipse. Это не отдельный процесс, поэтому его не нужно загружать (операционной системой) так же, как это делает javac.exe.
В дополнение к этому (и это справедливо для всех компиляторов Java), Java имеет динамическое связывание. Каждый класс связан с программой, когда он загружается во время выполнения программы. Это избавляет от необходимости фазы связывания в конце компиляции (а-ля C / C ++ / C #). Фаза связывания, как правило, довольно продолжительна, поскольку она обрабатывает программу в целом (в отличие от компиляции, которая выполняется для каждого файла отдельно). Таким образом, связывание становится медленнее по мере роста программы. Такие методы, как инкрементное связывание, смогли смягчить это замедление, но не полностью.
Учитывая, что Java не требует (статического) связывания, вы можете перейти в состояние, когда программа на Java готова к работе намного быстрее, чем на других (статически связанных) языках.