智能 Java 编译工具智能 Java 编译工具
什么是sjavac,它是谁,我该如何使用它?
转载:http://www.it1352.com/973148.html
关于一个名为的工具的一些嗡嗡声 OpenJDK邮件列表中的 sjavac 。此外,还有两个相关的JEP:
我的问题是:
- sjavac 工具究竟是什么?
- 谁是谁它打算用于?
- 如何使用它?
- 免责声明:自我回答的问题。只是想将此工具的知识带到StackOverflow社区,并创建对未来sjavac FAQ的引用。
解决方案
什么是sjavac工具?
sjavac 工具是围绕 javac 的(据称是智能)包装器,在Oracle开发并旨在提供以下功能:
- 增量编译 - 仅重新编译必要的内容
- 并行编译 - 在编译期间使用多个核心
- 将编译器保留在HotSpot VM中 - 重用JIT的javac实例进行连续调用
重新编译一组源文件时,javac会查看.java的时间戳和.class文件来确定要保留的内容和要重新编译的内容。这非常粗糙,对于大型代码库来说可能是毁灭性的。除了时间戳,sjavac还会检查依赖项的公共API,以判断哪些文件需要重新编译。
Sjavac还尝试将编译拆分为多个javac调用。换句话说,它为构建过程带来了高水平的并行性。
最后,sjavac工具分为客户端部分和服务器部分,允许您让sjavac在后台运行,JIT'并准备连续使用。
它的目的是什么?
我们鼓励那些正在开发大型项目并经常在开发过程中重新编译代码库的人试用 sjavac 。 (请注意,该工具目前正在开发中,但仍存在未解决的问题。)
如何使用它?
OpenJDK尚未附带该工具,因此您必须从 OpenJDK jdk9 / dev存储库。此外,还没有启动器,所以你用 java com.sun.tools.sjavac.Main 调用它。
您可以在这里尝试sjavac的jdk 8后端:http://sjavac.s3-website-eu-west-1.amazonaws.com/