JAX-RS (Java API for RESTful Web Services)

JAX-RS, short for Java API for RESTful Web Services, is a [[Java]] programming language API spec that provides support in creating web services according to the Representational State Transfer ([[REST APIs|REST]]) architectural pattern.

It is part of the [[Java Enterprise Edition (Java EE)]] platform and has been included as a standard for building RESTful web services in Java. JAX-RS uses annotations to simplify the development and deployment of web service clients and endpoints.

JAX-RS is specifically designed for creating and consuming RESTful web services. REST is an architectural style that uses [[HTTP protocol]] for data communication, emphasizing scalability, stateless communication, and the use of standard HTTP methods like GET, POST, PUT, DELETE, etc.

JAX-RS uses Java annotations to map HTTP requests to Java methods, define query and path parameters, and control response formats. This simplifies the process of developing RESTful web services. In JAX-RS, a web resource is a Java class annotated with @Path and contains methods annotated with HTTP verbs representing the resource's operations.

Annotations such as @GET, @POST, @PUT, and @DELETE are used to specify the corresponding HTTP methods on Java methods. JAX-RS supports various data formats for request and response payloads, including XML, JSON, and plain text, through the use of annotations like @Produces and @Consumes.

Annotations like @PathParam, @QueryParam, @HeaderParam, and @FormParam allow methods to accept different types of parameters from HTTP requests. JAX-RS also provides a client API for interacting with RESTful web services, allowing for the development of HTTP clients in a standardized way.

JAX-RS allows developers to use and create providers that can add additional behavior to the service, such as message body readers and writers, exception mappers, and filters. JAX-RS can be integrated with other Java EE technologies like [[Enterprise JavaBeans (EJBs)|EJBs]], [[Java Persistence API (JPA)|JPA]], [[CDI]], and [[JSON-P]].

Popular implementations of JAX-RS include [[Jersey]] (the reference implementation), [[RESTEasy]], and [[Apache CXF]].