SnykとAzulのコラボレーションによる調査JVM Ecosystem Report 2021の結果から、調査対象の62パーセントでJava 11が使用されていることが明らかになった。Java 8の60パーセントを、わずかではあるが越えている。Javaに次いで最もポピュラーなJVM言語はKotlinである。最もポピュラーなJDKディストリビューションは、45パーセントが採用するAdoptOpenJDKで、Oracle OpenJDKの28パーセントとOracle JDKの23パーセントを大きく上回っている。先日新たなワーキンググループを立ち上げたばかりのEclipse Adoptiumが、すでに1パーセントを提供している(Adoptiumはまだインキュベーション段階であり、バイナリを公式にリリースしていない)。Spring Boot、Jakarta EE、それ以降のフレームワークが、この1年で採用数を伸ばしている。開発者はIntelliJ IDEAを好む傾向にあり、Eclise IDEの3倍使用されている。またMavenの利用数はGradleの2倍である。
調査は2021年2月と3月をまたぐ6週間にわたって実施され、2,000人を越えるJava開発者が回答した。回答者の60パーセントは欧州からであり、北アメリカは19パーセント、ロシアとアジアが12パーセントである。回答者の35パーセントは従業員100名以下の企業に、37パーセントは従業員1,000名以上の企業に、それぞれ属している。複数回答を容認したことから、今年の調査結果の大部分は、昨年の結果と比較することができない。
調査の結果から、Java 12以降を運用環境で使用する開発者は21パーセントと、Java 7以前を使用する6パーセントの3倍以上に達していることが明らかになった。この質問には最大3つまでの回答が許容されているため、Java 11以降のJavaを使用する開発者や、Java 8以前を使用する開発者の比率は分からない。
今回レポートされた調査結果は、2021年3月にリリースされたJRebelの2021 Java Development Productivity Reportとはまったく対照的である。同レポートでのJava 8の採用数はJava 11の2倍であり、Java 7以前の使用数はJava 12以降のそれと拮抗している。JRebelのレポートは2020年8月~12月に876人の開発者から集められたもので、Snykのレポートとは異なり、JDKの開発利用と運用での使用とを区別していない。以下のチャートは、今年と昨年のSnyk ReportとJRebelのレポートの結果を比較したものだ。
JRebel 2021レポートでは、Java8とJava7以前を含むすべてのJavaバージョンの使用数が、2020年よりも増加している。
Snykの調査結果では、Javaが最もポピュラーなJVM言語として91パーセントを占めており、Kotlinの18パーセント、Groovyの13パーセント、Scalaの10パーセント、Clojureの8パーセントを上回っている。この結果は、GitHubリポジトリのプログラミング言語の解析に基く、実際の使用状況の調査結果とは大きく異なる。Kotlin 1.0がリリースされたのはGitHubローンチの8年後であるため、JavaがKotlinを、調査結果の5:1ではなく、18:1でリードしていることに意外性はない。一方、GroovyとScalaの1.0がリリースされたのはGitHubが立ち上がる前であり、Clojureはその少し後である。それにも関わらず、Kotlinはこれら3つの言語に対して、調査結果の対Groovy 1.4:1、対Scala 1.8:1、対Clojure 2.3:1を大きく上回る、8:1、2.7:1、7:1でリードしているのだ。
レポートにおけるKotinの人気は、2021年7月におけるGroovyとKotlinの比率が3.4:1(1.09パーセント対0.32パーセント)という、TIOBE indexとも対照的である。TIOBE indexは、プログラミング言語の人気を測定する手段として、検索エンジンのクエリを部分的に使用している。
AdoptOpenJDKに次いで最も普及しているJDKディストリビューションは、OracleのOpen JDKディストリビューションの28パーセントである。Oracleの商用ライセンスJDKが第3位で23パーセントであり、さまざまなOpenJDKディストリビューションがそれに続く — Azulが16パーセント、Amazon Correctoが9パーセント、LinuxおよびRed HatにバンドルされるOpenJDKがいずれも8パーセントである。
サーバサイドフレームワークについては、昨年の調査でも複数の回答が認められていたので、昨年の結果と比較することができる。Spring MVCを除けば、すべてのフレームワークの使用数が増加している。
Spring Bootが微増によって首位を保っているが、Java EE/Jakarta EEが大幅に増加している。Red HatのQuarkus、Eclipse MicroProfile、Micronautといった最新のマイクロサービスフレームワークは、今年が初登場だ。
IDEの分野についてSnykは、IntelliJ IDEAが72パーセント、Eclipseが25パーセント、MicrosoftのVisual Codeが23パーセント、という市場シェアを報告している。同レポートからは、開発者の半数が2つ以上、四分の一が4つ上のIDEを使用していることも明らかになっている。
レポートによると、全開発者の76パーセントがビルドツールとしてMavenを、38パーセントがGradleを、12パーセントがAntを、5パーセントがSBTを使用している。Snyk Open Sourceツールの報告による実使用データを見る限りでは、MavenのGradleに対するリードは3:1(74パーセント対25パーセント)に拡大している。ただし、同ツールがサポートするのはMaven、Gradle、SBTのみである。また、調査とは異なり、こちらの合計は100パーセントになっている。
今回の調査を実施した、SnykデベロッパアドボケートでJava ChampionのBrian Vermeer氏が、今回のレポートについて話してくれた。
InfoQ: 今回の調査は2,000名以上の回答に基づいたものですが、調査結果は、Java開発者全体をどの程度表現できていると思われますか?
調査において、バイアスは避けられないと思います。ですが、この回答数は、現在のJVMエコシステムのレポートとしては現時点で最大のものですし、それは昨年も同じでした。数値には多少変動があるかも知れませんが、結論は現状を反映できているのではないかと思っています。
InfoQ: 今年の調査はAzulと共同で実施されましたが、どのような面で協力を得られたのでしょうか?
Azulのメンバには、調査のセットアップや質問のレビューに関して支援してもらいました。その他にも、何人かのJava CampionやJavaコミュニティの仲間がフィードバックをくれています。Azulのメンバたちは、さまざまなOpenJDKビルドの名称や商用ライセンスのビルドを区別する上で、たくさんの手助けをしてくれました。一部の人たちにとって、これはデリケートな問題になる可能性があるのです。
さらに私たち(SnykとAzul)は、JDKビルドとバージョンの両方において、運用と開発とを区別することにしました。
InfoQ: あなたたちのレポートにはいつも、調査回答に基づいたJavaビルドツールの利用分布が含まれています。ですが今年は、Snyk Open Sourceツールが自動収集したデータをベースとしたビルドツールの利用状況も含まれていました。これはなぜでしょう?
いくつかの質問に関して、調査データを他のデータソースと比較する作業を行いました。使用したのは、GitHubの検索やGoogleのトレンド、Snykにおける私たち自身のデータなどです。この方法によって、調査結果をある程度検証することができました。
ビルドツールに関しては、Snyk内でのビルドツールの分布を調査した結果、Mavenが他のツールよりも広く利用されていることが分かったのです。これは、調査の結果とも一致しています。
InfoQ: SnykツールがスキャンしているのはビルドファイルとDockerコンテナですが、今後の調査において、より多くの情報(Javaフレームワーク、JDKディストリビューション、JDKバージョンなど)をこのツールで収集する計画はありますか?
ある程度はすでに行っています。コンテナに関しては、一部のLinuxディストリビューションについてはJDKバージョンのバイナリスキャンも行っています。例えばこれは、Alpine Linux 3.8で提供されている、OpenJDK 8のイシューリストです。
Javaフレームワークのセキュリティイシューや、MavenやGradleのプロジェクトマニフェストファイルに基づいたライブラリのスキャンなどもすでに行っています。さらに現在は、SAST機能であるSnyk Codeを使って、カスタムJavaコードにある潜在的なセキュリティイシューもスキャンしています。これらの機能はすべて、当社のCLIによって利用可能である他、大部分はIDEやビルドツール、CIパイプライン用のSynkインテグレーションでも使用することができます。
SnykやJRebelが行っているような開発者調査は、Javaコミュニティに有用なデータを提供してくれる。ただしその結果が、必ずしも世界中のJava開発者人口を表現しているとは限らない。こういった調査には、"自己選択による、例えばIDEフォーラムのTwitterフォロワというような、特定のグループを中心としてクラスタ化される傾向がある"からだ。SnykとJRebelは、どちらも自分たちの調査結果のエラーマージンを公表していない。
調査の詳細はレポートで確認できる。