JAX-RS
JAX-RS is a specification for implementing REST web services in Java, currently defined by the JSR-370. It is part of the Java EE technologies, currently defined by the JSR 366.
Jersey (shipped with GlassFish and Payara) is the JAX-RS reference implementation, however there are other implementations such as RESTEasy (shipped with JBoss EAP and WildFly) and Apache CXF (shipped with TomEE and WebSphere).
Spring Framework
The Spring Framework is a full framework that allows you to create Java enterprise applications. The REST capabilities are provided by the Spring MVC module (same module that provides model-view-controller capabilities). It is not a JAX-RS implementation and can be seen as a Spring alternative to the JAX-RS standard.
The Spring ecosystem also provides a wide range of projects for creating enterprise applications, covering persistence, security, integration with social networks, batch processing, etc.
Examples
Consider the following resource controller using the JAX-RS API:
@Path("/greetings") public class JaxRsController { @GET @Path("/{name}") @Produces(MediaType.TEXT_PLAIN) public Response greeting(@PathParam("name") String name) { String greeting = "Hello " + name; return Response.ok(greeting).build(); } }
The equivalent implementation using the Spring MVC API would be:
@RestController @RequestMapping("/greetings") public class SpringRestController { @RequestMapping(method = RequestMethod.GET, value = "/{name}", produces = MediaType.TEXT_PLAIN_VALUE) public ResponseEntity<?> greeting(@PathVariable String name) { String greeting = "Hello " + name; return new ResponseEntity<>(greeting, HttpStatus.OK); } }
Using Spring Boot and Jersey
Spring Boot provides the spring-boot-starter-jersey module that allows you to use the JAX-RS programming model for the REST endpoints instead of Spring MVC. It works quite well with Jersey 2.x.
For a complete example of creating a web application with Jersey 2.x and Spring Boot 1.4.x, refer to this answer.
spring-webmvcmodule that also provides the Spring’s model-view-controller.