sjavac ツールとは正確には何ですか?
このsjavac
ツールは、Oracle で開発され、次の機能を提供することを目的とした の (スマートな) ラッパーです。javac
- インクリメンタル コンパイル- 必要なものだけを再コンパイルする
- 並列コンパイル- コンパイル中に複数のコアを利用
- コンパイラをホット VM に保持する- JIT された javac インスタンスを連続呼び出しに再利用する
一連のソース ファイルを再コンパイルするとき、javac は .java および .class ファイルのタイムスタンプを調べて、何を保持し、何を再コンパイルするかを決定します。これは非常に粗雑で、大規模なコード ベースでは壊滅的です。タイムスタンプに加えて、sjavac は依存関係のパブリック API を調べて、再コンパイルが必要なファイルを判断します。
Sjavac はまた、コンパイルを javac の複数の呼び出しに分割しようとします。つまり、ビルド プロセスに高レベルの並列性をもたらします。
最後に、sjavac ツールはクライアント部分とサーバー部分に分割されています。これにより、sjavac をバックグラウンドで実行したままにして、JIT を実行し、連続した呼び出しで使用できるようにすることができます。
誰を対象としていますか?
大規模なプロジェクトに取り組んでいて、開発中にコード ベースを頻繁に再コンパイルする人は、試してみることをお勧めしsjavac
ます。(ただし、このツールは現在開発中であり、まだ未解決の問題があることに注意してください。)
どうやって使うの?
このツールはまだ OpenJDK に同梱されていないため、OpenJDK jdk9/dev リポジトリから入手する必要があります。また、ランチャーはまだ配置されていないため、 で呼び出しますjava com.sun.tools.sjavac.Main
。