Javaの「いま」を見る 人気バージョン、ベンダー、新しい動きは? New Relic年次調査:コンテナ化、GCの利用状況を調査
New Relicは「2023 State of the Java Ecosystem Report」を発表した。Javaシリーズで採用率の高いバージョン、人気ベンダー、コンテナ化、ガベージコレクションの利用状況を解説した。
New Relicは2023年4月28日(米国時間)、Javaエコシステムの状況を調査した「2023 State of the Java Ecosystem Report」を発表した。Javaシリーズで採用率の高いバージョン、人気ベンダー、コンテナ化、ガベージコレクションの概況を解説した。同調査のデータは、2023年1月にNew Relicに報告されたアプリケーションを元にしている。
採用率トップはJava 11、Java 17は1年で430%増加
Javaには2〜3年ごとにリリースされる長期サポート版(以後、LTS)と、短期間しかサポートされないものの、半年ごとに新しいバージョンを利用できる非LTSの2種類がある。
実運用で最も使用されているバージョンはJava 11で、56%以上のアプリケーションで使用されている。2番目に多かったのはJava 8だった(33%)。実運用で使用されているアプリケーションのほとんどがJava 11とJava 8で占められる。
2021年にリリースされたJava 17は、ユーザー採用率が9%未満だが、1年で430%の成長率を見せ、Java 11をしのぐ速さで普及している。
実運用での非LTSバージョンの採用は非常に低く、非LTSを使用するアプリケーションは、全体でも1.6%にとどまり、2022年と比較しても低下している。背景には、サポートの問題だけでなく、LTSバージョンのリリースタイミングが短縮されている点もある。
使用されている非LTSバージョンでユーザー採用率が最も高いのは、Java 14で、2番目がJava 15だった。
JDKベンダーはAmazonが人気
従来、多くの開発者がOracleからJava Developer Kit(JDK)を取得しており、OracleはJava市場の約75%を占めていた。しかし、Javaのオープンソース化に伴い、選択肢が広がった。
劇的な増加を見せたのがAmazonで、2023年に逆転、市場の31%を占めるようになった。
アプリケーションのコンテナ化が主流に
New Relicに報告されたJavaアプリケーションのレポートのうち、70%以上がコンテナ上で実行されている。
コンテナは、技術チームが計算とメモリのリソースを割り当てる方法に影響を与える。New Relicのデータでは、コンテナ内で実行されるアプリケーションの多くは4未満のコアで実行されている。
コンテナ内のシングルコア設定は36%で2022年の42%から減少した。中でも8つのコア設定を使用するアプリケーションは、2022年の20%から29%以上に上昇している。
開発チームの多くがコンテナを頻繁にデプロイするクラウド環境では、計算リソースをより小規模に設定する傾向がある。しかし、シングルコアからマルチコアへの移行が増えているのは、小規模な設定だとアプリケーションによっては予期しない問題を引き起こすからだと考えられる。シングルコアで実行されている場合、ガベージコレクタを設定していても取得できない可能性がある。
コンテナ内のメモリ設定に関しても同様の傾向が見られ、実行されるコンテナ内でのインスタンスが小さくなる傾向が見られる。コンテナを展開する性質上、デプロイ時にリソースの制限を設けることが一般的であり、開発チームはアプリケーションのフットプリントを意識しながら開発を進める必要がある。
Java 9ではコンテナでより適切に動作するための多くの機能が導入された。一例をあげると、-Xmxを使用して正確なヒープサイズを指定する代わりに-XX:MaxRAMPercentageが導入された。JVMはコンテナのメモリ制限を認識しているため、-XX:MaxRAMPercentageはJVMをコンテナサイズに簡単にスケーリングできる。New Relicのデータによると、コンテナ化されたアプリケーションの30%が-XX:MaxRAMPercentageを使用している。この割合は2022年の9%から大きく増加している。
ガベージイン/ガベージアウト
自動ガベージコレクションは、ヒープメモリを調べ、どのオブジェクトが使用され、どのオブジェクトが使用されていないかを特定し、未使用のオブジェクトを削除するプロセスだ。JVMのパフォーマンスにおいて中心的な役割を担っている。
New Relicのデータでは、Java 11以降のユーザーの65%がガベージ1(G1)を利用している。G1のメリットとして、大きな領域を一度にクリアするのではなく、小さな領域をクリアしながら収集プロセスを最適化する点がある。そのため実行中にフリーズすることもほとんどなく、新旧オブジェクトの両方を同時に収集できる。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
「Microsoft Build of OpenJDK」の「April 2023」リリースが公開
「Microsoft Build of OpenJDK」の最新版となる「April 2023」リリースが公開された。Oracle、「Java 20」をリリース 最も重要な7つの機能強化と変更点とは
Oracleはプログラミング言語と開発プラットフォームである「Java」の最新版「Java 20」と、Java開発キット「Oracle JDK 20」の一般提供を開始した。「Go」がトップ10入り、「Python」は? 2023年3月開発言語人気ランキング
TIOBE Softwareはプログラミング言語の人気ランキング「TIOBEインデックス」の2023年3月版を発表した。「Python」が首位を維持し、2〜5位は「C」「Java」「C++」「C#」となり、JavaとC++は、2月までの3カ月と順位が入れ替わった。「Go」が過去最高の10位に入った。