GraalVM Community Survey 2022 results

原文はこちら。
The original article was written by Alina Yurenko (Developer Advocate for GraalVM, Oracle Labs).
https://medium.com/graalvm/graalvm-community-survey-2022-results-328d0404d36e

コミュニティに対して、私たちが取り組んでいる機能、最近のアップデート、私たちのロードマップについて、チームへのフィードバックを提供するよう依頼したところ、たくさんの貴重なご意見をいただきましたので、その結果を共有し、前年度との比較をしてみたいと思います。

“How familiar are you with GraalVM?”

最初に尋ねたのは、GraalVMにどれくらい精通しているかということです。以下がその結果です。

回答者の65%が、

GraalVMをすでに本番で使用しているか、本番での使用を検討している

ということです。

また、この回答を数年にわたってチェックすると、いい傾向ですね。

GraalVMの改善にご協力いただいている貢献者の方々(7.11%)にも感謝しています!

How do you use GraalVM?

GraalVMのユースケースは幅広いので、どのユースケースが最も人気があるのかを見るのは常に興味深いことです。社内使用や配布のために、Native Imageでネイティブ実行ファイルを構築する、というのが多いようです。

興味深いのは、回答者の40%が、JITモードでアプリケーションを実行するために、GraalVMをJDKとして使用していることです。また、4人に1人は、GraalVMのPolyglot APIを使ってJavaScript、Python、およびRでJavaアプリケーションを拡張しています。また、11.58%とかなり多くの人が、独自の言語やツールを作成するためのプラットフォームとしてGraalVMを使用しています。

“What are you working on?”

どのようなアプリケーションに取り組んでいるのかも尋ねてみました。マイクロサービスが最も一般的な答えで、これは一般的で、そして特にGraalVMエコシステムにとって驚くべきことではありません。しかし、少なくとも私にとって少々驚きだったのは、2位がライブラリとフレームワークだったことです。デスクトップとCLIアプリが、それぞれ回答の約3分の1を占めています。

“What languages are you using with GraalVM?”

GraalVMコミュニティで最も人気のある言語はJavaであり、これはまぁそうですよね、と。他のJVM言語の中では、Kotlinが人気です。JavaScriptとPythonもかなり人気があり、コミュニティのほぼ5人に1人がGraalVM上で実行されています。

また、人気言語の年変化を見てみるのも興味深いです。2022年と2021年を比較すると(2020年は質問が少し違っていました)、Javaが飛び抜けてトップであることがわかります。非JVM言語では、PythonがJavaScriptにかなり早く追いついており、来年にはGraalVMコミュニティで最も人気のある非JVM言語となる可能性がかなり高いです。

“What technologies are you using with GraalVM?”

GraalVMコミュニティの大多数(70%)がHTTPサーバーとクライアントを使っています。興味深いのは、その数字が、2020年の~20%、2021年の~57%、そして現在の70%と、年々急速に増えていることです。これは採用しやすくなったことが理由の一つに考えられます。つまり、多くのJava WebフレームワークやライブラリがGraalVM、特にNative Imageをすぐにサポートするようになったためであろうと考えられます。

データベース接続についても同様の傾向が見られ、回答者の66.84%が現在GraalVMで使用しており、年々急成長しています。

一方、Apache Spark、Hadoop、ElasticSearchのような技術は、GraalVM上で使われていないようです。

“Which frameworks are you using with GraalVM?”

多くのJavaフレームワークがGraalVMを採用していることは喜ばしいことです。どのフレームワークを使用していても、GraalVMで動作するアプリケーションを簡単に構築することができるようになったのです。

トレンドとしては、Spring Boot 3.0のNative ImageサポートがGAになったことで、GraalVM上で開発されるSpring Bootアプリケーションが増えています。

Spring Boot 3.0 with Native Image support
https://spring.io/blog/2022/11/24/spring-boot-3-0-goes-ga
https://logico-jp.io/2022/11/27/spring-boot-3-0-goes-ga/

“What is your primary development platform?”

Linuxが1位(40.5%)でした。これは驚くべきことではありません。Windowsが少々開いて2位(24.5%)、そして、ARM64のMacOSは、GraalVMコミュニティの開発者の5人に1人がそのようなマシンで作業しており、すでに3位となっています。このデータは、プラットフォームサポートの優先順位付けに役立つでしょう。

