JAX-RS規範的版本.實現.jar對應關係
簡介
JAX-RS: Java API for RESTful Web Services是一個Java程式語言的應用程式介面,支援按照 表象化狀態轉變 (REST)架構風格建立Web服務. JAX-RS使用了Java SE 5引入的Java 標註來簡化Web服務客戶端和服務端的開發和部署。
版本說明
名詞解釋
JCP:Java Community Process
一個開放的國際組織,主要由Java開發者以及被授權者組成,職能是發展和更新。
Java技術和JCP兩者的原創者都是SUN計算機公司。然而,JCP已經由SUN於1995年創造Java的非正式過程,演進到如今有數百名來自世界各地Java代表成員一同監督Java發展的正式程式。
JCP維護的規範包括J2ME、J2SE、J2EE,XML,OSS,JAIN等。組織成員可以提交JSR(Java Specification Requests),通過特定程式以後,進入到下一版本的規範裡面。
JSR:Java Specification Requests
Java 規範提案。是指向JCP(Java Community Process)提出新增一個標準化技術規範的正式請求。任何人都可以提交JSR,以向Java平臺增添新的API和服務。JSR已成為Java界的一個重要標準。
即為一個規範代號:JSR311,JSR303等
完整JSR列表請檢視JCP官網
版本
JSR311: 即代號為311的規範請求,對應JAX-RS規範,版本為 1.0
JSR399: 即代號為399的規範請求,對應JAX-RS規範,版本為 2.0
JAX-RS對應實現
何為實現
對於規範的實現,可以理解為面嚮物件語言中實現介面的概念。介面定義的即是一種規範、一種約束,由具體的模組來去完整的詮釋這種規範,此為實現。
下面是不同組織用來詮釋JAX-RS規範的不同產品:
- Apache CXF,開源的Web服務框架。
- Jersey, 由Sun提供的JAX-RS的參考實現。
- RESTEasy,JBoss的實現。
- Restlet,由Jerome Louvel和Dave Pawson開發,是最早的REST框架,先於JAX-RS出現。
- Apache Wink,一個Apache軟體基金會孵化器中的專案,其服務模組實現JAX-RS規範
這裡討論Jersey和RESTEasy:
Jersey1.x:JAX-RS 1.0
Jersey2.x:JAX-RS 2.0
RESTEasy1.x/2.x:JAX-RS 1.0
RESTEasy3.x:JAX-RS 2.0
Jar包區別
在JAX-RS規範的具體應用中,經常會遇見jsr311-api.jar,jsr311-api.jar,jaxrs-api.jar,jersey-core這幾種包,下面對這些包的區別做了描述:
- jsr311-api:JAX-RS 1.0 的官方規範包
- javax.ws.rs-api:JAX-RS 2.0 的官方規範包
(以上為官方標準規範包,其中包含對應的註解和一些輔助類)
- jaxrs-api:RESTEasy規範包,其中包含對應版本JAX-RS規範的內容以及自定義的異常和介面
- jersey-core:Jersey規範包,包含對應版本JAX-RS規範的內容以及部分實現,餘下實現在jersey的其他包中