比较各JAX-RS实现

正如 某人在别处说的 ,关于公交车,有一个奇怪的现象:你等了很久一辆不来,最后却一下来了三辆! JAX-RS实现 貌似也碰到了类似的问题。目前我们有:
  • CXF——XFireCeltix的合并(一个由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方案并不如标注一样受欢迎,但它们可以用于更复杂的配置情况。
去几年,REST逐渐成为影响Web框架、Web协议与Web应用设计的重要概念。如果你还不了解REST,那这个简短的介绍将有助你快速掌握REST,此外还可以点击这里了解关于REST的更多信息。 相关厂商内容 高速下载:Adobe Flash Builder 4 简体中文正式版 for Windows 高速下载:Adobe Flash Builder 4 简体中文正式版 for Mac 利用Flex SDK创建易于访问的Adobe AIR应用程序 Adobe和英特尔联手推新服务帮助开发者发行AIR应用 构建更加完善的Adobe AIR应用程序之十大秘诀 相关赞助商 汇集最新RIA技术相关资源,提供Flash开发平台相关工具高速下载,免费获得Adobe软件的产品序列号。 现在有越来越多的公司希望能以简单而又贴合Web架构本身的方式公开Web API,因此REST变得越来越重要也就不足为奇了。使用Ajax进行通信的富浏览器端也在朝这个目标不断迈进。这个架构原则提升了万维网的可伸缩性,无论何种应用都能从该原则中受益无穷。 JAX-RS(JSR 311)指的是Java API for RESTful Web Services,Roy Fielding也参与了JAX-RS的制订,他在自己的博士论文中定义了REST。对于那些想要构建RESTful Web Services的开发者来说,JAX-RS给出了不同于JAX-WS(JSR-224)的另一种解决方案。目前共有4种JAX-RS实现,所有这些实现都支持Spring,Jersey则是JAX-RS的参考实现,也是本文所用的实现。 如果你使用Spring进行开发,那可能想知道(或者有人曾问过你)Spring MVC与JAX-RS有何异同点?更进一步,如果你手头有一个Spring MVC应用,使用了控制类继承(SimpleFormController等),你可能还意识不到现在的Spring MVC对REST广泛的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值