BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース JAX-RS 2.0とBean Validation 1.1がJava EE 7 JSRとして初の公認を受ける

JAX-RS 2.0とBean Validation 1.1がJava EE 7 JSRとして初の公認を受ける

原文(投稿日:2012/12/18)へのリンク

 

Java Enterprise Edition version 7 の進捗が順調だ。先月末にはJSR 399とJSR 349が公開レビュー投票によって採択され,この2つが批准された最初のJSRとなった。

OracleのJCP Program Officeでは,Java EE 7 JSRの機能一覧を次のように定めている。

  • JSR 107: JCACHE - Java Temporary Caching API
  • JSR 236: Concurrency Utilities for Java EE
  • JSR 338: Java Persistence 2
  • JSR 346: Contexts and Dependency Injection 1.1 for Java EE
  • JSR 352: Batch Applications for the Java Platform
  • JSR 349: Bean Validation 1.1
  • JSR 339: JAX-RS 2.0: The Java API for RESTful Web Services

InfoQではJSR 399仕様リーダのひとりであるMarek Potociar氏に,RESTful Java APIの最新バージョンについて話を聞いた。

Marekさん,こんにちは。JSR 399は完成に近づいているようで,公開プレビューも順調ですね。現在の状況を,簡単に説明して頂けますか?

主要な機能(クライアントAPI,非同期サーバ処理,フィルタ,インターセプタ)に関しては,すでにかなり安定しています。現在は一般的なコンフィギュレーションやリンク,ハイパーメディアのサポート,あるいは例外の階層処理といった,APIの詳細部分の改善について検討を続けているところです。先日はBeanValidation 1.1の仕様リリースに合わせた,リリーススケジュール調整の実施を決定しました。BeanValidation統合サポートはJAX-RS 2.0リリースの一部として提供を予定しています。スケジュールを変更したことで,JSON Processing API(JSR 353)についても検討を始めました。JSONは既存のRESTfulサービスの多くで,XMLとともに広く使われているメディアタイプだからです。主要機能で検討段階にあるものとしては,現時点ではこの2つだけです。

JSR 311の後継機能として,オリジナルな RESTful Java仕様である JSR 399に大きな期待が寄せられていますが,この状況についてどのようにお考えですか?

全体としては,新機能リリースという意味だけでなく,既存のAPIと機能を明確にできたという点においても,今回のリリースで達成した内容には満足しています。現在すでに,JAX-RS 2.0の最終バージョンをJava EE 7 リリースの一部としてリリースするための作業に着手しています。

RESTfulなWebサービスを利用するJava開発者にとって,JSR 399はどのような意味を持つのでしょうか?

今回新たに標準化された機能の多くが,これまではJAX-RSの拡張機能として独自に提供されていたものです (クライアントAPIやリクエスト/レスポンスフィルタリングなどがその好例です)。これらの拡張機能は現在でもRESTfulなJava開発では頻繁に利用されているのですが,開発されたコードの移植性の面でいくつか問題があります。JAX-RS APIに新たに追加されることで,標準化されたAPIを活用した,移植性に優れたコードの記述が可能になります。

当初計画されていた機能はすべて含まれているのでしょうか?

本当に重要な機能については,すべて含まれています。JAX-RS 2.0の開発期間中に,当初予定していた機能セットに対して追加された機能もいくつかあります。EGで十分な合意が取れなかったり,標準的なソリューションの前にもう少し独自APIを調べる時間が必要なために対応できなかった機能については,それらを対象外にするのか,あるいは延期するかをひとつひとつ決めてきました。重要な機能で延期を決定したのは,JSR 330(依存性注入)との緊密な統合,高レベルのクライアントAPI,MVCビューのテンプレートフレームワーク統合です。

他の言語やプラットフォームでも,このリッチフレームワークを活用してほしいと思いますか?

プラットフォームとして見れば,JAX-RS仕様はJava EEの一部ということになりますが,EJBのようにJava EE仕様に緊密に結び付いてはいません。Jerseyのリファレンス実装など多くのJAX-RS実装は,Java SEベースの軽量HTTPサーバでも,Grizzlyのような他のHTTPコンテナでも動作します。同じようにほとんどのJAX-RSフレームワークがServletコンテナと統合したり,Servletコンテナ上で実行したりできるのです。ですからJAX-RSアプリケーションは,とても柔軟な運用が可能です。
RESTfulサービスを利用する場合は,それがJAX-RSであっても,あるいは他のフレームワークであっても,当然ですが言語非依存です。現時点でJAX-RSを他の言語に移植する計画はありません。今のところはその名のとおり,Javaに限定されたAPIなのです。

次のステップについて教えてください。次世代のJSRになるのでしょうか,そうであれば何が含まれるのでしょう?

JAX-RS 2.0を公開したら,コミュニティからのフィードバックを集めて,2.0リリースと同年内くらいに2.1メンテナンスリリースを行うようにしたいと思っています。すでに次のJAX-RSリリースに向けて,アイデアの収集を始めたところです。中期計画はこのような感じですね。

その他のJava EE 7 JSRについては,すべて"公開レビュー"か,あるいは近日中に"早期ドラフトレビュー"を完了する予定である。Java EE 7 JSRの最新状況をチェックしたいのであれば,JCP Java EE 7 JSR Blogを参照するとよいだろう。

 

 

この記事に星をつける

おすすめ度
スタイル

BT