Sự khác biệt giữa Jersey và jax-rs


95

Tôi thực sự không thể hiểu thực sự là áo đấu ..

Những gì tôi biết là Jax-RS là một API để xây dựng các dịch vụ web REST và jersey? Tôi nhận được một số thông tin và tất cả đều nói giống nhau: "jersey là một triển khai của Jax-RS". Nhưng nó có nghĩa là gì?

Nếu jax-rs là một API, tại sao chúng ta cần jersey để tạo một dịch vụ web còn lại? Jersey có phải là một vài thứ nữa để nhắm đến với jax-rs? nếu có, jax-rs là một API chưa hoàn chỉnh?


13
Jersey trong một thực hiện của JAX-RS đặc điểm kỹ thuật
Brian Roach

1
Jersey chỉ là một giao diện để sử dụng JAX-rs theo cách dễ dàng hơn. JAX-RS không cung cấp servlet nhưng Jersey thì có. Jersey cung cấp một thư viện để triển khai các dịch vụ web Restful trong một thùng chứa servlet Java, Jersey cung cấp một triển khai servlet để quét các lớp được xác định trước để xác định các tài nguyên RESTful. Trong tệp cấu hình web.xml của bạn, bạn đăng ký servlet này cho ứng dụng web của bạn.
taymedee

1
JAX-RS là một đặc tả (về cơ bản cho biết những gì cần thực hiện / tuân theo) và Jersey là một triển khai (có nghĩa là cách các thông số kỹ thuật đó nên được triển khai). Chúng ta có thể có nhiều cách triển khai cho một Đặc tả. Chúng tôi có các libs cho JAX-RS vì chúng tôi có thể sử dụng API JAX-RS trong mã của bạn để trong tương lai nếu bạn thay đổi cách triển khai của mình (trong trường hợp này là Jersey sang một cái gì đó khác) thì mã của bạn vẫn hoạt động tốt. Bạn có thể liên hệ nó với giao diện và lớp triển khai của bạn.
Vishal Akkalkote

@VishalAkkalkote Xin chào, tôi đang cố gắng giải quyết vấn đề này. Tôi sử dụng Websphere 8.5 tại nơi làm việc và tôi đang cố gắng viết các dịch vụ REST bằng JAX-RS, nhưng tất cả các hướng dẫn đều hiển thị JAX-RS với Jersy. Bạn đang nói rằng, tôi có thể viết cùng một mã CHÍNH XÁC và nó sẽ hoạt động ngay cả khi tôi không sử dụng Jersy lib?
superPhreshHackerKid

1
@superPhreshHackerKid Có. nó sẽ hoạt động miễn là bạn sẽ sử dụng một trong các triển khai của JAX-RS. ví dụ: Apache CXF
Vishal Akkalkote 09/09/18

Câu trả lời:


98

JAX-RS là một đặc tả (chỉ là một định nghĩa) và Jersey là một triển khai JAX-RS.


14
Vậy jax-rs nói chúng ta nên làm gì, và jersey làm điều đó ?? Điều đó có lý, nhưng tại sao lại có jax-rs libs ??
user1851366

20
Ví dụ: JAX-RS cung cấp cho bạn một tập hợp các giao diện (giao diện Java tiêu chuẩn) được thực hiện bởi Jersey. Vì vậy, tập hợp các giao diện (hoặc các lớp) đó là cần thiết như một phần phụ thuộc được thực hiện.
Ale Zalazar

3
tốt, điều đó có ý nghĩa ... Nhưng, chúng ta luôn cần các lớp khác để triển khai jax-rs, phải không? Như thế này một, áo ..
user1851366

10
Đúng rồi. tức là JAX-RS cung cấp cho bạn giao diện javax.ws.rs.core.Request và Jersey cụ nó trong com.sun.jersey.spi.container.ContainerRequest
Ale Zalazar

9
điều này có giống như JPA là đặc điểm kỹ thuật và ngủ đông là một trong những cách triển khai của nó?
DesirePRG

26

Trực tiếp từ trang web áo đấu

