sjavac是什么,它是给谁的,我如何使用它?
OpenJDK邮件列表中有一个名为sjavac是什么,它是给谁的,我如何使用它?,java,java-8,javac,java-9,Java,Java 8,Javac,Java 9,OpenJDK邮件列表中有一个名为sjavac的工具。此外,还有两个相关的JEP:和 我的问题是: 什么是sjavac工具 这是给谁的 我如何使用它 免责声明:自我回答的问题。只是想把这个工具的知识带给StackOverflow社区,并为将来的sjavac常见问题提供参考 什么是sjavac工具? sjavac工具是围绕javac开发的(据称是智能的)包装器,由Oracle开发,旨在提供以下功能: 增量编译-仅重新编译必要的内容 并行编译-编译期间使用多个核心 将编译器保持在热VM中-重用
sjavac
的工具。此外,还有两个相关的JEP:和
我的问题是:
- 什么是
工具sjavac
- 这是给谁的
- 我如何使用它
sjavac
工具是围绕javac
开发的(据称是智能的)包装器,由Oracle开发,旨在提供以下功能:
- 增量编译-仅重新编译必要的内容
- 并行编译-编译期间使用多个核心
- 将编译器保持在热VM中-重用JIT的javac实例进行连续调用
sjavac
。(但是请注意,该工具目前正在开发中,仍然存在未解决的问题。)
如何使用它?
该工具尚未随OpenJDK一起提供,因此您必须从。此外,还没有合适的启动器,因此您可以使用
java com.sun.tools.sjavac.Main
+1调用它,这似乎将取消Eclipse自己的编译器的唯一优势。也许将来我们不必每次都问“您使用了什么编译器?”。看起来openJDK8也有该代码,不确定它是否正在运行,但是:IMOsjavac
不应该是开发人员必须设置为直接使用的东西;它应该是每个IDE内部使用的。换句话说,“它是为谁设计的?”——每个人。你为什么需要一个新工具?为什么不能修改javac
本身来进行增量编译、并行编译,并接受目录作为参数而不是单个文件?看起来(不确定)这将包含在Java 9发行版中(请参阅)。