Jaka jest różnica między Jersey a jax-rs

95

Naprawdę nie rozumiem, czym tak naprawdę jest koszulka.

Co wiem, to to, że Jax-RS to API do tworzenia usług sieciowych REST, a jersey? Mam trochę informacji i wszyscy mówią to samo: „koszulka to realizacja Jax-RS”. Ale co to oznacza?

Jeśli jax-rs to API, po co nam jersey do stworzenia reszty usługi sieciowej? Czy jersey to jeszcze kilka bibliotek do wycelowania w jax-rs? jeśli tak, jax-rs to niekompletny interfejs API?

user1851366
źródło
13
Koszulka w realizacji części JAX-RS specyfikacji
Brian Roach
1
Jersey to tylko interfejs do łatwiejszego korzystania z JAX-rs. JAX-RS nie zapewnia serwletu, ale Jersey tak. Jersey dostarcza bibliotekę do implementacji Restful webservices w kontenerze serwletów Java, Jersey zapewnia implementację serwletu, która skanuje predefiniowane klasy w celu identyfikacji zasobów RESTful. W pliku konfiguracyjnym web.xml zarejestruj ten serwlet dla swojej aplikacji internetowej.
taymedee
1
JAX-RS to specyfikacja (która w zasadzie mówi, co wdrożyć / przestrzegać), a Jersey to implementacja (co oznacza, jak te specyfikacje powinny być implementowane). Możemy mieć wiele implementacji specyfikacji. Mamy biblioteki dla JAX-RS, ponieważ możemy używać API JAX-RS w twoim kodzie, więc w przyszłości, jeśli zmienisz implementację (w tym przypadku Jersey na coś innego), kod nadal będzie działał dobrze. Możesz powiązać to ze swoim interfejsem i klasą implementacji.
Vishal Akkalkote
@VishalAkkalkote Witam, próbuję to obejść. W pracy używam Websphere 8.5 i próbuję pisać usługi REST w JAX-RS, ale wszystkie tutoriale pokazują JAX-RS z Jersy. Mówisz, że mogę napisać ten sam DOKŁADNY kod i będzie działał, nawet jeśli nie używam Jersy lib?
superPhreshHackerKid,
1
@superPhreshHackerKid Yes. powinien działać pod warunkiem, że użyjesz jednej z implementacji JAX-RS. np. Apache CXF
Vishal Akkalkote

Odpowiedzi:

99

JAX-RS to specyfikacja (tylko definicja), a Jersey to implementacja JAX-RS.

Ale Zalazar
źródło
14
Więc jax-rs mówią, co powinniśmy zrobić, a jersey to robi? To ma sens, ale dlaczego istnieją biblioteki jax-rs?
user1851366
20
Na przykład: JAX-RS zapewnia zestaw interfejsów (standardowe interfejsy Java), które są implementowane przez Jersey. Tak więc ten zestaw interfejsów (lub klas) jest potrzebny jako zależność do zaimplementowania.
Ale Zalazar
3
Cóż, to ma sens ... Ale zawsze potrzebujemy innych klas do implementacji jax-rs, prawda? Tak jak ten, jersey ..
user1851366
11
To jest poprawne. tj. JAX-RS udostępnia interfejs javax.ws.rs.core.Request, a Jersey implementuje go w com.sun.jersey.spi.container.ContainerRequest
Ale Zalazar
9
czy to to samo, co JPA jest specyfikacją, a hibernacja jest jedną z jej implementacji?
DesirePRG
26

Prosto z jersey miejscu

Struktura Jersey to coś więcej niż implementacja referencyjna JAX-RS. Jersey zapewnia własne API, które rozszerza zestaw narzędzi JAX-RS o dodatkowe funkcje i narzędzia, aby jeszcze bardziej uprościć obsługę REST i rozwój klienta. Jersey udostępnia również liczne rozszerzenia SPI, dzięki czemu programiści mogą rozszerzyć Jersey, aby najlepiej odpowiadała ich potrzebom.

orangegoat
źródło
3
Cóż, czytałem o tym, ale nie zadawaj mojego pytania. Po co nam koszulka, skoro mamy jax-rs? jax jest niekompletny?
user1851366
28
@ user1851366 Wyobraź sobie, że istnieje życzliwa organizacja, która tworzy (i rozdaje za darmo) projekty samochodów. Producenci na całym świecie uznają te projekty za dobre i na ich podstawie wdrażają prawdziwe samochody. Cóż, JAX-RS jest jak plan lub projekt tworzenia RESTful API, a producenci oprogramowania rozpoznają to i wdrażają te pomysły za pomocą prawdziwych RESTful API, jeden z nich nazywa się Jersey, ale są też inne (np. RESTEasy). Tak jak wielu innych producentów poza Toyotą może wykorzystywać projekty do tworzenia własnych wersji samochodów.
Edwin Dalorzo
3

JAX-RS to specyfikacja (tylko definicja), a Jersey to implementacja JAX-RS. Struktura Jersey to coś więcej niż implementacja referencyjna JAX-RS. Jersey zapewnia własne API, które rozszerza zestaw narzędzi JAX-RS o dodatkowe funkcje i narzędzia, aby jeszcze bardziej uprościć obsługę REST i rozwój klienta.

Horia
źródło
2

JAX-RS to specyfikacja, a Jersey to implementacja JAX-RS. - Prawda

Można to zrozumieć w odniesieniu do zasad OOPS. JAX-RS jest interfejsem, a Jersey to klasa implementująca ten interfejs.

Niniejsza specyfikacja tworzy STANDARD dla rozwoju i korzystania z usług internetowych.

Istnieją również inne implementacje JAX-RS, takie jak wink, RestEasy.

JAX-RS to specyfikacja, która określa, w jaki sposób możemy zaimplementować usługi sieciowe, jaki byłby typ wejścia, format wejściowy, typ wyjścia, jego format, jego konfiguracja itp. To tylko deklaracja typu i jej implementacja to te biblioteki, Jersey, mrugnij RestEasy itp.

Co więcej, Java ma również specyfikację taką jak JPA (Java Persistence API) i jak wspomniano powyżej, istnieje Hibernate, który jest implementacją JPA.

Shivam Kashyap
źródło
2

Używanie samego JAX-RS nie może zaimplementować REST, należy zarejestrować Jersey jako dyspozytor serwletów dla żądań REST na web.xml

Zaprojektowano standardowe i przenośne API JAX-RS. Jersey RESTful Web Services Framework to platforma o jakości produkcyjnej typu open source do tworzenia usług internetowych RESTful w języku Java, która zapewnia obsługę interfejsów API JAX-RS i służy jako implementacja referencyjna JAX-RS (JSR 311 i JSR 339).

Struktura Jersey to coś więcej niż implementacja referencyjna JAX-RS. Jersey zapewnia własne API, które rozszerza zestaw narzędzi JAX-RS o dodatkowe funkcje i narzędzia, aby jeszcze bardziej uprościć obsługę REST i rozwój klienta. Źródło

Więcej

Restlet i Jersey to dwie najpopularniejsze implementacje JAX-RS używane do tworzenia usług sieciowych RESTful w ekosystemie Java, ale istnieje również kilka innych implementacji, np. Apache Wink, Apache CXF i JBoss RESTEasy. Źródło

Premraj
źródło