New Relicは最近、Javaエコシステムの状況に関する新しいレポートを公開した。数百万の匿名化されたアプリケーションからパフォーマンスデータが提供されており、こののレポートでは2022年1月に収集したデータが用いられている。
レポートによると、Java 11は本番環境に対する新しい標準である。その採用は2020年の11%から2022年には48%に上昇している。Java 8を超えており、Java 8は46%で僅差で2番目である。Javaの他のLTSバージョンは非常にかけ離れており、それらが使われるケースはごくわずかである。
以下の画像は、Javaリリースの利用状況を示している。
非LTSバージョンを見ると、最も人気があるのはJava 14であり、次にJava15とJava12が続く。しかし、それらの利用は1%未満である。Java 9以降、6か月周期で新しいリリースが利用できるが、これらのリリースは次のイテレーションまでサポートされる。多くのベンダーは、サポートの終了後に非LTSバージョンのサポートを提供していない。おそらくこれが、非LTSバージョンの利用割合が低い理由であろう。
興味深いのは、JavaエコシステムでのさまざまなJDKディストリビューションの採用を示し表である。Oracleは歴史的に最も人気のあるベンダーであったが、その採用は2020年の75%から2022年には34%に減少した。2022年には22%であったAmazon Correttoは、2020年の約3%から目覚ましい成長を遂げた。AdoptOpenJDKは2020年に7%で2番目であったが、2021年にEclipse Adoptium Projectに移行した後、2022年に11%でより高いパーセンテージを獲得したが、3番目に下がった。Azul Systemsは、2020年の3%から8%にその採用が増えた。
以下の画像は、JDKディストリビューションの利用を示している。
Containerは、コンテナから実行されているアプリケーションの70%を占めており非常に人気がある。このレポートでは、コンテナで実行されているアプリケーションの60%が2つ以下のコアを使っていることが示されている。コンテナはマイクロサービスアーキテクチャーに関連付けられることが多いため、これは理にかなっている。しかし、デフォルトのG1ガベージコレクタは2つ以上のコアで最適に機能するため、弊害をもたらす場合がある。
G1ガベージコレクタはJava 11以降のデフォルトであるため、その使用率は11以降のJavaバージョンで68%である。シリアルGCの利用はJava 11以降のバージョンで、ほぼ23%である。一方でZGCやShenandoahなどの他の最近のガベージコレクタは、最近本番環境で使えるようになったばかりなので、その採用率はまだ非常に低い。
以下の画像は、さまざまなガベージコレクタの使用率を示している。
New Relicは、他をリードする可観測性プラットフォームの1つを開発する企業である。開発者にメトリック、イベント、ログ、トレースを提供する。
2022レポートの完全版は、New RelicのWebサイトから入手できる。
2020年に実施・公開された前回のNew Relic調査の詳細は、このInfoQニュース記事に記載されている。