SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

イベントレポート

SpringOne Essentialsで紹介されたSpringアプリケーション最新情報~Spring Framework 6.0、GraalVMなど

  • X ポスト
  • このエントリーをはてなブックマークに追加

Spring Framework 6: Infrastructure Themes

 キーノートのレポートで言及した、Juergen Hoeller氏の個別セッションの内容を紹介します。

 本セッションでは始めにJDKとSpringのリリースタイミングが改めて示されました。

JDKとSpring Frameworkのリリースのタイムライン
JDKとSpring Frameworkのリリースのタイムライン

 これによればSpring 6.1は、具体的にはJDKの次のLTSリリースであるJDK 21のリリースの後、2023年11月にリリース予定のようです。

 次に、Spring 6におけるJDK 17+、JakaraEE 9+というベースラインにも改めて触れつつ、本セッションで時間を割いて述べられた、Ahead-Of-Time(AOT)とVirtual Threadsに話題が移っていきます。

 AOTに関しては、起動時間の短縮やメモリフットプリントの削減といった、昨今のJavaアプリケーションの実行の際に考慮されることが多い課題に対して、Springが取り組んでいるGraalVM上でのNative Image実行に関する内容や、OpenJDKで同様の課題を扱いStatic Imageでの実行を目指すProject Leyden、GraalVMとOpenJDKの技術的合流を目指すProject Galahadなどが紹介されました。一方で、これらとは異なり、JVMのスナップショットの作成と、スナップショットからリストアして実行できるようにすることを目的とするOpenJDKのProject CRaCにも言及がありました。これが実現すれば、ウォームアップされたHotspots JVMのスナップショットを作成し、そこから起動することによって、起動時間の短縮が見込まれます。これらはいずれも活動中のものですが、Javaアプリケーションの共通課題に対して、Javaプラットフォームが一丸となって取り組んでいることが分かる、印象深い内容でした。

 OpenJDKのProject Loomで議論されているVirtual Threadsについては、現在はプレビュー段階であるものの、これを利用することで、Spring MVCにおいても高いスケーラビリティを得られる見通しであることが語られました。Virtual Threadsの出現によって、高いスケーラビリティが必要な際の選択肢には、Reactive Programmingだけではなく、Virtual Threadsを使用した命令的なプログラミングスタイルが加わることになります。これについてReactive Programmingのメリットはスケーラビリティよりはむしろ、ストリームベースで記述できることにある、との見解が示されました。

 Juergen Hoeller氏は最後に、本セッションで紹介したJVMを含む今後のインフラ改善の恩恵を受けるため、各自のペースでSpring Framework 6.0へのアップグレードを行ってほしいと述べ、セッションを締めくくりました。

Interface Client in Spring

 Spring Framework 6に関するテーマの多くはJuergen Hoeller氏のセッションで取り上げられた一方で、Spring Framework 6.0で導入された新しいインタフェースクライアント機能については個別のセッションが用意されていました。

 ここでいうインタフェースクライアント、あるいは宣言的クライアントとは、専用のアノテーションを付与したJavaのインタフェースから自動的に生成される、サービスに対するクライアントを指します。セッション中で紹介された例を挙げると、Spring Framework 6.0で導入された@PostExchangeアノテーションを使用することで、以下のインタフェースからHTTPクライアントを自動的に生成することができます。

新しいアノテーションによるHTTPクライアントの定義
新しいアノテーションによるHTTPクライアントの定義

 こうしたインタフェースクライアント機能は、SpringユーザにとってはSpring Cloud OpenFeignを介して利用することの多い、OpenFeignが備えているものと同種のものです。

 Spring Cloud OpenFeignの開発に携わるOlga Maciaszek-Sharma氏はセッションの中で、同プロダクトの強力さと人気について述べた一方、問題点も指摘しました。特にノンブロッキングAPIをサポートしていないことを最大の問題として挙げ、これを解消するためにSpring Cloud Squareという実験的なプロジェクトにも取り組んできたと言います。

 そのような状況の中、Rossen Stoyanchev氏らSpring Frameworkチームはブロッキング・ノンブロッキングの両方に対応する新たなインタフェースクライアント機能をコアのフレームワークに取り込むことに決めたそうです。

 その上でAPIについて再考した結果、サーバとクライアントのリクエストの扱い方の違いから、@RequestMappingを再利用するのではなく@HttpExchangeや@RSocketExchangeという別のアノテーションを新規に導入するという結論に至ったとのことでした。

 セッションの終盤には簡単なデモが披露され、その中でSpring Cloud LoadBalancerとの連携についても紹介されていました。実際の利用方法に興味がある方は動画を見てみると良いと思います。

次のページ
From Spring Native to Spring Boot 3

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
イベントレポート連載記事一覧

もっと読む

この記事の著者

SpringOne Essentials 参加チーム(SpringOne Essentials サンカチーム)

NTTソフトウェアイノベーションセンタ:岩塚 卓弥、水野 諭孝 NTTデータ:小峰 規行、高橋 寛恒 NTTコムウェア:杉本 真梨、宮嶋 健太

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/17468 2023/03/16 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング