BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ アーティクル InfoQ Javaトレンドレポート - 2023年11月

InfoQ Javaトレンドレポート - 2023年11月

キーポイント

  • Java Virtual Threadsは、最近リリースされたJDK 21で最終決定された。Helidon NímaやVert.xのようなアプリケーションフレームワークの最新版がすでにこの機能を利用しており、この機能の採用は今後も拡大すると考えられる。

  • Oracleは、学生や初心者が言語の複雑な機能を理解する必要なく、最初の「Hello, world!」アプリケーションを書くことをより簡単に学べるように、Java言語を進化させることにコミットしている。

  • 昨年末に発足したプロジェクトGalahadは、Java関連のGraalVM技術をOpenJDKコミュニティに提供し、JDKメインラインリリースでのインキュベーションによる可能性の確保を引き続き目指している。

  • Spring Boot、Quarkus、Jakarta EEといった最新のマイクロサービス・フレームワークについて学ぶことへのコミュニティの関心が高まっている。Spring Modulithプロジェクトは、現在Springの公式プロジェクトであり、マイクロサービスの代わりに、より優れたものづくりを可能にしている。

  • Java 17がリリースされて以来、Java 11がリリースされたときよりも新しいJavaバージョンの採用が加速している。

  • Javaの分野では、特にコード生成のための生成AIの開発と適用が増加している。また、Semantic Kernel、Deeplearning4J、djl、Tribuoなど、Javaを使ったAIやMLのためのSDKやフレームワークの開発も増えている。

本レポートは、InfoQ Java編集部が現在Javaの領域でどのような技術が採用され、どのようなトレンドが生まれているかをまとめたものである。言語であるJavaだけでなく、KotlinやScalaなどの関連言語、Java仮想マシン(JVM)、Javaベースのフレームワークやユーティリティに焦点を当てている。Javaの新バージョンの採用といったコアJavaのトレンドや、Spring FrameworkJakarta EEQuarkusMicronautHelidonMicroProfileMicroStreamといったフレームワークの進化についても解説する。

2023年のJavaトレンドに関する追加の ポッドキャスト・ディスカッションも聞くことができる。

このレポートの主な目的は2つある。

  • テクニカル・リーダーが中長期的な技術投資の意思決定をする際に役立つこと。
  • 個々の開発者が、学習とスキル開発のために貴重な時間とリソースをどこに投資すべきかの選択に役立つこと。

Javaトレンドレポートは、今回で5回目となる。しかし、2006年以来、社内でJavaとJVMのトレンドを追跡しており、このトピックは十分に取り上げてきた。

InfoQとQConでは、現在と将来のトレンドをナビゲートするために、Geoffrey Moore氏が同名の著書で開拓した技術的成功のための"crossing the chasm"(キャズムを超える)メンタルモデルを活用している。私たちは、Moore氏が初期市場と呼んだ、「チャンスや迫り来る問題を先取りしようとする技術愛好家や先見の明のある人々が顧客となる」市場に適合するアイデアを見極めようとしている。

2022年2021年2020年2019年のJavaトレンドレポートと同様に、2023年の社内トピックグラフを紹介する。

これは2022年の社内トピックグラフである。

Innovator カテゴリーにいくつかの新技術が明らかになったほか、注目すべき変更点は以下の通りである。

Java 17+は、単にJava 17として再分類され、より多くのフレームワークがベースラインとしてJava 17にコミットしたため、Early Adopterフェーズにとどまっている。InnovatorカテゴリにJava 21が登場した。

高速JVMスタートアップFast JVM Startup)という新しいラベルを作成し、さらに改良して、高速JVMスタートアップ(Fast JVM Startup (CRaC))を Innovatorsカテゴリーに、高速JVMスタートアップ(Fast JVM Startup (GraalVM))をEarly Adoptersフェーズに配置した。その理由は、Javaコミュニティに最近導入された比較的新しい技術を認めるためである。

以下は、InfoQ Java Queueの編集者とJava Championsの間で行われた、様々なトピックに関するディスカッションの要約である。

  • Michael Redlich氏、Garden State Java User Groupのディレクターであり、InfoQのJava Queue Lead Editorである。ExxonMobil Technology & Engineering Companyのシニアリサーチテクニシャンを退職。
  • Johan Janssen氏、ASMLのソフトウェアアーキテクト、InfoQのJavaキューエディタ
  • Ixchel Ruiz氏、The Linux FoundationのCDFファウンデーションアンバサダー
  • Alina Yurenko氏、Oracle LabsのGraalVM開発者支援者
  • Rustam Mehmandarov氏、Computas ASチーフエンジニア

