Компиляция 10000 проекта Java одновременно - PullRequest
1 голос
/ 18 августа 2011

Любой, кто знает, как компилировать и запускать огромное количество java-проектов одновременно (предположим, запрос приходит каждый раз), может ли я использовать для Sun JDK в этой ситуации. Есть ли способ распределенной компиляции?

Ответы [ 2 ]

2 голосов
/ 18 августа 2011

Вы можете использовать API ToolProvider для программного запуска компиляции.(см. этот учебник для справки)

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

Я бы, вероятно, использовал ThreadPool для реализации фактической компиляции:

ExecutorService threadPool = 
    Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());

Или, если вы не можете использовать потоки, используйте пул компиляторов(или держатели компилятора) с библиотекой типа commons / pool .

В любом случае, вы можете иметь этот рабочий процесс:

  1. Запрос приходит
  2. преобразовать запрос в определение проекта
  3. либо запросить бесплатный компилятор, либо поместить проект в очередь
  4. compile
  5. вернуть дескриптор задания компиляции, чтобы клиент могопросить статус асинхронно
0 голосов
/ 18 августа 2011

Maven начинает поддерживать его ... но почему? За то время, которое требуется для параллельной сборки Firefox (типичного большого приложения на C ++), скажем, на Core 2 Duo, вы, вероятно, могли бы создать как минимум 5000 независимых приложений Java, если ваш процесс сборки был правильно склеен. .

(За время, необходимое для создания примерно полдюжины или около того больших объектов C ++ для Firefox на моем MacBook Pro, я мог бы, вероятно, построить целое веб-приложение CAS, содержащее несколько сотен классов Java и около 12-18 подмодулей Maven)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...