50

我一直在使用 JAX-RS 参考实现(Jersey)做一些工作。我知道至少有两个其他框架(Restlet 和 Apache CXF)。

我的问题是:有没有人对这些框架进行过比较,如果有,你会推荐哪个框架,为什么?

4

7 回答 7

29

FWIW 我们使用 Jersey 作为其包装的全部功能(例如 WADL、隐式视图、XML/JSON/Atom 支持)背后有一个庞大而充满活力的开发人员社区,并且具有出色的spring 集成

如果您使用 JBoss/SEAM,您可能会发现 RESTeasy 集成得更好——但如果您使用 Spring 进行依赖注入,那么 Jersey 似乎是最简单、最流行、最活跃和功能强大的实现。

于 2008-09-17T10:46:15.013 回答
25

Restlet有一个广泛的 Spring、WADL、XML、JSON 以及更多扩展列表,包括 JAX-RS API 的扩展。

它也是六个一致版本中唯一可用的框架:

  • Java SE
  • Java EE
  • 谷歌网络工具包
  • 谷歌应用引擎
  • 安卓
  • OSGi 环境

它的主要好处是:

  • 当 JAX-RS 设计用于服务器端处理时,完全对称的客户端和服务器 API
  • 当 JAX-RS 仅是 HTTP 时,HTTP 以外的其他协议的连接器(映射到 HTTP 语义)
  • 更广泛的功能范围,包括通过 Restlet API 的完整 URI 路由控制(但如果需要,可以与 Servlet 集成)
  • 为 NIO 提供全面支持

如果您仅限于 JCP 批准的 API(然后不要使用 Spring 或 JAX-RS 项目的任何扩展,如 Jersey 和 RESTeasy!),那么 JAX-RS API 可能是一个不错的选择,但除此之外,Restlet 是最成熟的框架(最初于 2005 年发布),并将在其 2.0 版本中为您提供注释的所有优点以及强大且可扩展的面向类的框架。

如需更长的功能列表,请查看此页面

最好的问候,杰罗姆·卢维尔

Restlet ~ 创始人和首席开发者 ~ http://www.restlet.org

于 2009-09-24T16:02:05.550 回答
7

我和我的团队广泛使用 Restlet,但没有使用它的 JAX-RS 功能。我可以告诉你,我对 Restlet 开发人员和社区印象深刻。他们非常积极、敬业、反应迅速,并致力于建立一个稳定、高效、可靠和有效的框架。很抱歉,我无法直接解决您的主要兴趣,但我认为您可能会发现我在 Restlet 方面的经验很有价值。

于 2008-09-18T18:37:43.890 回答
6

我的同事提到为什么我们在 Java EE 中使用 RESTeasy (JAX-RS) 的 RESTful Web 服务中使用 RESTeasy 进行当前项目:

没有选择它的参考实现 Jersey,因为我们很难将它与 EJB3 和 Seam 2.0 很好地集成。

我们正在使用 JAX-RS 的 RESTeasy 实现,因为我们可以毫不费力地将它与我们的 EJB 和 Seam 集成。它也有足够的文档。

Apache 有另一个实现,但我没有尝试过,因为它使用的是旧版本的 JAX-RS。

最后,还有另一个用于 Java 的 RESTful Web 服务框架,称为 Restlet,但我们不喜欢它,因为在撰写本文时,它使用的是自定义架构,尽管适当的 JAX-RS 支持正在开发中。

于 2008-09-17T08:05:32.217 回答
6

似乎有 4 个不错的 JAX-RS 实现,所以您可能对其中任何一个都满意。就其价值而言,到目前为止,我发现 Jersey (1.0.2) 非常好。我的需求是相当谦虚,简单的后端服务,照顾管道等等。那个泽西做得很好。

于 2009-02-28T00:50:40.150 回答
6

发现 Apache Wink 非常易于使用,支持 JAX-RS 并且具有许多超出标准的功能。

于 2009-08-17T07:10:34.587 回答
0

I would use no framework. Just the one that comes with your applications server. If you use specifics of one framwork you'll lose portability and you'll be in the hell of what if the vendor of the app server includes a different version of your favourite framework. I'll stick to jax-ws.

于 2013-08-06T07:47:05.600 回答