また、2023年の "crossing the chasm "モデルの更新に意見を提供してくれたJava Queueの編集者にも感謝する。

  • Ben Evans氏、Red Hatのシニア・プリンシパル・ソフトウェア・エンジニア、InfoQのJava Queue編集者、Javaチャンピオン
  • Erik Costlow氏、InfoQプロダクトマネジメントシニアディレクター兼Javaキュー編集者
  • Karsten Silz氏、InfoQのシニアフルスタックJavaデベロッパー兼Javaキュー編集者
  • Olimpiu Pop氏、mindit.io最高技術責任者
  • Bazlur Rahman氏、ソフトウェアエンジニア、Javaチャンピオン
  • Shaaf Syed氏、Red Hatシニア・プリンシパル・テクニカル・マーケティング・マネージャー

我々は、この要約が、内部トピックグラフにおけるいくつかの技術の推奨される位置づけについて、より多くの文脈を提供すると信じている。

チェックポイントでのGraalVM/Cooridanted Restore (CRaC)

Janssen氏:Javaアプリケーションの起動時間を短縮するためのGraalVMとCRaC(Coordinated Restore at Checkpoint)のすべての改善は素晴らしい。GraalVMの継続的な改良は素晴らしいし、多くのフレームワークとの統合によって、アプリケーション内でネイティブ・イメージを簡単に使用できるようになった。ネイティブ・イメージのサポートとは別に、GraalVMはJavaランタイム・エンジンも提供しており、ベンダーが提供するJVMの代わりに使用できる。ランタイムを変更するだけでアプリケーションのパフォーマンスが向上する可能性がある。

Redlich氏:JDK20とJDK21のリリースを除けば、もっとも大きな変化はOracle LabsとGraalVMによるものだ。この1年間で、GraalVM技術の適用可能な部分がOpenJDKに貢献されたこと、将来のOpenJDKリリースに含める可能性のある、既存のHotSpot JITコンパイラの代替としてのGraalジャスト・イン・タイム(JIT)コンパイラの継続的な開発と統合にまず焦点を当てるプロジェクトであるProject Galahadの設立、OpenJDKのリリースに合わせたGraalVMのリリース、新しいライセンスの採用によるGraalVM Enterpriseの廃止などがあった。

Java 17とそれ以降

Ruiz氏:リリースの周期は、より消化しやすい方法で新機能をもたらすだけでなく、さまざまなユーザーがそれらを手に取り、試すことを可能にしている。そのため、全体的に、早期テストや豊富なフィードバックに対する姿勢は良いと思う。

ある意味、本番でのJavaバージョン更新のロードマップもシンプルになった。予測しやすくなったことで、開発チームの同期もよくなった。

Yurenko氏:Javaの最新バージョンの採用スピードが速くなっている。これは、カンファレンスでよく議論されることであり、私が受ける質問にも反映されている。また、GraalVMチームが昨年実施したGraalVMコミュニティ調査でも観察されたことだ。ユーザーの63%はすでにJava 17以降を使用していた。

Mehmandarov氏:今年はJava 20とJava 21がある。もっとも注目すべき機能としては、レコード・パターンとついにプレビューが終了したスイッチのパターンマッチングがある。これらは大量のデータを扱うエキサイティングな機能で、コードを単純化できる。

ネイティブJava(GraalVM/Spring Native/Project Leyden)

Yurenko氏: 偏見かもしれないが、多くのプロジェクトやライブラリーがGraalVM、特にNative Imageを採用している。Spring Bootは、他の一般的なJavaフレームワークと同様にNative Imageをすぐにサポートしているし、同様にサポートを追加したライブラリも多く見かける。

初心者のためのJava

JDK21で提供されるJEP 445「無名クラスとインスタンスメインメソッド(プレビュー)」は、OracleのJava言語アーキテクトであるBrian Goetz氏による2022年9月のブログ記事「Paving the on-ramp」に触発されたものだ。この機能は、"学生が大規模プログラム向けに設計された言語機能を理解しなくても、最初のプログラムを書けるようにJava言語を進化させる "ものである。

JEP 463「暗黙的に宣言されたクラスとインスタンス・メイン・メソッド(セカンド・プレビュー)」は、最近、JEP Draft 8315398からCandidateに 昇格した。以前は無名クラスとインスタンス・メイン・メソッド(プレビュー)柔軟なメイン・メソッドと無名メイン・クラス(プレビュー)、*暗黙のクラスと拡張メイン・メソッド(プレビュー)*として知られていたこの JEP は、JEP 445 からのフィードバックに対応した機能拡張が盛り込まれている。 Oracleの技術スタッフのコンサルティング・メンバーであるGavin Bierman氏は、Javaコミュニティによるレビューのために仕様書の最初のドラフトを公開した。

Yurenko氏:これに関連するもう一つの大きなトレンドは、Javaが初心者にとってよりアクセスしやすくなっていることだ。コミュニティが学生であろうと業界の新参者であろうと、オープンで初心者を歓迎し続けることが非常に重要だと思う。レコード、パターン・マッチング、無名クラス、インスタンス・メイン・メソッドなどの機能によって、初心者はより早く学習ができ、最初のアプリをより簡単に開発することができ、生産性を高められる。

Javaコミュニティは何を言っているのか?

Ruiz氏:多くの人がJavaの21番目のリリースに注目していたため、賛否両論だ。Project Loomは最初のプレビュー以来、多くの開発者の心を揺さぶってきた。仮想スレッドと構造化並行処理だ。

また、Java言語の構文の変更とは厳密に結びつかないJVMの進歩に注目する人もいた。

Java 8から新しいバージョンのJavaへの移行計画。「今やらないと二度とできない」という意気込みだ!

Yurenko氏:最近、コミュニティの傾向を分析するための新しい興味深い方法を見つけた。Vaadinのデベロッパーリレーション担当の副社長であるMarcus Hellberg氏が、2023年に4つの主要なJava会議で発表された講演を分析した。その記事を自分でチェックできる。ここに私の結論をいくつか紹介しよう。

  • マイクロサービスとKubernetesは依然としてもっとも注目をされているトピックである。
  • AIとMLが3位にランクインしたことで、このトピックがいかに注目されているかが分かる。
  • 私はいつもフレームワークの話題に多くの関心を寄せており、今回のレポートではSpring BootとQuarkuに関心を寄せている。
  • セキュリティのトピックが5位に入っているのは意外だ。

もう一つの傾向は、JVMアプリケーションの起動時間の短縮に関すると話題と、パフォーマンスに関する永遠の話題だ。私にとって、それは私たちが間違っていないことのサインだ。

Mehmandarov氏:最近、Java 21でついにプレビューが終了したVirtual Threads(仮想スレッド)についての多くの話題や、全般的な盛り上がりがあった。また、特にコード生成のための生成AIの開発や応用も進んでいる。まだまだ発展が必要だが、面白いスタートだ。また、Semantic KernelDeeplearning4JdjlTribuoなど、Javaを使ったAIやMLのためのSDKやフレームワークの開発も進んでいる。

Janssen氏:Javaのエコシステムは、多くの新しい開発や改善で今も活況を呈している。すでに述べたこととは別に、主にAIに関する興味深い開発がある。AIは急速に進化しており、Pythonベースのソリューションの代わりにSpring AIなどのプロジェクトがあるのは素晴らしいことだ。大きな宣伝トピックの他にも、Spring Modulithのような興味深いプロジェクトがたくさんある。Spring Modulithは現在Springの公式プロジェクトであり、マイクロサービスではなく、より優れたモノリスの作成を可能にしている。

Redlich氏:2023年を通して私が見聞きした話題のほとんどは、Project Loomだ。特にVirtual Threadsは、JDK 21のリリースに伴う最終機能だった。2023年9月のリリースに向けて、仮想スレッドに関するプレゼンテーションやYouTubeの動画が数多く公開された。2023年9月にニューヨークで開催されたJava Community Process(JCP)25周年記念の特別イベントでは、JCP実行委員会のパネルがJDK 21のお気に入りの機能を公開し、その中で満場一致で仮想スレッドと答えた。

予想外のエキサイティングな新機能とは?

Ruiz氏:このようにLLM、ML、AIが注目されていることを考えると、ユースケース、ワークフロー、製品をサポートするJavaの新しいプロジェクト、ライブラリ、APIが出てきても不思議ではない。

