Jakarta RESTful Web Services
Jakarta RESTful Web Services, is a Jakarta EE API specification that provides support in creating web services according to the Representational State Transfer architectural pattern. 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 deployment descriptor is required.
Specification
JAX-RS provides some annotations to aid in mapping a resource class as a web resource. The annotations use the Java packagejakarta.ws.rs. They include:@Path specifies the relative path for a resource class or method.@GET, @POST, @PUT, @PATCH, @DELETE, @HEAD and @OPTIONS specify the HTTP request type of a resource.@Produces specifies the response Internet media types.@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.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 a common client API and support for Hypermedia following the HATEOAS-principle of REST. In May 2013, it reached the Final Release stage.On 2017-08-22 JAX-RS 2.1 specification final release was published.
Main new supported features include
server-sent events,
reactive clients,
and JSON-B.
Implementations
Implementations of JAX-RS include:- Apache CXF, an open source Web service framework
- Jersey, the reference implementation from Sun
- , JBoss's implementation
- Restlet
- WebSphere Application Server from IBM:
- * Version 7.0: via the
- * Version 8.0 onwards: natively
- WebLogic Application Server from Oracle, see
- Apache Tuscany, discontinued
- Cuubez framework
- , Codenvy's Implementation
- , Java Application Framework optimized for Google App Engine, including a powerful RESTful engine and comprehensive Data Authorization model.
- Apache TomEE, an addition to Apache Tomcat
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/
- https://www.javavogue.com/2015/03/java-jerseyjax-rs-tutorials/
- http://howtodoinjava.com/restful-web-service/
- https://jakarta.ee/learn/starter-guides/how-to-build-a-restful-web-service/
- https://jakarta.ee/learn/starter-guides/how-to-secure-a-restful-web-service/
- https://jakarta.ee/learn/docs/jakartaee-tutorial/current/websvcs/rest/rest.html
- https://jakarta.ee/learn/specification-guides/restful-web-services-explained/