【问题标题】:compiling 10000 of java project simultaneously同时编译10000个java项目
【发布时间】:2011-10-29 16:24:22
【问题描述】:

任何人都知道如何同时编译和运行大量的 java 项目(假设每次都发出请求)我可以在这种情况下使用 sun jdk。有没有办法分布式编译?

【问题讨论】:

  • 你到底想做什么?
  • 如何跟踪依赖关系?
  • 为什么需要为每个请求编译代码?
  • 他可能想为 GitHub 上的所有 Java 项目提供二进制文件;)

标签: java compiler-construction parallel-processing


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

    Maven is starting to support it... 但是为什么呢?在比如说……Core 2 Duo 上并行构建 Firefox(一个典型的大型 C++ 应用程序)所需的时间,只要您的构建过程正确地粘合在一起,您可能可以构建至少 5,000 个独立的 Java 应用程序.

    (在我的 MacBook Pro 上为 Firefox 构建大约六个左右的大型 C++ 对象所需的时间,我可能可以构建整个 CAS webapp,它有几百个 Java 类和大约 12-18 个 Maven 子模块)

    【讨论】:

      猜你喜欢
      • 2014-07-03
      • 2011-07-09
      • 2016-03-07
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      • 2018-04-27
      • 2021-10-25
      • 1970-01-01
      相关资源
      最近更新 更多