写点什么

比较各 JAX-RS 实现

  • 2008-10-06
  • 本文字数:1509 字

    阅读完需:约 5 分钟

正如某人在别处说的,关于公交车,有一个奇怪的现象:你等了很久一辆不来,最后却一下来了三辆! JAX-RS 实现貌似也碰到了类似的问题。目前我们有:

  • CXF —— XFire Celtix 的合并(一个由 IONA 赞助的开源 ESB,最初寄存在 ObjectWeb 上)。
  • Jersey ——Sun 公司的 JAX-RS 参考实现。
  • RESTEasy ——JBoss 的 JAX-RS 项目。
  • Restlet ——也许是最早的 REST 框架了,它 JAX-RS 之前就有了。

尽管围绕着REST 存在各种各样的争论,但JAX-RS 提供了Java 语言所需的 REST 支持这一点是无可争议的。如果你是 REST 新手,你会选择哪种实现呢?嗯, Solomon Duskis 试图解答这一问题。他还在 dzone 上指出: > 我想就以下几个“纯”JAX-RS 以外的方面对各 JAX-RS 实现进行比较。

这些方面包括:

  • 产品成熟度
  • 服务端集成策略
  • Java 客户端 API
  • 可配置能力
  • 安全性
  • 性能

Solomon Duskis 说“Jersey 的用途是作为一个参考实现。RESTEasy 是新思想的游乐场。CXF 是在 IONA 支持下的‘企业版’。Restlet 项目诞生的目的是增加一种 RESTful API 选择。”然而,Bill Burke 在博客评论中反击道:

RESTEasy 不仅仅是新思想的游乐场。其实,我们将很快在 JBoss 里支持它(一拿到 TCK 就可以),而且我们很多大客户都在催促我们提供 RESTEasy 支持。

在易用性方面,Solomon Duskis 说: > 你所面临的问题是选择一种实现。我觉得 Jersey 的确很容易上手,不过 Bill Burke 会说 RESTEasy 同样很简单。它们都可以与 EJB 一起使用。 不过,使用 Jersey 的话,搭建与运行测试服务很容易,如果你下载 NetBeans 的话更是如此。我第一次用 Jersey 和 NetBeans 时,不到半个小时就测试并运行起来了,包括下载、安装及代码浏览等。

Sun 公司的人很想把 Jersey 与人们关于“参考实现”的传统看法区分开: > 你在谈到“产品用途”时,应当将 Jersey 看作一种立马可投入使用的产品(事实上下个月它就要随 GlassFish v3 Prelude 版捆绑发布了)。Jersey 团队花费了相当多的时间来测试并改善代码,以免去其作为“参考实现”的印象!:)

Solomon Duskis 打算对这几个方面进行研究,然后将结果发布在博客里。一篇名为《JAX-RS Spring 集成》的文章已经发布出来了。 > 现在的四种JAX-RS 实现均提供Spring 集成,连JBoss 的RESTEasy 都是。

接着,他对集成作了相当简短的介绍。不过正如 Paul 所指出的,Solomon Duskis 在讲述 Jersey 时引用的是过时的资料。这比较遗憾,因为我们需要的是一个深入彻底的比较。Solomon Duskis 最后说: > 四种实现均具有相当出色的 Spring/JAX-RS 能力,但我认为 CXF 是“JAX-RS 产品里 Spring 集成做得最好的”。

不过显然这只是他的个人看法,其他人肯定会有不同意见。比如 Bill Burke 就问道: > 我没看出 CXF 在 Spring 集成方面比其他产品优越在哪里。我不明白为什么所有额外的 CXF 专用 XML 都被放在一个 Spring XML 文档里。RESTEasy 和 Jersey 提供的 Spring 集成要比 CXF 的侵入性更小。如果我没搞错的话。

对此,Solomon Duskis 回复说: > 如果各个类有一个简单的配置,能够满足超过 90% 的需要,那么标注驱动的方法是可行的。剩下那不到 10% 的部分,需要在不同场合下对同一资源作不同配置。 我知道,根据我所更新的功能的需求与当前部署,我将会需要这种方案。为了通过同样的 Spring XML 文档来部署具有不同配置(如不同的 JDBC 数据源、不同的服务实现等等)的同一个资源,CXF 提供了额外的功能。基本上,大多数情况下,标注的办法是 很好的,但有时,你必须采用外部配置的办法来实现解耦(decoupling)。XML 方案并不如标注一样受欢迎,但它们可以用于更复杂的配置情况。

或许更深入的比较能够揭示出更多的东西来?查看英文原文: A Comparison of JAX-RS Implementations

2008-10-06 23:0613570
用户头像

发布了 63 篇内容, 共 26.9 次阅读, 收获喜欢 11 次。

关注

评论

发布
暂无评论
发现更多内容

Linux常用命令-文件操作

正向成长

linux命令

CVPR2021竞赛结果出炉,阿里淘系多媒体算法包揽3项国际冠军

阿里巴巴大淘宝技术

CVPR

2022秋春招/提前批面经分享总结(字节、腾讯、阿里)

学无止境的阿奔

腾讯 面试 阿里 字节 校招

IPFS挖矿靠谱吗?IPFS挖矿合法吗?

区块链 IPFS

数字新金融到底是什么样的金融

CECBC

科创人|容联七陌CEO陈光:90后街舞少年的CEO修炼手册

科创人

人工智能 创业 程序员

如何实现跨设备的双向连接? Labo涂鸦鸿蒙亲子版分布式开发技术分享

科技汇

什么是数据仓库

奔向架构师

数据库 数据仓库 数据架构 话题讨论 7月日更

在企业软件中负责任地使用开放源代码

BeeWorks

模块1

cherrycheek

Flink知识点总结

五分钟学大数据

flink 7月日更

强!上线3天获10w浏览量,京东T8纯手码Redis缓存手册,我粉了

Java 数据库 redis 架构 面试

新能源车的发展趋势

石云升

学习 新能源汽车 7月日更

全表遍历并处理数据有点慢?放开!我来!

林一

jpa Stram @QueryHints

为什么AI需要大大大大大模型?

白洞计划

国内市场主流音视频产品主要功能分析

anyRTC开发者

音视频 WebRTC 语音通话 实时通讯 视频通话

将 FeignClient 的请求记录成 cURL 格式

哈德韦

微服务 前后端分离 log4j curl Spring boot Feign

大专的我,闭关苦学56天,含泪拿下阿里offer,五轮面试,六个小时灵魂拷问

Java架构师迁哥

Vitalik Buterin眼中的区块链信任模型

CECBC

花2个月备战字节,3轮面试拿下总包60W Offer!

Java架构师迁哥

利用 IComparable<T> 以及 IComparer<T> 定义顺序关系

喵叔

7月日更

Python协程 & 异步编程(asyncio) 入门介绍

行者AI

#python

从特斯拉召回事件,窥探OTA汽车进化真面目

脑极体

网络攻防学习笔记 Day62

穿过生命散发芬芳

网络攻防 7月日更

🏆「推荐收藏」【Spring源码专题】彻底让你明白【IOC容器初始化】运行原理和源码流程

洛神灬殇

spring 容器 源码分析 7月日更

为技术系统打“疫苗”,爱奇艺攻防演练平台的探索实践

爱奇艺技术产品团队

架构 安全攻防 开发 混沌工程

字节跳动实习生删库高操作

学神来啦

Linux 程序员 职场搞笑 linux运维

iOS 15隐私升级及注意事项

阿里巴巴大淘宝技术

ios WWDC21

免费分享入门学习Java的优秀图书

Java入门到架构

Java 书籍 Java入门

云原生负载均衡和网关应用实践

火山引擎开发者社区

云原生 后端

AQS介绍和原理分析(下)

追风少年

并发编程 AQS

比较各JAX-RS实现_SOA_Mark Little_InfoQ精选文章