¿Qué diferencia hay entre Jersey vs jax-rs?

95

Realmente no puedo entender lo que realmente es jersey.

Lo que sé es que Jax-RS es una API para crear servicios web REST y jersey. Conseguí algo de información y todos dicen lo mismo: "jersey es una implementación de Jax-RS". ¿Pero qué significa?

Si jax-rs es una API, ¿por qué necesitamos jersey para crear un servicio web de descanso? ¿Jersey es un par de bibliotecas más para apuntar con jax-rs? Si es así, ¿jax-rs es una API incompleta?

usuario1851366
fuente
13
Jersey en una aplicación de la JAX-RS especificación
Brian Roach
1
Jersey solo una interfaz para usar JAX-rs de una manera más fácil. JAX-RS no proporciona servlet, pero Jersey sí. Jersey proporciona una biblioteca para implementar servicios web Restful en un contenedor de servlets Java, Jersey proporciona una implementación de servlet que escanea clases predefinidas para identificar recursos RESTful. En su archivo de configuración web.xml, registre este servlet para su aplicación web.
taymedee
1
JAX-RS es una especificación (que básicamente dice qué implementar / seguir) y Jersey es una implementación (lo que significa cómo deben implementarse esas especificaciones). Podemos tener múltiples implementaciones para una Especificación. Tenemos librerías para JAX-RS porque podemos usar las API de JAX-RS en su código para que en el futuro, si cambia su implementación (en este caso, Jersey a otra cosa), su código seguirá funcionando bien. Puede relacionarlo con su interfaz y clase de implementación.
Vishal Akkalkote
@VishalAkkalkote Hola, estoy tratando de entender esto. Utilizo Websphere 8.5 en el trabajo y estoy tratando de escribir servicios REST usando JAX-RS, pero todos los tutoriales muestran JAX-RS con Jersy. ¿Estás diciendo que puedo escribir el mismo código EXACTO y funcionará incluso si no uso Jersy lib?
superPhreshHackerKid
1
@superPhreshHackerKid Sí. debería funcionar siempre que utilice una implementación de JAX-RS. por ejemplo, Apache CXF
Vishal Akkalkote

Respuestas:

98

JAX-RS es una especificación (solo una definición) y Jersey es una implementación de JAX-RS.

Ale Zalazar
fuente
14
Entonces los jax-rs dicen lo que debemos hacer, ¿y jersey lo hace? Eso tiene sentido, pero ¿por qué hay librerías jax-rs?
user1851366
20
Por ejemplo: JAX-RS le ofrece un conjunto de interfaces (interfaces Java estándar) que son implementadas por Jersey. De modo que ese conjunto de interfaces (o clases) son necesarias como dependencia para ser implementadas.
Ale Zalazar
3
bueno, eso tiene sentido ... Pero, siempre necesitamos otras clases para implementar jax-rs, ¿verdad? Como este, jersey ..
user1851366
10
Eso es correcto. es decir, JAX-RS le brinda la interfaz javax.ws.rs.core.Request y Jersey la implementa en com.sun.jersey.spi.container.ContainerRequest
Ale Zalazar
9
¿Es lo mismo que JPA es la especificación e hibernación es una de sus implementaciones?
DesirePRG
26

Directamente desde el sitio de la camiseta

Jersey framework es más que la implementación de referencia JAX-RS. Jersey proporciona su propia API que amplía el kit de herramientas JAX-RS con funciones y utilidades adicionales para simplificar aún más el servicio RESTful y el desarrollo del cliente. Jersey también expone numerosos SPI de extensión para que los desarrolladores puedan extender Jersey para satisfacer mejor sus necesidades.

cabra naranja
fuente
3
Bueno, leí sobre eso, pero no hagas mi pregunta. ¿Por qué necesitamos jersey si tenemos jax-rs? jax está incompleto?
user1851366
28
@ user1851366 Imagine que hay una organización benévola que crea (y regala gratis) diseños para automóviles. Los fabricantes de todo el mundo reconocen que esos diseños son buenos e implementan autos reales basados ​​en esos diseños. Bueno, JAX-RS es como un plan o diseño sobre cómo construir API RESTful, y los fabricantes de software lo reconocen e implementan esas ideas con API RESTful reales, una de ellas se llama Jersey, pero hay otras (es decir, RESTEasy). Al igual que muchos otros fabricantes, además de Toyota, pueden usar los diseños para crear su propia versión de automóviles.
Edwin Dalorzo
3

JAX-RS es una especificación (solo una definición) y Jersey es una implementación de JAX-RS. Jersey framework es más que la implementación de referencia JAX-RS. Jersey proporciona su propia API que amplía el kit de herramientas JAX-RS con funciones y utilidades adicionales para simplificar aún más el servicio RESTful y el desarrollo del cliente.

Horia
fuente
2

JAX-RS es una especificación y Jersey es una implementación de JAX-RS.

Esto se puede entender relacionándolo con los principios de OOPS. JAX-RS es una interfaz y Jersey es una clase que implementa esa interfaz.

Esta Especificación crea un ESTÁNDAR para desarrollar y utilizar los servicios web.

También hay otras implementaciones de JAX-RS como wink, RestEasy.

JAX-RS es una especificación que especifica cómo podemos implementar los servicios web, qué sería el tipo de entrada, el formato de entrada, el tipo de salida, su formato, su configuración, etc.Sólo una declaración de tipo y su implementación son estas bibliotecas, Jersey, guiño RestEasy etc.

Además, Java también tiene especificaciones como JPA (API de persistencia de Java) y, como se mencionó anteriormente, está Hibernate, que es una implementación de JPA.

Shivam Kashyap
fuente
2

El uso de JAX-RS solo no puede implementar REST, es necesario registrar Jersey como despachador de servlets para solicitudes REST en web.xml

Se ha diseñado una API JAX-RS estándar y portátil. El marco de servicios web RESTful de Jersey es un marco de código abierto, calidad de producción, para desarrollar servicios web RESTful en Java que proporciona soporte para las API de JAX-RS y sirve como una implementación de referencia de JAX-RS (JSR 311 y JSR 339).

Jersey framework es más que la implementación de referencia JAX-RS. Jersey proporciona su propia API que amplía el kit de herramientas JAX-RS con funciones y utilidades adicionales para simplificar aún más el servicio RESTful y el desarrollo del cliente. Fuente

Para más

Restlet y Jersey son dos de las implementaciones más populares de JAX-RS utilizadas para desarrollar servicios web RESTful en el ecosistema Java, pero también existen otras implementaciones, por ejemplo Apache Wink, Apache CXF y JBoss RESTEasy. Fuente

Premraj
fuente