2011-08-18 68 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. 返回编译作业的句柄,所以客户端可以异步轮询状态