BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース SpringOneで更新されたSpring 5.0のロードマップとリアクティブの話が発表された

SpringOneで更新されたSpring 5.0のロードマップとリアクティブの話が発表された

原文(投稿日:2016/08/08)へのリンク

ラスベガスで開催されているSpringOneプラットフォームカンファレンスの2日目で、プロジェクトリードであるJuergen Hoeller氏は出席者に向けてSpringフレームワークのロードマップを更新した。

Spring 4.0でPivotalはSpringフレームワークに対して約9から10ヶ月で主な機能をリリースするように短くしたイテレーションをした。Version 4.3は今年の7月にリリースされた。これは4.x系の最後の機能リリースになると期待されている。WebレイヤーであるSpring MVCと同様に核である依存性注入フレームワーク自身のさらなる改善を導入する。システム要求は変化なく、そのためリリースはJDK 6と7、8に適合し、サーブレット2.5以降のどんなコンテナでも動作する。

Springフレームワーク 5.0はまた今年の7月に最初のマイルストーンリリースが出るまで進展しており、リリース候補は12月前後と期待されている。GAリリースはその後2017年の第1四半期前後に続くだろう。Spring 5.0はJDK 8以降とServlet 3.1以降、JMS 2.0以降、JPA 2.1以降、JUnit 5を必要とすることとなる、主な基準を更新すると見ている。

新しい機能での看板となる機能は、リアクティブWebアプリケーションへの第1級のサポートである。これはProject Reactorでなされた作業に由来する。これ自身はRxJavaのリードとの密接なコラボレーションで開発された。

リアクティブプログラミングはノンブロッキングでイベントドリブンなアプリケーションについてのものである。バックプレッシャーとともにある小さな一連のスレッドとともにスケールする。これはコンシューマを困惑させないプロデューサを保証することを目指したフィードバックメカニズムである。リアクティブストリーム仕様は、9とSpring 5の両方に採用されているが、これは異なるプロバイダからレイヤとライブラリを横断して疎通する能力を可能にするものである。

Spring 5のために、新しいSpring Web Reactive WebフレームワークがSpring Web MVCへの代替物として追加された。Spring Web Reactiveは@Controllerプログラミングモデルをサポートする。また、リアクティブなWebクライアントを提供する。見た目はSpring MVCに非常に似ているが、リアクティブストリームとリアクタの上に構築されたノンブロッキングなセマンティクスを追加する。これらはノンブロッキングなリアクティブなスタイルのAPIを使ってリクエストを消費し、レスポンスに書き込めるようにするだろう。たとえば、バックプレッシャーとともにHttpSocketに書き込むことなど。

以下のコードサンプルは、これはSpring 5.0 M1を使ってリアクティブプログラミングを導入するブログ投稿から引用しているが、完全にノンブロッキングでリアクティブな方法でリモートサーバからデータを取得しストリームするコントローラだ。

@GetMapping("/accounts/{id}/alerts")
public Flux getAccountAlerts(@PathVariable Long id) {

  return this.repository.getAccount(id)
      .flatMap(account ->
          this.webClient
              .perform(get("/alerts/{key}", account.getKey()))
              .extract(bodyStream(Alert.class)));
}

リアクティブサポートは別として、Springのコアコンテナチームは起動時のパフォーマンスに焦点を当てているだろう。とくに可能である環境であればブートストラップに複数のスレッドを使うことを扱っている。彼のキーノートの間で、Hoeller氏は以下のように説明している。

コアコンテナはアプリケーションをちょうど起動するときに実は多くの作業をしています。ある程度までこれはすでに比較的最適化されていますが、ちょうど今私たちは実行時に私たちが得た情報を使って可能な限りのベストな仕事をしています。そして情報はしばしば単にJARファイル、基本的にはクラスパスです。

5.0では私たちは追加の機能を利用することを調査するつもりです。もしビルドプロセスが私たちのために特別に作った、クラスパスを完全にスキャンする必要がなく私たちが特定のアノテーションが付けられたコンポーネントについて前もって知ることができるインデックスを作成したらどうなるでしょう。並列なブートストラップについてはどうでしょう。追加のブートストラップスレッドを利用することができる環境で、特定のスタートアッププロセスがちょうど並列に実行しているならどうなるでしょう。

バージョン5.0はまたコアフレームワークにおいてJava 8が可能にしたAPIによってコアコンテナを抜本的に改革しているように見える。たとえばjava.util.function型を利用することです。プログラミングのエンドポイント管理はまたアノテーションが付けられたハンドラメソッドとラムダ指向なHTTPルーティングと処理への代替物を計画している。フレームワークはまたクライアントとサーバの両方のサイドでHTTP/2のサポートを予定している。

Springフレームワーク 5.0はJDK 9と協調してリリースすることを計画していたが、Spring framework 5.0 M1を書く時点でクラスパスモードで少なくとも現在のJDK 9を使って正しく動作するだろう。最初のマイルストーンはしかしながらモジュールパス、新しい“Jigsaw”のモジュラリティシステムでは動作しない。しかし続くマイルストーンリリースでこのサポートが期待されている。

JDK 9.0がさらに遅れるだろうという予想を考慮すると、Spring 5.0はチームが準備ができたと考えた時に独立して出荷されるだろう、とHoeller氏はカンファレンスで話している。Springフレームワーク 5.1がJDK 9を完全に採用したものになるだろうと意図している。Spring 5.1は2017年の末に向けて現れるだろうと期待されている。

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT