JAX-RS

JAX-RS () は、RESTアーキテクチャに基づくWebサービスのための機能を提供するJava言語のAPIである。 JAX-RSはJava SE 5で導入されたアノテーションの仕組みを用いて、シンプルな開発を実現する。

JAX-RSは、2009年にリリースされたJava EE 6においてバージョン1.1が仕様の一つとして取り込まれており、Java EEの標準仕様の一つとなっている。Java EE以外の環境においても、例えばWebアプリケーションの設定ファイルであるweb.xmlに登録することで、利用可能である。2013年5月に公開されたバージョン2.0は、クライアントAPIやフィルタといった機能が追加されており、Java EE 7に含まれている。

仕様 
JAX-RSは、リソースクラス（POJOのJavaクラス）をWebリソースにマッピングするのを助けるアノテーションを提供する。アノテーションの例を以下に示す。

 @Path : リソースクラスやメソッドに相対的なパスを指定する。
 @GET, @PUT, @POST, @DELETE, @HEAD : HTTPメソッドの種別を指定する。
 @Produces : レスポンスのContent-Typeを指定する。
 @Consumes : リクエストで受け入れ可能なContent-Typeを指定する。

加えて、リクエストからメソッドの引数に情報を読み込むためのアノテーションも提供している。これらの@*Paramアノテーションは必要な値を取得するためにキーを要求する。

 @PathParam : パスとメソッド引数を紐付ける。
 @QueryParam : HTTPのクエリとメソッド引数を紐付ける。
 @MatrixParam : HTTPのマトリックスパラメータとメソッド引数を紐付ける。
 @HeaderParam : HTTPヘッダーとメソッド引数を紐付ける。
 @CookieParam : HTTP cookieとメソッド引数を紐付ける。
 @FormParam : フォームの値とメソッド引数を紐付ける。
 @DefaultValue : 上記のキーが存在しない場合のデフォルト値を指定する。
 @Context : 全体のコンテキストを返す（例 @Context HttpServletRequest request）。

実装 
JAX-RS自体はAPIであり、実際の実装として下記のようなものがある。

 Apache CXF - Apacheソフトウェア財団のWebサービスフレームワーク
 Jersey - オラクル（サン・マイクロシステムズ）によるリファレンス実装
 RESTeasy - JBossによる実装
 Restlet
 Apache Wink - Apacheソフトウェア財団のサーバモジュール
 WebSphere Application Server - IBMのJakarta EEアプリケーションサーバ
  - オラクルのJakarta EEアプリケーションサーバ
 Apache Tuscany

脚注

参考文献 
 Hadley, Marc and Paul Sandoz, eds. (September 17, 2009). JAX-RS: Java API for RESTful WebServices (version 1.1), Java Community Process

外部リンク 
 Java.net - Java API for RESTful Services (JAX-RS) 

Javaプラットフォーム
Java enterprise platform
ウェブ開発