JAX-RS

Jakarta RESTful Web Servicesは、Eclipse Foundationが開発している、RESTアーキテクチャに基づくWebサービスのための機能を提供するJava言語のAPIであるHadley, Marc and Paul Sandoz, eds. (September 17, 2009). JAX-RS: Java API for RESTful WebServices (version 1.1), Java Community Process。Jakarta EE Platformに含まれている。Java 8まではJava Platform, Enterprise Editionの一部でJava API for RESTful Web Services (JAX-RS) という名称だった。Jakarta RESTful Web ServicesはJava SE 5で導入されたアノテーションの仕組みを用いて、シンプルな開発を実現する。

 沿革 
 2008年9月8日 - JAX-RS 1.0をリリース。
 2009年9月17日 - JAX-RS 1.1をリリース。Java EE 6においてバージョン1.1が仕様の一つとして取り込まれており、Java EEの標準仕様の一つとなっている。Java EE以外の環境においても、例えばWebアプリケーションの設定ファイルであるweb.xmlに登録することで、利用可能である。
 2013年5月22日 - JAX-RS 2.0をリリース。クライアントAPIやフィルタといった機能が追加されており、Java EE 7に含まれている。JSR 339: JAX-RS 2.0: The Java API for RESTful Web Services
 2017年7月13日 - JAX-RS 2.1をリリース。Java EE 8に含まれている。
 2019年8月5日 - Jakarta RESTful Web Services 2.1をリリース。Jakarta EE 8の一部である。JAX-RS 2.1から名称変更しただけである。
 2020年9月23日 - Jakarta RESTful Web Services 3.0をリリース。名前空間がjakarta.ws.rsに変更になった。Jakarta EE 9の一部。
 2022年2月28日 - Jakarta RESTful Web Services 3.1をリリース。Jakarta EE 10の一部。
 2024年4月3日 - Jakarta RESTful Web Services 4.0をリリース。Jakarta EE 11の一部。

 仕様 
Jakarta RESTful Web Servicesは、リソースクラス（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）。

 実装 
Jakarta RESTful Web Services自体はAPIであり、実際の実装として下記のようなものがある。Mark Little, A Comparison of JAX-RS Implementations

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

 脚注 

 外部リンク 
 Jakarta RESTful Web Services 
 The Java API for RESTful Web Services (JAX-RS) -- Rapidly Build Lightweight Web Services 

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