อะไรคือความแตกต่างระหว่าง Jersey vs Jax-rs


95

ฉันไม่เข้าใจเลยว่าจริงๆแล้วเสื้อคืออะไร ..

สิ่งที่ฉันรู้ก็คือ Jax-RS เป็น API สำหรับสร้างบริการเว็บ REST และเจอร์ซี? ฉันได้รับข้อมูลบางอย่างและทุกคนก็พูดเหมือนกันว่า "เสื้อคือการนำ Jax-RS มาใช้" แต่มันหมายความว่าอย่างไร?

ถ้า jax-rs เป็น API ทำไมเราต้องใช้เจอร์ซีย์เพื่อสร้างบริการเว็บที่เหลือ? เจอร์ซีย์เป็น libs อีกสองสามตัวที่จะเล็งกับ jax-rs หรือไม่? ถ้าใช่ jax-rs เป็น API ที่ไม่สมบูรณ์?


13
นิวเจอร์ซีย์ในการดำเนินงานของ JAX-RS เปค
ไบรอันแมลงสาบ

1
เจอร์ซีเป็นเพียงอินเทอร์เฟซสำหรับใช้ JAX-rs ในวิธีที่ง่ายกว่า JAX-RS ไม่ได้ให้ servlet แต่ Jersey ทำ Jersey จัดเตรียมไลบรารีเพื่อใช้งานเว็บไซต์ Restful ในคอนเทนเนอร์ Java servlet Jersey จัดเตรียมการใช้งาน servlet ซึ่งจะสแกนคลาสที่กำหนดไว้ล่วงหน้าเพื่อระบุรีซอร์ส RESTful ในไฟล์คอนฟิกูเรชัน web.xml ของคุณคุณจะลงทะเบียน servlet นี้สำหรับเว็บแอปพลิเคชันของคุณ
taymedee

1
JAX-RS เป็นข้อกำหนด (ซึ่งโดยทั่วไปจะบอกสิ่งที่ต้องใช้ / ปฏิบัติตาม) และ Jersey คือการนำไปใช้ (ซึ่งหมายถึงวิธีการนำข้อกำหนดเหล่านั้นไปใช้) เราสามารถมีการใช้งานหลายรายการสำหรับข้อกำหนด เรามี libs สำหรับ JAX-RS เนื่องจากเราสามารถใช้ JAX-RS API ในโค้ดของคุณได้ดังนั้นในอนาคตหากคุณเปลี่ยนการใช้งานของคุณ (ในกรณีนี้คือเจอร์ซีย์เป็นอย่างอื่น) โค้ดของคุณจะยังคงทำงานได้ดี คุณสามารถเชื่อมโยงกับอินเทอร์เฟซและคลาสการใช้งานของคุณ
Vishal Akkalkote

@VishalAkkalkote สวัสดีฉันพยายามจะห่อหัวของฉันรอบนี้ ฉันใช้ Websphere 8.5 ในที่ทำงานและฉันพยายามเขียนบริการ REST โดยใช้ JAX-RS แต่บทช่วยสอนทั้งหมดแสดง JAX-RS พร้อม Jersy คุณกำลังบอกว่าฉันสามารถเขียนโค้ด EXACT เดียวกันได้และจะใช้งานได้แม้ว่าฉันจะไม่ได้ใช้ Jersy lib?
superPhreshHackerKid

1
@superPhreshHackerKid ค่ะ ควรใช้งานได้หากคุณจะใช้ JAX-RS อย่างใดอย่างหนึ่ง เช่น Apache CXF
Vishal Akkalkote

คำตอบ:


99

JAX-RS เป็นข้อกำหนด (เป็นเพียงคำจำกัดความ) และ Jersey คือการใช้งาน JAX-RS


14
ดังนั้น jax-rs จึงบอกว่าเราควรทำอย่างไรและเจอร์ซีย์จะทำอย่างไร ?? นั่นก็สมเหตุสมผล แต่ทำไมถึงมี jax-rs libs ??
user1851366

20
ตัวอย่างเช่น JAX-RS ให้ชุดอินเทอร์เฟซ (อินเทอร์เฟซ Java มาตรฐาน) ซึ่งดำเนินการโดย Jersey ดังนั้นชุดของอินเทอร์เฟซ (หรือคลาส) จึงจำเป็นสำหรับการพึ่งพาเพื่อดำเนินการ
Ale Zalazar

3
นั่นก็สมเหตุสมผลดี ... แต่เราต้องการคลาสอื่น ๆ เสมอเพื่อใช้ jax-rs ใช่ไหม? แบบนี้
เจอร์ซี่

11
ถูกต้อง. เช่น JAX-RS ให้คุณใช้อินเทอร์เฟซ javax.ws.rs.core.Request และ Jersey ดำเนินการใน com.sun.jersey.spi.container.ContainerRequest
Ale Zalazar

9
นี่เหมือนกับ JPA เป็นข้อกำหนดและไฮเบอร์เนตเป็นหนึ่งในการนำไปใช้งานหรือไม่?
DesirePRG

26

ตรงจากไซต์เสื้อ

