Software:Java API for RESTful Web Services
Developer(s) | Oracle Corporation (initial code from Sun Microsystems) |
---|---|
Stable release | 2.1
/ September 21, 2017 |
Written in | Java |
Operating system | Cross-platform |
Platform | Java Virtual Machine |
Type | Application framework |
License | CDDL v1.1 and GPL v2 |
Website | github |
JAX-RS: Java API for RESTful Web Services (JAX-RS) is a Java programming language API spec that provides support in creating web services according to the Representational State Transfer (REST) architectural pattern.[1] JAX-RS uses annotations, introduced in Java SE 5, to simplify the development and deployment of web service clients and endpoints.
From version 1.1 on, JAX-RS is an official part of Java EE 6. A notable feature of being an official part of Java EE is that no configuration is necessary to start using JAX-RS. For non-Java EE 6 environments a small entry in the web.xml deployment descriptor is required.
Specification
JAX-RS provides some annotations to aid in mapping a resource class (a POJO) as a web resource. The annotations use the Java package javax.ws.rs
. They include:
@Path
specifies the relative path for a resource class or method.@GET
,@PUT
,@POST
,@DELETE
and@HEAD
specify the HTTP request type of a resource.@Produces
specifies the response Internet media types (used for content negotiation).@Consumes
specifies the accepted request Internet media types.
In addition, it provides further annotations to method parameters to pull information out of the request. All the @*Param
annotations take a key of some form which is used to look up the value required.
@PathParam
binds the method parameter to a path segment.@QueryParam
binds the method parameter to the value of an HTTP query parameter.@MatrixParam
binds the method parameter to the value of an HTTP matrix parameter.@HeaderParam
binds the method parameter to an HTTP header value.@CookieParam
binds the method parameter to a cookie value.@FormParam
binds the method parameter to a form value.@DefaultValue
specifies a default value for the above bindings when the key is not found.@Context
returns the entire context of the object (for example@Context HttpServletRequest request
).
JAX-RS 2.0
In January 2011 the JCP formed the JSR 339 expert group to work on JAX-RS 2.0. The main targets are (among others) a common client API and support for Hypermedia following the HATEOAS-principle of REST. In May 2013, it reached the Final Release stage.[2]
On 2017-08-22 JAX-RS 2.1[3] specification final release was published . Main new supported features include server-sent events, reactive clients, and JSON-B [4].
Implementations
Implementations of JAX-RS include:[5]
- Apache CXF, an open source Web service framework
- Jersey, the reference implementation from Sun (now Oracle)
- RESTeasy, JBoss's implementation
- Restlet
- WebSphere Application Server from IBM:
- Version 7.0: via the "Feature Pack for Communications Enabled Applications"
- Version 8.0 onwards: natively
- WebLogic Application Server from Oracle, see notes
- Apache Tuscany (http://tuscany.apache.org/documentation-2x/sca-java-bindingrest.html), discontinued
- Cuubez framework (http://www.cuubez.com)
- Everrest, Codenvy's Implementation
- Jello-Framework, Java Application Framework optimized for Google App Engine, including a powerful RESTful engine and comprehensive Data Authorization model.
Tutorials
- https://javabrains.io/courses/javaee_jaxrs/
- http://docs.oracle.com/javaee/6/tutorial/doc/giepu.html
- http://www.vogella.com/tutorials/REST/article.html
- http://www.mkyong.com/tutorials/jax-rs-tutorials/
- http://www.coderpanda.com/jax-rs-tutorial/
- http://howtodoinjava.com/restful-web-service/
References
- ↑ Hadley, p. 1.
- ↑ "JSR 339: JAX-RS 2.0: The Java API for RESTful Web Services". http://jcp.org/en/jsr/detail?id=339.
- ↑ "JSR 370: Java API for RESTful Web Services (JAX-RS 2.1) Specification". http://jcp.org/en/jsr/detail?id=370.
- ↑ "JSR 367: Java API for JSON Binding (JSON-B)". http://jcp.org/en/jsr/detail?id=367.
- ↑ Little, Mark (October 1, 2008). "A Comparison of JAX-RS Implementations". http://www.infoq.com/news/2008/10/jaxrs-comparison.
- Hadley, Marc and Paul Sandoz, eds. (September 17, 2009). JAX-RS: Java API for RESTful WebServices (version 1.1), Java Community Process