Apa perbedaan antara Jersey vs Jax-rs

95

Aku benar-benar tidak mengerti apa itu jersey ..

Apa yang saya ketahui adalah bahwa Jax-RS adalah API untuk membangun layanan web REST, dan jersey? Saya mendapat beberapa informasi dan semuanya mengatakan hal yang sama: "jersey adalah implementasi Jax-RS". Tapi apa artinya?

Jika jax-rs adalah API, mengapa kita membutuhkan jersey untuk membuat layanan web istirahat? Apakah jersey adalah beberapa libs lagi untuk dibidik dengan jax-rs? jika ya, jax-rs adalah API yang tidak lengkap?

pengguna1851366
sumber
13
Jersey dalam implementasi spesifikasi
Brian Roach
1
Jersey hanya antarmuka untuk menggunakan JAX-rs dengan cara yang lebih mudah. JAX-RS tidak menyediakan servlet tetapi Jersey menyediakannya. Jersey menyediakan pustaka untuk mengimplementasikan layanan web Restful dalam wadah servlet Java, Jersey menyediakan implementasi servlet yang memindai kelas yang telah ditentukan untuk mengidentifikasi sumber daya RESTful. Dalam file konfigurasi web.xml Anda, daftarkan servlet ini untuk aplikasi web Anda.
taymedee
1
JAX-RS adalah spesifikasi (yang pada dasarnya memberitahu apa yang harus diterapkan / diikuti) dan Jersey adalah implementasi (yang berarti bagaimana spesifikasi tersebut harus diimplementasikan). Kita dapat memiliki beberapa implementasi untuk sebuah Spesifikasi. Kami memiliki libs untuk JAX-RS karena kami dapat menggunakan JAX-RS API di kode Anda sehingga di masa mendatang jika Anda mengubah implementasi Anda (dalam hal ini Jersey ke yang lain) kode Anda akan tetap berfungsi dengan baik. Anda dapat menghubungkannya dengan antarmuka dan kelas implementasi Anda.
Vishal Akkalkote
@VishalAkkalkote Halo, Saya mencoba memahami ini. Saya menggunakan Websphere 8.5 di tempat kerja, dan saya mencoba menulis layanan REST menggunakan JAX-RS, tetapi semua tutorial menunjukkan JAX-RS dengan Jersy. Apakah maksud Anda, saya dapat menulis kode TEPAT dan akan berfungsi meskipun saya tidak menggunakan Jersy lib?
superPhreshHackerKid
1
@superhackerid Ya. itu harus berfungsi asalkan Anda akan menggunakan salah satu implementasi JAX-RS. misalnya Apache CXF
Vishal Akkalkote

Jawaban:

99

JAX-RS adalah spesifikasi (hanya definisi) dan Jersey adalah implementasi JAX-RS.

Ale Zalazar
sumber
14
Jadi jax-rs mengatakan apa yang harus kita lakukan, dan jersey melakukannya ?? Itu masuk akal, tapi kenapa ada jax-rs libs ??
pengguna1851366
20
Misalnya: JAX-RS memberi Anda satu set antarmuka (antarmuka Java standar) yang diimplementasikan oleh Jersey. Sehingga sekumpulan interface (atau kelas) dibutuhkan sebagai dependensi untuk diimplementasikan.
Ale Zalazar
3
Yah, itu masuk akal ... Tapi, kita selalu membutuhkan kelas lain untuk mengimplementasikan jax-rs, bukan? Seperti yang satu ini, jersey ..
user1851366
11
Itu benar. yaitu JAX-RS memberi Anda antarmuka javax.ws.rs.core.Request dan Jersey mengimplementasikannya di com.sun.jersey.spi.container.ContainerRequest
Ale Zalazar
9
apakah ini sama dengan JPA yang spesifikasinya dan hibernate menjadi salah satu implementasinya?
DesirePRG
26

Langsung dari situs jersey