เจอร์ซีย์เฟรมเวิร์กเป็นมากกว่าการนำไปใช้อ้างอิง JAX-RS Jersey มี API ของตัวเองที่ขยายชุดเครื่องมือ JAX-RS พร้อมคุณสมบัติและยูทิลิตี้เพิ่มเติมเพื่อลดความซับซ้อนของบริการ RESTful และการพัฒนาไคลเอ็นต์ เจอร์ซีย์ยังเปิดเผย SPI ส่วนขยายจำนวนมากเพื่อให้นักพัฒนาสามารถขยาย Jersey ให้เหมาะกับความต้องการของพวกเขามากที่สุด


3
ฉันอ่านเกี่ยวกับเรื่องนี้แล้ว แต่อย่าถามคำถามของฉัน ทำไมเราถึงต้องการเสื้อถ้ามี jax-rs? jax ไม่สมบูรณ์?
user1851366

28
@ user1851366 นึกว่ามีองค์กรใจดีสร้าง (และแจกฟรี) แบบสำหรับรถยนต์ ผู้ผลิตทั่วโลกยอมรับว่าการออกแบบเหล่านั้นเป็นสิ่งที่ดีและใช้รถยนต์จริงตามแบบ JAX-RS ก็เหมือนกับแผนหรือการออกแบบเกี่ยวกับวิธีสร้าง RESTful APIs และผู้ผลิตซอฟต์แวร์ก็รับรู้และนำแนวคิดเหล่านั้นไปใช้กับ RESTful API จริงซึ่งหนึ่งในนั้นเรียกว่า Jersey แต่มีคนอื่น ๆ (เช่น RESTEasy) เช่นเดียวกับผู้ผลิตรายอื่น ๆ นอกเหนือจาก Toyota อาจใช้การออกแบบเพื่อสร้างรถยนต์ในเวอร์ชันของตัวเอง
Edwin Dalorzo

3

JAX-RS เป็นข้อกำหนด (เป็นเพียงคำจำกัดความ) และ Jersey คือการใช้งาน JAX-RS เจอร์ซีย์เฟรมเวิร์กเป็นมากกว่าการนำไปใช้อ้างอิง JAX-RS Jersey มี API ของตัวเองที่ขยายชุดเครื่องมือ JAX-RS พร้อมคุณสมบัติและยูทิลิตี้เพิ่มเติมเพื่อลดความซับซ้อนของบริการ RESTful และการพัฒนาไคลเอ็นต์


2

JAX-RS เป็นข้อมูลจำเพาะและ Jersey คือการใช้งาน JAX-RS - จริง

สิ่งนี้สามารถเข้าใจได้ว่าเกี่ยวข้องกับหลักการ OOPS JAX-RS คืออินเทอร์เฟซและ Jersey เป็นคลาสที่ใช้อินเทอร์เฟซนั้น

ข้อกำหนดเหล่านี้สร้างมาตรฐานสำหรับการพัฒนาและใช้บริการเว็บ

มีการใช้งาน JAX-RS อื่น ๆ เช่น wink, RestEasy

JAX-RS เป็นข้อกำหนดที่ระบุว่าเราจะใช้บริการเว็บได้อย่างไรสิ่งที่จะเป็นประเภทอินพุตรูปแบบอินพุตประเภทเอาต์พุตรูปแบบการกำหนดค่า ฯลฯ มันเป็นเพียงการประกาศประเภทและการนำไปใช้คือไลบรารีเหล่านี้เจอร์ซีย์ wink RestEasy เป็นต้น

นอกจากนี้ Java ยังมีข้อกำหนดเช่น JPA (Java Persistence API) และตามที่กล่าวไว้ข้างต้นมี Hibernate ซึ่งเป็นการใช้งาน JPA


2

การใช้ JAX-RS เพียงอย่างเดียวไม่สามารถใช้งาน REST ได้จำเป็นต้องลงทะเบียน Jersey เป็นตัวส่ง servlet สำหรับคำขอ REST บน web.xml

JAX-RS API มาตรฐานและพกพาได้รับการออกแบบ เฟรมเวิร์ก Jersey RESTful Web Services เป็นโอเพ่นซอร์สคุณภาพการผลิตเฟรมเวิร์กสำหรับการพัฒนา RESTful Web Services ใน Java ที่ให้การสนับสนุน JAX-RS API และทำหน้าที่เป็น JAX-RS (JSR 311 & JSR 339) Reference Implementation

เจอร์ซีย์เฟรมเวิร์กเป็นมากกว่าการนำไปใช้อ้างอิง JAX-RS Jersey มี API ของตัวเองซึ่งขยายชุดเครื่องมือ JAX-RS พร้อมคุณสมบัติและยูทิลิตี้เพิ่มเติมเพื่อลดความซับซ้อนของบริการ RESTful และการพัฒนาไคลเอ็นต์ ที่มา

สำหรับข้อมูลเพิ่มเติม

Restlet และ Jersey เป็นการนำ JAX-RS ที่ได้รับความนิยมมากที่สุดสองรายการมาใช้สำหรับการพัฒนาบริการเว็บ RESTful ในระบบนิเวศของ Java แต่ยังมีการใช้งานอื่น ๆ อีกสองสามอย่างเช่น Apache Wink, Apache CXF และ JBoss RESTEasy ที่มา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.