Springの最新動向
Springの最新動向についてはPhillip Webbさん(Spring Bootの開発リーダー)とJuergen Hoellerさん(Spring Frameworkの共同創始者かつ現在の開発リーダー)がMain Stageで語ってくれました。
Phillipさんの講演は2017年5月にスペイン・バルセロナで開催されたSpring I/O 2017の基調講演でAndy Wilkinsonさん(Spring IO Platformの開発リーダー)が講演した内容をアレンジしたものでした。
世の中の変化に対応し、ソフトウエアの価値を保ちつづけるために開発者に選択肢を提供し続けていくというSpringの開発思想が語られました。
既にご存じの方も多いかと思いますが、Spring Framework 5で導入された主な新たな選択肢には以下のようなものがあります。
- Reactorを利用したリアクティブWebプログラミング(Spring WebFlux)
- Router Function
- Kotlinサポート
開発者としては、数ある選択肢から状況に合わせて手段を選択し、いかに上手く利用するかが腕の見せどころといえるかもしれません。
JuergenさんはJavaコミュニティに起きている変化を踏まえながら、Spring Framework 5のリリースについてより具体的に語ってくれました。
JDK(Java Development Kit)のリリースサイクルは、半年ごとに短期サポート版が、そして3年ごとに長期サポート版がリリースされるサイクルとなることが予定されています。先日リリースされたJDK9は短期サポート版であり、JDK8の次の長期サポート版(以下、LTS版)はJDK11(2018年9月予定)となります。
これを踏まえ、Spring Framework 5のベースラインはJDK8に設定されました。そして、以降は次のLTS版を追いかけていくであろう、とも語られました。
また、JuergenさんはSpring Framework開発におけるコラボレーションについても語ってくれました。
まずは、Kotlinを開発しているJetBrains。Spring Framework 5はKotlinから多くの影響を受けており、Kotlin開発グループとの協業は非常に有益であったと述べました。SpringがKotlinから受けた影響については、"Why Spring Loves Kotlin"というセッションでより詳細に語られています。
他の協業先としてはReactive streams、エコシステムの中心であるProject ReactorやRX Java、そしてJava EEに替わるEE4Jなどを挙げました。特にEE4Jからやってくるものについては、タイムリーに追従していく旨を語りました。
今後のリリーススケジュールとしては、Spring Framework 5.1は2018年 Q2(5月末か6月前半ごろ)、そして5.2は2018年末から2019年始めにかけてのリリースを予定しているそうです。
Main Stage後の個別のセッションでは、Spring WebFluxとSpring MVCとの動作の違いやSpring WebFluxでの実装方法の解説、Reactorの利用方法に関するTips紹介など、リアクティブ対応に関するセッションが多数あり、好評を博しているようでした。
Spring WebFluxが追加されても従来のSpring MVCが無くなるわけではありません。それぞれを使い分けていく必要があります。Spring FrameworkのコミッターであるRossen StoyanchevさんのセッションではSpring WebFluxを選択するシナリオの例として、小さいフットプリントを必要とするゲートウェイやエッジサービスなどを挙げられていました。一方で、Spring WebFluxを採用する際に問題となる点としては、リアクティブパラダイムを習得するための学習曲線やブロッキング処理を行うサードパーティライブラリーの利用などを挙げられていました。
今後Spring WebFluxを採用する可能性があるなら、今からでもリアクティブな世界に少しずつ慣れておく必要がありそうです。
Springの周辺プロダクトについてもリアクティブ対応に関するセッションがありました。
Spring SecurityのプロジェクトリーダーであるRob Winchさんは、2017年11月28日に正式リリースされたばかりのSpring Security 5について紹介しました。このセッションではSpring Security 5で導入されたリアクティブ対応で認証・認可を実装していくための方法を全編ライブコーディングで説明するというものです。リアクティブ対応で導入された新しいインターフェースを使って少しずつ実装と動作確認を進めながら説明をしてくれたので、これまでの実装方法と同じ点・異なる点をコードレベルで確かめることができました。