“What is your primary deployment platform?”

クラウドへのデプロイ(サーバーレスやコンテナへのデプロイ)は、回答者の42.1%が使用しています。デスクトップは依然として人気のある展開プラットフォームであり、回答者の22.6%が言及しています。

“Which IDE are you using?”

ま、そうですよね。みんなIntellij IDEAが大好きで、私たちもそうです。Visual Studio Codeも、ほぼ3分の1の回答があり、かなり人気があります。また、クラウドIDEもすでに採用されており、今後、急速に普及することが予想されます。

“Which GraalVM tools are you using?”

コミュニティの70%以上の開発者がNative Build Toolsを使用されていることを嬉しく思っています!

Native Build Tools
https://github.com/graalvm/native-build-tools

これらのMavenとGradleプラグインは、GraalVM Native Imageを使ったアプリケーションの開発、構築、テストに非常に役立ち、いくつかのフレームワークでも使用されてビルドファイルに含まれています。ちなみに、Native Build Toolsは最近新バージョンをリリースしましたので、是非お試しください。

Release 0.9.21 · graalvm/native-build-tools
https://github.com/graalvm/native-build-tools/releases/tag/0.9.21

VisualVMも26.58%の回答で人気のあるツールです。

VisualVM
https://graalvm.org/latest/tools/visualvm/

このリストにあるツールの中で、ご存じないものがあれば、ツールページのページをチェックしてみてください。

: graalvm.org/latest/tools をチェックしてみてください。

Tools for GraalVM Languages
https://graalvm.org/latest/tools/

“What is the biggest barrier preventing you from adopting GraalVM?”

これは、GraalVMを誰にとっても便利でアクセスしやすいものにしたい私たちにとって、最も重要な質問の1つです。今年の結果を見てみましょう。

ネイティブモードで利用できるライブラリがもっと必要(16.84%)

ライブラリがまだNative Imageをサポートしていない場合、既存のアプリケーションを開発したり移行したりするのは大変です。幸いなことに、最近のライブラリのサポートは大幅に改善されています。以下のURLに、Native Imageとシームレスに動作することが確認されているライブラリとフレームワークのリストがあります。

Libraries and Frameworks Ready for GraalVM Native Image
https://graalvm.org/native-image/libraries-and-frameworks/

現時点では、Micronaut, Spring, Quarkus, Helidon, H2, GraphQL, MariaDB, Netty, MySQL, Neo4j, PostgreSQL, Testcontainers, Thymeleafなど、150以上のライブラリとフレームワークが含まれています。私たちのエコシステムが積極的にNative Imageを採用し、特にGraalVM-reachability-metadataリポジトリでそのサポートを構築していることを嬉しく思います。

Repository which contains community-driven collection of GraalVM reachability metadata for open-source libraries.
https://github.com/oracle/graalvm-reachability-metadata

このリポジトリはNative Build Toolsとも統合されており、依存関係にあるNative Imageの設定ファイルを自動的に発見してPullできるようになりました。

Maven plugin for GraalVM Native Image building
https://graalvm.github.io/native-build-tools/latest/maven-plugin.html#_enabling_the_metadata_repository

コンパイル失敗時のエラー/診断メッセージの改善が必要(13.16%)

Javaアプリケーションをネイティブコンパイルするのは簡単なことではありませんし、コンパイルに失敗すると、何が失敗したのか、どのように修正すればいいのかを理解するのは難しい可能性があります。私たちは、リリースごとにエラー処理を改善するよう積極的に取り組んでいます。すでにマージされ、次のリリースで登場するこの分野のもうひとつの改良点は、内部エラーのレポートがよりユーザーフレンドリーになったことです。

[GR-41912] More user-friendly reporting of internal errors. #5414
https://github.com/oracle/graal/pull/5414

ビルドに失敗した場合、スタックトレースの代わりに、ビルドの進行方法を示す明確なメッセージが表示されます:エラーレポートを確認し、問題を解決できない場合は、エラーレポートに対してissueを提出してください。さらに、もうひとつの長期的なプロジェクトであるBetter Native Image Errorsにも取り組んでいます。

Better Native Image Errors #5271
https://github.com/oracle/graal/issues/5271

エラーメッセージが明確で対処可能であること、関連する問題を見つけやすく、新しい問題を報告しやすいことを確認しながら、考えられるエラーを一つ一つ調べ、エラーを再分類しています。例えば、ユーザーエラー(ユーザーによるもの、明確なアクションが必要)と内部エラー(ネイティブイメージによるもの、報告いただきたいこと)を明確に区別する予定です。

ネイティブ実行ファイルのピークスループットをもっと高くして欲しい(10.79%)

これは、私たちがNative Imageで以前から取り組んでいることのもう一つの事柄です。GraalVM 21.3では、GraalVMで構築されたネイティブ実行ファイルのピーク性能がJVMでの実行と同等になることを示し、それ以来、いくつかの改良を加えています。

GraalVM 21.3 is here: Java 17, Native Image performance updates and more 🚀
https://medium.com/graalvm/graalvm-21-3-is-here-java-17-native-image-performance-updates-and-more-ac4cbafcfc05#8fad
https://logico-jp.io/2021/10/23/graalvm-21-3-is-here-java-17-native-image-performance-updates-and-more/#8fad

他の例として、Devoxx Belgiumでの最近のデモをご覧ください。ここでは、アプリケーションのネイティブ実行可能バージョンがJVM上で実行するのと同等のパフォーマンスを発揮し、さらにそれを上回ることを紹介しています。

ネイティブイメージの最高のピークスループットを達成するためには、GraalVM Enterpriseで利用可能なプロファイルガイド付き最適化とG1 GCが必要です。

Optimize a Native Executable with Profile-Guided Optimizations
https://graalvm.org/latest/reference-manual/native-image/guides/optimize-native-executable-with-pgo/
Memory Management
https://graalvm.org/latest/reference-manual/native-image/optimizations-and-performance/MemoryManagement/#g1-garbage-collector

プロジェクトの将来性や安定性についてもっと情報が欲しい(9.21%)

そのような情報を見つけることができる場所の一つに、GitHub上の私たちのロードマップがあります。

GraalVM Community Roadmap
https://github.com/orgs/oracle/projects/6

OpenJDKにおけるGraalVMやProject Galahadに関連するロードマップの変更があると期待しています。

OpenJDK Announcement
https://graalvm.org/2022/openjdk-announcement/
Call for Discussion: New Project: Galahad
https://mail.openjdk.org/pipermail/discuss/2022-December/006164.html

GraalVMアドバイザリーボードと定期的にミーティングを行い、エコシステムの主要なパートナーと最近のアップデートや今後のアップデートについて議論しています。

GraalVM Project Advisory Board
https://graalvm.org/community/advisory-board/

その他、GraalVMのロードマップに関するご質問やご提案がありましたらお聞かせください。

Community
https://graalvm.org/community

“Which edition of GraalVM are using”?

回答者の 11.05% が GraalVM Enterprise を使用しています。興味深いのは、5%がご自身でGraalVMをカスタムビルドされていることです。

“Which Java version do you mainly use in production?”

ほとんどのコミュニティメンバーが最新のJavaバージョンを受け入れているのを見て嬉しく思っています。47.7%がJava 17を使用しており、合わせて63.5%がJava 17以降を使用しています。一部ではありますが、まだJava 11(23.7%)を使用している人もおり、Java 8より古いバージョンを使用している人は1%未満です。

Conclusion

この(それほど短くない)ブログ記事が読者にとって興味深いもので、エコシステムのパートナーがコミュニティでGraalVMがどのように使用されているかについてのインサイトを得るのに役立つことを願っています。アンケートの結果は、私たちのロードマップを調整し、機能やプラットフォームに優先順位をつけ、今後の変更を計画するという点で、間違いなく私たちにとって非常に役に立ちました。

このブログ記事をあなたのコミュニティで自由にシェアしてください。また、私たちに追加のフィードバックがある場合は、Slack、GitHub、またはTwitterで共有してください。

Slack invitation
https://www.graalvm.org/slack-invitation
GitHub Issues
https://github.com/oracle/graal
Twitter
https://twitter.com/graalvm

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください