Jersey和jax-rs有什么区别


94

我真的不明白什么是球衣。

我所知道的是Jax-RS是用于构建REST Web服务和jersey的API?我得到了一些信息,所有人都说相同:“球衣是Jax-RS的实现”。但这意味着什么?

如果jax-rs是API,为什么我们需要jersey来创建rest Web服务?球衣是否是针对Jax-rs的更多解放?如果是,jax-rs是不完整的API?


13
实施 JAX-RS 规范的
Brian Roach 2013年

1
Jersey只是一个界面,可以更轻松地使用JAX-rs。JAX-RS没有提供servlet,但是Jersey提供了。Jersey提供了一个在Java servlet容器中实现Restful Web服务的库,Jersey提供了一种Servlet实现,该实现可以扫描预定义的类以识别RESTful资源。在您的web.xml配置文件中,为您的Web应用程序注册该servlet。
taymedee,2015年

1
JAX-RS是一个规范(基本上告诉要实现/遵循的内容),Jersey是一个实现(这意味着应如何实现这些规范)。我们可以为规范提供多种实现。我们拥有JAX-RS的库,因为我们可以在您的代码中使用JAX-RS API,以便将来如果您更改实现(在本例中为Jersey更改为其他名称),您的代码仍然可以正常工作。您可以将其与您的接口和实现类相关联。
Vishal Akkalkote

@VishalAkkalkote您好,我正在努力解决这个问题。我在工作中使用Websphere 8.5,并且尝试使用JAX-RS编写REST服务,但是所有教程都显示了Jersy的JAX-RS。您是说,我可以编写相同的EXACT代码,即使我不使用Jersy lib,它也可以工作吗?
superPhreshHackerKid

1
@superPhreshHackerKid是的。如果您将使用JAX-RS的一种实现,它应该可以工作。例如Apache CXF
Vishal Akkalkote,

Answers:


98

JAX-RS是规范(仅是定义),Jersey是JAX-RS实现。


14
所以jax-rs说我们应该怎么做,而jersey呢?那是有道理的,但是为什么会有jax-rs库?
user1851366

20
例如:JAX-RS为您提供了一组由Jersey实现的接口(标准Java接口)。因此,需要将一组接口(或类)作为要实现的依赖项。
Ale Zalazar

3
好吧,那很有意义...但是,我们总是需要其他类来实现jax-rs,对吧?像这样的,球衣..
user1851366

10
没错 即JAX-RS提供了javax.ws.rs.core.Request接口,Jersey在com.sun.jersey.spi.container.ContainerRequest中实现了该接口
Ale Zalazar 2013年

9
这与JPA是规范一样,休眠是其实现之一吗?
DesirePRG,2015年

26

直接来自球衣网站

Jersey框架不只是JAX-RS参考实现。Jersey提供了自己的API,使用其他功能和实用程序扩展了JAX-RS工具包,以进一步简化RESTful服务和客户端开发。Jersey还公开了许多扩展SPI,以便开发人员可以扩展Jersey以最适合其需求。


3
好吧,我读过有关那件事,但不要问我的问题。如果我们有jax-rs,为什么我们需要球衣?jax不完整?
user1851366

28
@ user1851366想象有一个慈善组织创建(并免费赠送)汽车设计。世界各地的制造商都认识到这些设计是好的,并根据这些设计实现了真正的汽车。嗯,JAX-RS就像是关于如何构建RESTful API的计划或设计,软件制造商认识到它并使用真正的RESTful API实施了这些想法,其中一个被称为Jersey,但还有其他想法(即RESTEasy)。正如丰田以外的许多其他制造商可能会使用这些设计来创建自己的汽车版本。
Edwin Dalorzo

3

JAX-RS是规范(仅是定义),Jersey是JAX-RS实现。Jersey框架不只是JAX-RS参考实现。Jersey提供了自己的API,使用其他功能和实用程序扩展了JAX-RS工具包,以进一步简化RESTful服务和客户端开发。


2

JAX-RS是一个规范,Jersey是JAX-RS的实现。-True

可以将其与OOPS原理相关联来理解,JAX-RS是一个接口,Jersey是实现该接口的类。

这些规范创建了用于开发和使用Web服务的标准。

还有其他JAX-RS实现,例如wink,RestEasy。

JAX-RS是一个规范,它指定了我们如何实现Web服务,即输入类型,输入格式,输出类型,其格式,其配置等。它只是类型声明及其实现,是这些库,Jersey,眨眼的RestEasy等

此外,Java还具有JPA(Java持久性API)之类的规范,并且如上所述,还有Hibernate是JPA的实现。


2

仅使用JAX-RS不能实现REST,需要将Jersey注册为REST请求的servlet调度程序。 web.xml

已经设计了一个标准且可移植的JAX-RS API。Jersey RESTful Web服务框架是开源,生产质量的,用于在Java中开发RESTful Web服务的框架,该框架提供对JAX-RS API的支持,并充当JAX-RS(JSR 311和JSR 339)参考实现。

Jersey框架不只是JAX-RS参考实现。Jersey提供了自己的API,使用其他功能和实用程序扩展了JAX-RS工具包,以进一步简化RESTful服务和客户端开发。资源

欲了解更多

Restlet和Jersey是用于在Java生态系统中开发RESTful Web服务的最流行的JAX-RS实现中的两个,但是还存在其他几个实现,例如Apache Wink,Apache CXF和JBoss RESTEasy。 资源

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.