Ответ 1
javac (как "java compiler" ) - это исполняемый файл, который может быть теоретически даже зависимым от платформы исполняемым файлом или script. Это вызывается для компиляции .java
в .class
.
В окнах это имя javac.exe
, и оно обычно находится ниже C:\Program Files*\jdk*\bin
.
Этот компилятор был разработан и в java. Это означает, что если мы запустим этот .exe, нужно запустить новую виртуальную машину Java. Это медленно.
Но, поскольку он был написан на Java, существует намного более быстрая альтернатива: из уже запущенного jvm мы просто import
его основной класс (f.e. javax.tools.JavaCompiler
или такой) и вызываем это. Это не нужно запускать ненужный jvm. Это то, что делает maven. Просто 10 лет было достаточно, чтобы сделать это правильно.: -)
Конечно, у него также есть запасные части. Наиболее вероятной причиной является то, что в случае внутреннего компилятора он должен запускаться из одного и того же jvm и в том же пространстве имен, что и ядро maven. Также указание альтернативного jvm невозможно, и могут быть и некоторые побочные эффекты, возникающие в результате конфликтов пространства имен. Но они очень маловероятны, потому что оба они хорошо спроектированы.