Быстрее javac / муравей? - PullRequest
       28

Быстрее javac / муравей?

5 голосов
/ 27 апреля 2009

Я считаю, что Java запускается и работает практически мгновенно для меня - но javac занимает несколько секунд, и ant снова замедляет его. Это всего лишь несколько секунд, но мой цикл edit-compile-test был бы более плавным без него. : -)

Кстати: я уже использовал vim ": make" с муравьем.

Есть ли способ ускорить javac и / или ant? Я думаю о специальных выключателях или трюках? Или, может быть, альтернативный компилятор Java (я использую 1.6, в Linux)

Ответы [ 5 ]

4 голосов
/ 27 апреля 2009

Eclipse делает это для вас ... но это, вероятно, немного большой "патч" для вашей проблемы.

Кроме того, вы можете свернуть свой собственный плагин компилятора. Есть два подхода:

  1. Запустите java-компилятор изнутри ant (вместо создания нового процесса). Не уверен, что муравей уже делает это; если нет, то это сэкономит вам немного времени. Подробнее смотрите в API компилятора Java 6 .

  2. Запустите javac в процессе сервера, который прослушивает параметры сокета. В ant отправьте процессу командную строку и дождитесь отправки вывода. Сохраняет вас запуск нового процесса все время.

  3. Попробуйте использовать компилятор eclipse. В отличие от исходного javac, компилятор Eclipse довольно хорошо «игнорирует» ошибки, поэтому он может создавать файлы классов, даже если они содержат ошибки. Кажется, это мало что значит, но позволяет вам все время компилировать в фоновом режиме. Когда вы сделаете свое последнее сохранение (завершение всего), компилятор сможет скомпилировать все остальное и просто посмотреть на один файл.

3 голосов
/ 28 апреля 2009

Google нашел эти два (я еще не пробовал)

  1. javac -J-client -J-Xms100m -J-Xmx100m <src>

  2. JBrownie"отслеживает исходный код Java и автоматически перекомпилирует любые найденные файлы, измененные" по принципу Аарона Дигуллы (2)

1 голос
/ 27 апреля 2009

Я настоятельно рекомендую использовать подходящую IDE с Java, поскольку повышение производительности благодаря использованию редактора, который знает о вашей программе, огромен. Подумайте о «Перейти к строке, содержащей определение переменной / класса / поля, на котором находится курсор», «Переименовать этот класс и все ссылки на него» и обо всех других приятных вещах. Если вас раздражает время, необходимое для вызова Java, возможно, вы готовы:)

0 голосов
/ 28 апреля 2009

Я указываю все мои выходные файлы на виртуальный диск, который я создаю с помощью этой утилиты . Он ускоряет сборку (хотя и не в волшебной степени), поскольку почти все находится в памяти. Это наиболее заметно при выполнении «чистой» сборки, которая становится практически мгновенной.

0 голосов
/ 27 апреля 2009

Возможно, вы захотите взглянуть на JavaRebel

...