同时编译10000个java项目

时间:2011-08-18 10:41:05

标签: java compiler-construction parallel-processing

任何人都知道如何同时编译和运行巨大的java项目(假设每次请求)我可以用于sun jdk这种情况。有分布式编译的方法吗?

2 个答案:

答案 0 :(得分:2)

您可以使用ToolProvider api以编程方式启动编译。 (请参阅this tutorial寻求帮助)

以此为出发点,您只需要创建适当的抽象来定义项目是什么(源文件夹,类路径等),并且您有一个很薄的前端来编译多个项目。

我可能会使用ThreadPool来实现实际的编译:

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

或者,如果您不能使用线程,请使用带有commons / pool等库的编译器池(或编译器持有者)。

无论哪种方式,您都可以拥有以下工作流程:

  1. 请求来自
  2. 将请求转换为项目定义
  3. 请求免费编译器或将项目放入队列
  4. 编译
  5. 返回编译作业的句柄,因此客户端可以异步轮询状态

答案 1 :(得分: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子模块)