分布式Java编译器

问题描述 投票:0回答:5

Java 是否有一个分布式编译器,类似于 C/C++ 的 distcc?

java distributed
5个回答
15
投票

你的问题的直接答案是“不”。然而,无论如何它可能对你没有帮助......编译 Java 非常快。

在一个小项目中,编译速度足够快,您不必太在意。在大型项目中,您需要处理抛出文件以通过网络进行编译,并且还必须处理可能抛出的许多兆字节的依赖项。

为了提高编译速度,您可以做的一件事是使用 eclipse 编译器 而不是 Sun javac。 Eclipse 编译器是多线程的,因此,如果幸运的话,将使用您机器的所有核心。

可能还值得一提的是,Apple 最近还减少了 distcc 支持,因为一般来说,在较新的硬件上,将代码获取到其他地方进行编译和返回要比在本地进行编译花费更多的时间。引用苹果的话:

Xcode 的单机构建性能已得到改进,在大多数情况下,使用分布式网络构建进行分布式构建比本地构建慢。


3
投票

也许Jikes适合你。您可以使用聪明的 ant 脚本和 nfs(如文件系统)实现非常相似的效果...


3
投票

如果您对等待很长时间的 java 编译感到烦恼,那么您可以考虑以下其中一项:

  • 将您的项目分解为几个不同的 jar 文件(按层次结构依赖)。运气好的话,您的更改只会影响其中一个 jar 中的源代码,而其他 jar 可以继续充当依赖项。
  • 将您的项目分成多组源(可能是按包),并使用 Apache ant 来协调您的编译。我总是懒得使用它,但是您可以设置显式依赖项管理,以避免重新编译
    .class
    文件已经存在且比源文件更新的内容。如果项目很大并且编译会占用您大量时间,那么设置一次的努力可以在几天内获得回报。

与多核相反,减少需要重新编译的代码量也将减少 PC 的能耗和碳足迹;)


2
投票

我确实为 java6 写了一个开头

http://www.pointdefence.net/jarc/index.html

它在java编译器任务中分发。因此它可以很好地并行编译独立的 Maven 模块。


0
投票

我认为独立Maven模块的并行编译应该非常容易使用一些简单的脚本 - 只需从版本控制中拉取,更改目录并运行mvn clean编译。添加 mvn deploy 以将工件获取到工件存储库。

即使对于依赖模块,这也应该可以工作,但需要一些同步工作。

© www.soinside.com 2019 - 2024. All rights reserved.