Java Flight Recorderは現在、OpenJDK 8ツリーへのマージ作業中である。これは昨年11月にInfoQがレポートした、アーリーアクセスリリースの完了を受けたものだ。これによってOpenJDK 8では、 — コンパイル時にフラグ--enable-jfr
を指定してビルドすることにより — 軽量なイベント記録機能としてJava Flight Recorderを使用して、Java Mission Controlによる事後解析を行うことが可能になる。JFRを既定値として有効化して、逆にこの機能が無効なOpenJDK 8のビルドに--disable-jfr
を指定する、という提案も行われている。
Oracle Java 8ビルドはJFRが有効な状態で提供されているが、これは商用ライセンス下でのみ使用可能なものだ。最新のJava 8ビルドはOracleからは無償では提供されていないため、開発者はAdoptOpenJDKか、あるいはその他のRedHatやAzulのZingといったチャネルで提供されるOpenJDK 8ビルドを使うように移行する必要がある。しかしながら、Adopt OpenJDKサイトで提供されているビルドは、アップストリームソースから直接ビルドされたものであるため、JFRは含まれない。今回の変更がマージされれば、そのブランチからのすべてのビルドでJFRが使用できるようになる。AzulのZulu-8ビルドでは、JFRのアーリーアクセスサポートが使用可能である。
Flight Recorderの記録はJava Mission Controlを使用するか、あるいはEclipseプラグインとして先日リリースされたJMC-7.1をインストールすることで、オープンと解析が可能になる。JMC 7.1のビルドは、Java 8とJava 11リリースの両方を処理可能なものがAzulから提供されている他、RedHat 8.1.1でも使用することができる。バージョン7ストリームはオリジナルのMercurialリポジトリであるhg.openjdk.java.netからビルドされるが、MercurialからGitへの変換とGitHubへのマイグレーションを目指しているProject Skaraのアーリーアダプタとして、今後のバージョン8の開発は、新設されたopenjdk/jmc GitHubリポジトリで進められることになっている。AdoptOpenJDKにはこのバージョン8リリース用のJMCナイトリービルドがある。
JFRで使用されているテクノロジは進化を続けていて、Java 14ではJEP 349により、レコードデータをダンプして分析用にロードする操作に代えて、JVMからのイベントをストリームすることが可能になる。これによって将来のJVMでは、JFRインターフェースを使ってデータ収集エンジンにアップロードしたメトリクスを、ダッシュボードに継続的に表示できるようになる。Java 14は現在アーリーアクセスリリースで、最終リリースは来月に予定されている。JMCのメイン開発者であるMarcus Hirt氏が開発したopen tracing pluginでは、オープンスパンスコープ(open span scopes)をJFRレコードに統合することで、より詳細な分析が可能になる。これ