2011-08-18 62 views
1

任何一個知道如何編譯運行java項目的巨大數據(假設每次都需要調用)我可以爲這個情況使用sun jdk。有沒有辦法分發編譯?同時編譯java項目的10000個

+1

你想要做什麼? –

+0

你如何跟蹤依賴關係? – SJuan76

+0

爲什麼你需要爲每個請求編譯你的代碼? –

回答

0

Maven is starting to support it ...但是爲什麼?在一個Core 2 Duo上做一個並行構建Firefox(一個典型的大型C++應用程序)的時間,只要您的構建過程被正確地粘合在一起,您可能可以構建至少5,000個獨立的Java應用程序。我需要在MacBook Pro上爲Firefox打造大約六打左右的大型C++對象,我可能會構建整個CAS webapp,其中包含幾百個Java類和大約12-18個Maven子模塊)

2

您可以使用ToolProvider api以編程方式啓動編譯。 (請參閱this tutorial尋求幫助)

以此爲起點,您只需創建適當的抽象來定義項目(源文件夾,類路徑等),並且您有一個用於編譯多個項目的精簡前端。

我可能會使用一個線程池來實現實際編譯:

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

或者,如果你不能使用線程,使用編譯器(或編譯器持有人)的池像commons/pool庫。

無論哪種方式,你可以有這樣的工作流程:

  1. 請求進入
  2. 變換請求項目定義
  3. 或者索取免費編譯器或把該項目在隊列
  4. 編譯
  5. 返回編譯作業的句柄,所以客戶端可以異步輪詢狀態