Распределенный Java-компилятор - PullRequest
14 голосов
/ 19 января 2010

Существует ли распределенный компилятор для Java, аналогичный distcc для C / C ++?

Ответы [ 5 ]

16 голосов
/ 19 января 2010

Прямой ответ на ваш вопрос "нет". Тем не менее, это, вероятно, не помогло бы вам в любом случае ... компиляция Java очень быстрая.

В небольшом проекте компиляция достаточно быстрая, и вам на самом деле все равно. В большом проекте вам нужно будет создать файл для компиляции по сети, а также, возможно, придется также перебросить много мегабайт зависимостей.

Единственное, что вы можете сделать, чтобы улучшить скорость компиляции, - это использовать компилятор eclipse вместо Sun javac. Компилятор Eclipse является многопоточным и, если повезет, будет использовать все ядра вашей машины.

Вероятно, стоит также упомянуть, что Apple также недавно сократила поддержку distcc , поскольку в целом на более новом оборудовании требуется больше времени для получения кода для компиляции и возврата в другом месте, чем для просто сделайте сборку локально. Чтобы процитировать Apple:

Производительность компоновки Xcode для одного компьютера была улучшена до такой степени, что распределенное построение с помощью распределенных сетевых сборок в большинстве случаев медленнее, чем локальные сборки.

3 голосов
/ 19 января 2010

Если вас раздражает долгое ожидание ваших Java-компиляций, то вы можете рассмотреть один из следующих вариантов:

  • разбейте ваш проект на несколько разных jar-файлов (в иерархической зависимости). Если повезет, ваши изменения будут влиять только на источник в одном из этих jar-файлов, в то время как другие могут продолжать служить в качестве зависимостей.
  • разбейте ваш проект на группы источников, возможно, по пакетам, и используйте Apache ant для координации вашей компиляции. Мне всегда было лень его использовать, но вы можете настроить явное управление зависимостями, чтобы избежать повторной компиляции, для которой файлы .class уже существуют и новее исходного кода. Усилия, которые потребуются для настройки этого, могут принести дивиденды в течение нескольких дней, если проект большой, а компиляции занимают много времени.

В отличие от многоканальной, сокращение объема кода, который необходимо перекомпилировать, также уменьшит энергопотребление вашего ПК и углеродный след;)

2 голосов
/ 17 июля 2012

Я написал начало для java6

http://www.pointdefence.net/jarc/index.html

Он распространяется в задаче компилятора javaТак что это будет хорошо работать с параллельной компиляцией независимых модулей Maven.

2 голосов
/ 19 января 2010

Может быть Jikes будет работать для вас. Вы можете добиться очень похожих эффектов с помощью умного муравьиного сценария и nfs, как файловая система ...

0 голосов
/ 17 августа 2011

Я думаю, что параллельная компиляция независимых модулей Maven должна быть довольно простой, используя несколько простых скриптов - просто вытащите из управления версиями, измените dir и запустите mvn clean compile. Добавьте mvn deploy, чтобы получить артефакт в хранилище артефактов.

Это должно работать даже с зависимыми модулями, хотя потребуется некоторая работа по синхронизации.

...