Mehmandarov氏:強いて挙げるなら、生成AI、特にコード生成に重点を置いている。生成されるコードの論理的エラーや幻覚などに苦労しているが、それでも「予期せぬ、新しい、面白い」カテゴリーにうまく当てはまる。

Janssen氏:Java 21には、Project Loomの仮想スレッドなど、多くの新機能を見ることは素晴らしいことだ。これらの機能のいくつかが、後のJavaリリースに延期されるのではないかと少し恐れていた。Java 21は新しいLong Term Support (LTS)バージョンなので、多くの企業がLTSバージョンしか使っていない中、これらが含まれているのは素晴らしいことだ。一見したところ、大きなものは削除されていないように見えるが、この結果、我々のプロジェクトにとってアップグレードが簡単になることを期待したい。OpenRewriteはJava言語だけでなく、JUnitのようなライブラリも自動更新できる。

Redlich氏:現在開発中の新しいMicroProfile JWT Bridge仕様は、Jakarta EEとMicroProfile作業グループとの共同作業だ。この新しい仕様は、Jakarta SecurityアプリケーションがMicroProfile JWT Authentication仕様に基づいて構築できるようにするもので、スムーズな統合が実現し、重複した作業や循環的な依存関係がなくなる。目標は、MicroProfile JWT認証のオプションセクションをTCKとともに新しいブリッジ仕様に移行し、この仕様をMicroProfile 7.0に対応させることである。

あなたが個人的に、Javaスペースで本当に楽しみにしていることは?

Ruiz氏:JVM分野におけるCLIツールの復活だ。開発者がツールやプロジェクト、製品を試したり、テストしたり、リリースしたり、公開したりする際の摩擦を解決したり、軽減したりする成熟したプロジェクトの例を見てきた。JBangとJReleaserは、この復活したツールの一部である。

Yurenko氏:私は、毎日多くの新しいプロジェクトが発足しているのを見るのが好きだ。例えば、人工知能と機械学習はおそらく今もっともホットなトレンドであり、この分野にはJava開発者にとって多くのチャンスがある。私のお気に入りのひとつは、Oracle Labの同僚が開発したオープンソースのMLライブラリ「Tribuo」だ。OpenJDKプロジェクトのValhallaPanamaも、AIを扱うJava開発者に大きな利益をもたらすだろう。

Mehmandarov氏:ワクワクするようなものがたくさんある。その中には、String Templates(まだプレビュー中)や機械学習とJavaをサポートするさまざまなライブラリのように、新しくこれから登場するものもあれば、JavaのCloud-Nativeスタック(Jakarta EEやMicroProfileなど)の開発のように、より洗練されているが、まだ改善や新たな開発が見られるものもある。

大規模なデータセットを扱うとなると、Javaのデータ指向プログラミングのような概念や、プロジェクトLilliputやプロジェクトValhallaのバリュー・オブジェクトのようなメモリ使用効率の改善にも期待している。

また、世界中のJavaコミュニティとの交流から得られる大切さと興奮も大きい。Javaコミュニティは本当に活気があり、学び、知識を共有することに熱心なグループだ。

Redlich氏:2023年11月から何度も発表している「JJakarta EE 11 Going Beyond the Era of Java EE」のプレゼンテーションをまとめている。2018年以降のJakarta EEの進化には驚かされるし、Jakarta EEの仕様を勉強するのは最高だよ。

Javaコミュニティ

Janssen氏:もちろん、毎年、すべてのツール、ライブラリ、フレームワークの機能と多くの改良が詰まった2つの新しいJavaリリースがある。それに加えて、JavaやJVMのカンファレンスが再び開催され、より多くの参加者を集めているのを見るのはいいことだ。Java についてさらに学び、他の開発者と素晴らしいディスカッションをするために、ぜひカンファレンスを訪問してほしい。

まとめ

投稿者の視点は、記事の一部しか語っていないことに注意してほしい。Javaエコシステムの異なるグループ、部門、地域は、異なる経験を持っているかもしれない。2023年に向けた我々のレポートは、決定的な声明というよりはむしろ議論の出発点であり、業界が進む方向性についてのオープンな議論への招待であると考えるべきである。

作者について

この記事に星をつける

おすすめ度
スタイル

BT