Que diferença entre Jersey vs jax-rs

95

Eu realmente não consigo entender o que realmente é jersey ..

O que eu sei é que Jax-RS é uma API para a construção de serviços da Web REST e jersey? Recebi algumas informações e todos dizem o mesmo: "jersey é uma implementação do Jax-RS". Mas o que isso significa?

Se jax-rs é uma API, por que precisamos de jersey para criar um serviço web rest? Jersey é mais um par de libs para mirar com jax-rs? se sim, jax-rs é uma API incompleta?

user1851366
fonte
13
Jersey em uma implementação do JAX-RS especificação
Brian Roach
1
Jersey apenas uma interface para usar JAX-rs de forma mais fácil. JAX-RS não forneceu servlet, mas Jersey sim. Jersey fornece uma biblioteca para implementar serviços da web Restful em um contêiner de servlet Java, Jersey fornece uma implementação de servlet que verifica classes predefinidas para identificar recursos RESTful. Em seu arquivo de configuração web.xml, você registra este servlet para seu aplicativo da web.
Taylor
1
JAX-RS é uma especificação (que basicamente diz o que implementar / seguir) e Jersey é uma implementação (o que significa como essas especificações devem ser implementadas). Podemos ter várias implementações para uma Especificação. Temos libs para JAX-RS porque podemos usar APIs JAX-RS em seu código para que, no futuro, se você alterar sua implementação (neste caso, Jersey para outra), seu código ainda funcionará bem. Você pode relacioná-lo com sua interface e classe de implementação.
Vishal Akkalkote
@VishalAkkalkote Olá, estou tentando entender isso. Eu uso o Websphere 8.5 no trabalho e estou tentando escrever serviços REST usando JAX-RS, mas todos os tutoriais mostram JAX-RS com Jersy. Você está dizendo que posso escrever o mesmo código EXATO e ele funcionará mesmo se eu não usar o Jersy lib?
superPhreshHackerKid
1
@superPhreshHackerKid Sim. ele deve funcionar, desde que você use um de implementação de JAX-RS. por exemplo, Apache CXF
Vishal Akkalkote,

Respostas:

98

JAX-RS é uma especificação (apenas uma definição) e Jersey é uma implementação JAX-RS.

Ale Zalazar
fonte
14
Então o jax-rs diz o que devemos fazer e o jersey faz ?? Isso faz sentido, mas por que existem libs jax-rs ??
user1851366
20
Por exemplo: JAX-RS fornece um conjunto de interfaces (interfaces Java padrão) que são implementadas por Jersey. Portanto, esse conjunto de interfaces (ou classes) é necessário como uma dependência a ser implementada.
Ale Zalazar
3
bom, isso faz sentido ... Mas, sempre precisamos de outras classes para implementar o jax-rs, certo? Como este, camisa ..
user1851366
10
Está correto. ou seja, JAX-RS fornece a interface javax.ws.rs.core.Request e Jersey a implementa em com.sun.jersey.spi.container.ContainerRequest
Ale Zalazar
9
é o mesmo que JPA sendo a especificação e hibernate sendo uma de suas implementações?
DesirePRG
26

Direto do site da camisa

O framework Jersey é mais do que a implementação de referência JAX-RS. Jersey fornece sua própria API que estende o kit de ferramentas JAX-RS com recursos e utilitários adicionais para simplificar ainda mais o serviço RESTful e o desenvolvimento de cliente. Jersey também expõe vários SPIs de extensão para que os desenvolvedores possam estender Jersey para melhor atender às suas necessidades.

orangegoat
fonte
3
Bem, eu li sobre isso, mas não faça minha pergunta. Por que precisamos de camisa se temos jax-rs? jax está incompleto?
user1851366
28
@ user1851366 Imagine que haja uma organização benevolente que cria (e distribui gratuitamente) designs de carros. Fabricantes em todo o mundo reconhecem que esses designs são bons e implementam carros reais com base nesses designs. Bem, JAX-RS é como um plano ou projeto sobre como construir APIs RESTful, e os fabricantes de software reconhecem e implementam essas ideias com APIs RESTful reais, uma delas é chamada Jersey, mas existem outras (isto é, RESTEasy). Assim como muitos outros fabricantes, além da Toyota, podem usar os designs para criar suas próprias versões de carros.
Edwin Dalorzo
3

JAX-RS é uma especificação (apenas uma definição) e Jersey é uma implementação JAX-RS. O framework Jersey é mais do que a implementação de referência JAX-RS. Jersey fornece sua própria API que estende o kit de ferramentas JAX-RS com recursos e utilitários adicionais para simplificar ainda mais o serviço RESTful e o desenvolvimento de cliente.

Horia
fonte
2

JAX-RS é uma especificação e Jersey é uma implementação JAX-RS.- Verdadeiro

Isso pode ser entendido relacionando-o aos princípios OOPS. JAX-RS é uma Interface e Jersey é uma classe que implementa essa interface.

Essas especificações criam um PADRÃO para desenvolver e usar os serviços da web.

Existem outras implementações JAX-RS também como wink, RestEasy.

JAX-RS é uma especificação que especifica como podemos implementar os serviços da web, que tipo de entrada, formato de entrada, tipo de saída, seu formato, sua configuração etc. Apenas uma declaração de tipo e sua implementação são essas bibliotecas, Jersey, wink RestEasy etc.

Além disso, Java também tem especificações como JPA (Java Persistence API) e como mencionado acima, há Hibernate que é uma implementação de JPA.

Shivam Kashyap
fonte
2

Usar JAX-RS sozinho não pode implementar REST, é necessário registrar Jersey como o servlet dispatcher para solicitações REST em web.xml

Uma API JAX-RS padrão e portátil foi projetada. O framework Jersey RESTful Web Services é open source, qualidade de produção, framework para desenvolver RESTful Web Services em Java que fornece suporte para APIs JAX-RS e serve como uma implementação de referência JAX-RS (JSR 311 e JSR 339).

O framework Jersey é mais do que a implementação de referência JAX-RS. Jersey fornece sua própria API que estende o kit de ferramentas JAX-RS com recursos e utilitários adicionais para simplificar ainda mais o serviço RESTful e o desenvolvimento de cliente. Fonte

Para mais

Restlet e Jersey são duas das implementações mais populares de JAX-RS usadas para desenvolver serviços da Web RESTful no ecossistema Java, mas também existem algumas outras implementações, por exemplo, Apache Wink, Apache CXF e JBoss RESTEasy. Fonte

Premraj
fonte