Kerangka jersey lebih dari Implementasi Referensi JAX-RS. Jersey menyediakan API-nya sendiri yang memperluas toolkit JAX-RS dengan fitur dan utilitas tambahan untuk lebih menyederhanakan layanan RESTful dan pengembangan klien. Jersey juga memaparkan banyak SPI ekstensi sehingga pengembang dapat memperluas Jersey agar sesuai dengan kebutuhan mereka.

orang kambing
sumber
3
Yah, saya membaca tentang itu, tapi jangan tanya pertanyaan saya. Mengapa kita membutuhkan jersey jika kita memiliki jax-rs? jax tidak lengkap?
pengguna1851366
28
@ user1851366 Bayangkan bahwa ada organisasi baik hati yang menciptakan (dan memberikan secara gratis) desain untuk mobil. Produsen di seluruh dunia menyadari bahwa desain tersebut bagus dan menerapkan mobil asli berdasarkan desain tersebut. Nah, JAX-RS hanya seperti sebuah rencana atau desain tentang bagaimana membangun RESTful API, dan produsen perangkat lunak mengenalinya dan mengimplementasikan ide-ide tersebut dengan RESTful API yang sebenarnya, salah satunya disebut Jersey, tetapi ada yang lain (yaitu RESTEasy). Seperti banyak pabrikan lain selain Toyota yang dapat menggunakan desain tersebut untuk membuat mobil versi mereka sendiri.
Edwin Dalorzo
3

JAX-RS adalah spesifikasi (hanya definisi) dan Jersey adalah implementasi JAX-RS. Kerangka Jersey lebih dari Implementasi Referensi JAX-RS. Jersey menyediakan API-nya sendiri yang memperluas toolkit JAX-RS dengan fitur dan utilitas tambahan untuk lebih menyederhanakan layanan RESTful dan pengembangan klien.

Horia
sumber
2

JAX-RS adalah spesifikasi dan Jersey adalah implementasi JAX-RS. - Benar

Hal ini dapat dipahami berkaitan dengan prinsip OOPS. JAX-RS adalah Antarmuka dan Jersey adalah kelas yang mengimplementasikan antarmuka itu.

Spesifikasi ini menciptakan STANDAR untuk mengembangkan dan menggunakan layanan web.

Ada juga implementasi JAX-RS lain seperti wink, RestEasy.

JAX-RS adalah spesifikasi yang menentukan bagaimana kita dapat mengimplementasikan layanan web, apa yang akan menjadi jenis masukan, format masukan, jenis keluaran, format, konfigurasinya, dll. Deklarasi Hanya tipe dan implementasinya adalah perpustakaan ini, Jersey, mengedipkan mata RestEasy dll.

Lebih lanjut, Java juga memiliki spesifikasi seperti JPA (Java Persistence API) dan seperti yang disebutkan di atas ada Hibernate yang merupakan implementasi dari JPA.

Shivam Kashyap
sumber
2

Menggunakan JAX-RS saja tidak dapat mengimplementasikan REST, perlu mendaftarkan Jersey sebagai dispatcher servlet untuk permintaan REST pada web.xml

API JAX-RS standar dan portabel telah dirancang. Jersey RESTful Web Services framework adalah open source, kualitas produksi, kerangka kerja untuk mengembangkan RESTful Web Services di Java yang menyediakan dukungan untuk JAX-RS API dan berfungsi sebagai Implementasi Referensi JAX-RS (JSR 311 & JSR 339).

Kerangka jersey lebih dari Implementasi Referensi JAX-RS. Jersey menyediakan API-nya sendiri yang memperluas toolkit JAX-RS dengan fitur dan utilitas tambahan untuk lebih menyederhanakan layanan RESTful dan pengembangan klien. Sumber

Untuk lebih

Restlet dan Jersey adalah dua implementasi paling populer dari JAX-RS yang digunakan untuk mengembangkan layanan web RESTful di ekosistem Java tetapi ada beberapa implementasi lain yang juga ada, misalnya Apache Wink, Apache CXF, dan JBoss RESTEasy. Sumber

Premraj
sumber