Khung Jersey không chỉ là Triển khai Tham chiếu JAX-RS. Jersey cung cấp API của riêng mình để mở rộng bộ công cụ JAX-RS với các tính năng và tiện ích bổ sung để đơn giản hóa hơn nữa dịch vụ RESTful và phát triển khách hàng. Jersey cũng tiết lộ nhiều SPI mở rộng để các nhà phát triển có thể mở rộng Jersey cho phù hợp nhất với nhu cầu của họ.


3
Chà, tôi đã đọc về điều đó, nhưng đừng hỏi câu hỏi của tôi. Tại sao chúng ta cần jersey nếu chúng ta có jax-rs? jax không đầy đủ?
user1851366

28
@ user1851366 Hãy tưởng tượng rằng có một tổ chức nhân từ tạo ra (và tặng miễn phí) thiết kế cho ô tô. Các nhà sản xuất trên thế giới công nhận rằng những thiết kế đó là tốt và thực hiện những chiếc xe thật dựa trên những thiết kế đó. Chà, JAX-RS chỉ giống như một kế hoạch hoặc thiết kế về cách xây dựng các API RESTful, và các nhà sản xuất phần mềm nhận ra nó và thực hiện những ý tưởng đó bằng các API RESTful thực, một trong số này được gọi là Jersey, nhưng có một số khác (tức là RESTEasy). Cũng như nhiều nhà sản xuất khác ngoài Toyota có thể sử dụng thiết kế để tạo ra phiên bản ô tô của riêng họ.
Edwin Dalorzo

3

JAX-RS là một đặc tả (chỉ là một định nghĩa) và Jersey là một triển khai JAX-RS. Khung Jersey không chỉ là Triển khai Tham chiếu JAX-RS. Jersey cung cấp API của riêng mình để mở rộng bộ công cụ JAX-RS với các tính năng và tiện ích bổ sung để đơn giản hóa hơn nữa dịch vụ RESTful và phát triển khách hàng.


2

JAX-RS là một đặc tả và Jersey là một triển khai JAX-RS. - Đúng

Điều này có thể được hiểu liên quan đến các nguyên tắc OOPS JAX-RS là một Giao diện và Jersey là một lớp thực hiện giao diện đó.

Đặc điểm kỹ thuật này tạo ra TIÊU CHUẨN để phát triển và sử dụng các dịch vụ web.

Có các triển khai JAX-RS khác như wink, RestEasy.

JAX-RS là một đặc tả chỉ định cách chúng ta có thể triển khai các dịch vụ web, đó là kiểu đầu vào, định dạng đầu vào, kiểu đầu ra, định dạng của nó, cấu hình của nó, v.v. Nó chỉ là một khai báo kiểu và việc triển khai nó là các thư viện này, Jersey, nháy mắt RestEasy, v.v.

Hơn nữa, Java cũng có đặc điểm kỹ thuật như JPA (Java Persistence API) và giống như đã đề cập ở trên, có Hibernate là một triển khai của JPA.


2

Chỉ sử dụng JAX-RS không thể triển khai REST, cần đăng ký Jersey làm người điều phối servlet cho các yêu cầu REST trên web.xml

Một API JAX-RS tiêu chuẩn và di động đã được thiết kế. Khung dịch vụ Web Jersey RESTful là mã nguồn mở, chất lượng sản xuất, khuôn khổ để phát triển Dịch vụ Web RESTful trong Java cung cấp hỗ trợ cho các API JAX-RS và đóng vai trò là Triển khai Tham chiếu JAX-RS (JSR 311 & JSR 339).

Khung Jersey không chỉ là Triển khai Tham chiếu JAX-RS. Jersey cung cấp API của riêng mình để mở rộng bộ công cụ JAX-RS với các tính năng và tiện ích bổ sung để đơn giản hóa hơn nữa việc phát triển dịch vụ và ứng dụng khách RESTful. Nguồn

Để biết thêm

Restlet và Jersey là hai trong số cách triển khai phổ biến nhất của JAX-RS được sử dụng để phát triển các dịch vụ web RESTful trong hệ sinh thái Java nhưng có một số cách triển khai khác cũng tồn tại như Apache Wink, Apache CXF và JBoss RESTEasy. Nguồn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.