硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

比较各 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:0613858
用户头像

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

关注

评论

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

OpenSPG/KAG v0.6 发布,兼顾事实推理与摘要生成,支持用户自定义 Schema2025

可信AI进展

知识图谱 大模型 rag

全方位赋能创意工作流程:西部数据推出全新消费级存储解决方案

极客天地

手把手教你为Docker Compose启动的Milvus部署监控

Zilliz

Grafana Milvus Promethues 监控部署

Docker 与虚拟机:架构差异与选择指南

测吧(北京)科技有限公司

测试

归因分析在去哪儿的应用落地

Qunar技术沙龙

数据挖掘 算法 数据分析 后端 归因分析

选择合适的虚拟化技术:Docker vs 虚拟机的使用场景分析

测吧(北京)科技有限公司

测试

Docker 网络模式实战:从 Bridge 到 Host 再到 Container 的配置与应用

测吧(北京)科技有限公司

测试

什么时候选择 Docker,什么时候选择虚拟机?

测吧(北京)科技有限公司

测试

年度重磅 |《2024华为开发者宝典》免费下载,多维度解读华为根生态技术

华为云开发者联盟

人工智能 鸿蒙 华为云 鲲鹏

Docker 容器网络模式详解:Bridge、Host 与 Container 的区别

测吧(北京)科技有限公司

测试

解锁淘宝商品详情新境界:利用item_get API打造个性化智能购物之旅

代码忍者

淘宝API接口

跨界融合:人工智能与区块链如何重新定义数据安全?

天津汇柏科技有限公司

区块链 AI 人工智能

zMaticoo ADX网关系统多云架构解决方案入选CSDN年度榜单

新消费日报

iMazing和iTunes功能差异点 iMazing比iTunes好用在哪里?

阿拉灯神丁

imazing iTunes 苹果手机备份 iOS 设备数据清除软件

2025-01-08:找到按位或最接近 K 的子数组。用go语言,给定一个数组 nums 和一个整数 k,你的目标是找到一个子数组,使得该子数组中所有元素进行按位或运算后的结果与 k 之间的绝对差值尽

福大大架构师每日一题

福大大架构师每日一题

首个机器人4D世界模型来了!

极客天地

解读ENS网络连接,面向多云多池网络的高效互联

华为云开发者联盟

网络 数据中心 VPC 华为云Stack ens

国产数据库选型指南

YashanDB

数据库 yashandb

阿里巴巴1688 API接口深度解析:商品详情获取与按图搜索商品(拍立淘)实用指南

代码忍者

1688API接口

「零售数据通道」数据炼金术:千亿级流量资产湖仓架构转型

京东科技开发者

设计模式-策略模式

京东科技开发者

Milvus×全诊通:从导诊到智能超声,如何将人效比翻倍

Zilliz

医疗行业 向量检索 多模态 Milvus rag

Docker 网络模式实战:从 Bridge 到 Host 再到 Container 的配置与应用

测吧(北京)科技有限公司

测试

深入解析:Docker 与虚拟机的架构差异及适用场景

测吧(北京)科技有限公司

测试

短视频APP的开发难点

北京木奇移动技术有限公司

软件外包公司 APP外包公司 短视频APP

OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性

阿里技术

阿里云 容器 最佳实践 k8s openai

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