写点什么

JSR 311 最终草案:RESTful Web 服务 Java API

  • 2008-09-26
  • 本文字数:1718 字

    阅读完需:约 6 分钟

去年 2 月, Sun 宣布了 JSR 311 :RESTful Web 服务的 Java API。9 月 23 日,规范的 1.0 草案通过了JCP 执行委员会的赞成投票,这基本意味着它现在已经定稿。

JAX-RS 是 Java 中用于实现以 HTTP 为基础的 RESTful Web 服务的 基于注解的 API。本质上,注解类和方法的信息能让运行时(Runtime)将它们暴露为资源,这种方法和通过 Servlet 编程模型来暴露类与方法的做 法有很大区别。实现 JAX-RS 的运行时(Runtime)周旋于 HTTP 协议和 Java 类之间,考虑 URI、被请求和被接受的内容类型和 HTTP 方法。 除了 Sun 提供的参考实现 Jersey 之外,可用的其他实现(尚在不同的完成阶段)包括:流行的 Restlet 框架的一部分, JBoss RESTeasy 项目 Apache CXF Web 服务栈的一部分。

InfoQ 采访了规范带头人,Sun 的 Marc Hadley Paul Sandoz ,请他们畅谈了他们对 JAX-RS 和整个过程的想法。

被问到他们对这个结果的心情时,Mark 表示他对 API 最终完成非常满意。他还表示,非常幸运的是,在专家组从事 API 设计时就有如此多的实现被构 建出来,并且这有助于抚平 API 中的任何不足。Paul 补充说,不少开发者自愿在 API 的各个版本上工作,采用测试驱动的方式去实现,并提供反馈。

在问及最具挑战性的方面时,Marc 指出,一开始很难在 API 的风格和范围上达成统一:

为了启动这个 JSR,我们以一个涉及面很广的提案开了个头。但是,回想起来,我认为我们可能从一个更具体的方面开始构建更好。
在过去的几个月内,我们已经看到了大量对这个 JSR 的关注,主要挑战是既保证进度又能适应所有新请求。

Paul 大胆地对 JSR 中“J”的某些方面表示了质疑:

可能这显得有点儿异端,但是有时我发现当前的 Java 语法本身有点挑战性。但是,通过 Java 注解、范型和构造器 (Builder)模式,我认为我们把事情降到了一个非常简洁的水平。而且,方便地使用 Scala 和 Groovy 来书写这种 JAX-RS 应用也是有可能 的,这两种语言都支持与 Java 字节码兼容的注解。

在启动这个 JSR 的时候, REST 社区对它能否符合 REST 的关键原则表示怀疑。Mark 认为这一目标已经达到:

我认为 API 是鼓励资源中立的观点的,它让开发者自己决定他们资源的标识符和他们支持的方法。对内容协商的说明性支持非常好,缺 省的资源生命周期鼓励无状态的方式。如果我必须指出一个弱点的话,那就是它对“超媒体即状态引擎(hypermedia as the engine of state)”支持有限。虽然我们能很好地支持从请求 URI 中抽取信息和构造资源 URI,在表述(representations)中正确使用超媒体这一任务较多的还是留给了开发者自己去完成。

Paul 表示同意:

是的,这可能是最困难的地方了。JAX-RS 提供了大量构造 URI 的方法,但是建模 API 中还没有类似 JAXB 这样的 URI 绑定工具。我认为在这一方面,我们有一些办法可以探索,如 Henry Story 的 RDF 序列化

问及 JSR 311 上的工作是否改变了他对 Web 和 Web 服务的观点时,Mark 表示这印证了他的一个观点,即一个人“无需依赖更复杂的东西就可以用 HTTP 完成一件非常伟大的事”。Paul 指出,REST 发明者 Roy Fielding 的将稀疏位数组(sparse bit array)用于通知便是 REST 可在将来带来惊喜的一个例子。

我们还向 Mark 询问了他期望 JSR 311 如何对即将到来的 Servlet 规范修订产生影响:

JAX-RS 应用可以被 Servlet 容器托管,因此两者默契合作非常重要。JAX-RS 是新的 Servlet 可插性 (pluggability)框架的一个潜在消费者,因此我们正在着手就此提出我们的要求。一个难处理的地方是,JAX-RS 提供了较 Servlet 更灵 活的 URI 到资源的映射方式,这对联合使用说明性的 Servlet 安全和 JAX-RS 来说是个挑战,因此我们也在从事这方面的工作。

最后,Mark 证实 Jersey 不“只是”一个参考实现,而且完全可作为产品使用,并且已经有实际的部署了。他还指出,Jersey 将是 Glassfish JSR 311 实现,而这正是 Jersey 需要达到产品质量的原因。Paul 强调了另一原因:

定期发布规范和实现的试验版本(early access)一个好处就是,这让 APT 和实现都能及早和频繁地接受测试的考验:-)

你可以联机阅读这个规范 Jersey 参考实现可从 java.net 获得,并在 Java 5 或更高版本上运行。

查看英文原来: JSR 311 Final: Java API for RESTful Web Services

2008-09-26 21:573072
用户头像

发布了 255 篇内容, 共 59.3 次阅读, 收获喜欢 10 次。

关注

评论

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

华为云桌面Workspace,让你的办公更加舒适惬意

科技怪授

华为云会议

双十一优惠持续,华为云会议让沟通简单化

i生活i科技

华为云桌面

糟了,线上服务出现OOM了

小小怪下士

Java 程序员

企业级运营定时任务分发设计

Quincy

运营 crontab 分布式定时任务

面试90%会问到的200+Java面试题汇总(含答案解析)

钟奕礼

Java java程序员 java面试 java编程

华为云桌面Workspace,随时随地随心的办公新体验

i生活i科技

远程触发Jenkins的Pipeline任务的并发问题处理

程序员欣宸

Java DevOps jenkins 11月月更 pipelien

EasyExcel导出数据超过Excel单表上限解决方案

陈老老老板

EasyExcel java; 11月月更

EasyRecovery15数据恢复软件下载使用安装教程

茶色酒

EasyRecovery15

大厂敲门砖,Github霸榜的顶级并发编程宝典被我搞到手了!

小小怪下士

Java 面试 并发编程 JVM

想你所想,华为云桌面Workspace助你轻松办公

爱尚科技

看我如何连夜自建网站背刺我的求职对手们

华为云开发者联盟

云计算 华为云 云服务器 自建网站

EasyExcel常用API与注解

陈老老老板

EasyExcel java; 11月月更

备战2023春招,P7大佬手打26大后端面试专题神技,1500题解析助力

钟奕礼

Java java程序员 java面试 java编程

华为云桌面Workspace,实惠更实用!

科技怪授

华为云桌面

吃透这份“腾讯限量版”Java架构笔记,要个40k不过分吧?

钟奕礼

Java 程序员 java面试 java编程

华为云会议,让云上办公变得简单高效

科技怪授

华为云会议

linux常用服务配置、网络配置 和 基于FTP的上传和下载的几种方式

C++后台开发

Linux linux开发 Linux服务器开发 ftp C++开发

2022年Java后端面试题,备战秋招,查缺补漏,吃透16套专题技术栈

小二,上酒上酒

Java 面试 面试题 大厂面试

2022最全168道Spring全家桶面试题(含答案)

钟奕礼

Java java面试 java编程 程序员‘

从12K到60K,这2023Java研发必问高级面试题,过关斩将拿offer

钟奕礼

Java java面试 java编程 程序员‘

云原生系列一 【基于CCE Kubernetes编排实战】

叶秋学长

Kubernetes 云原生 CCE 11月月更

五年数据库专家,带你深入高性能MySQL架构系统,不来后悔一辈子

钟奕礼

Java java程序员 java面试 java编程

云原生系列 二【基于CCE Kubernetes编排实战】

叶秋学长

Kubernetes 云原生 11月月更

Java岗史上最全八股文面试真题汇总,堪称2022年面试天花板

小二,上酒上酒

Java 面试 java面试 大厂面试 八股文

7天带你全方位刷爆数据结构与算法,每天一道,高效刷题

小二,上酒上酒

数据结构 面试 算法 大厂面试

数据结构与算法完整版 | 超详细图解,看这一篇就够了

小二,上酒上酒

Java 数据结构 面试 算法

The Micro-service design of E-commerce System

David

架构实战营

好消息 突破:IM开源项目OpenIM采用wasm技术实现jssdk

Geek_1ef48b

手把手教你,从零开始搭建Spring Cloud Alibaba!这份笔记太牛了

钟奕礼

Java java程序员 java面试 java编程

阿里内部总结的微服务笔记,从入门到精通小白也能学的会

小二,上酒上酒

Java 架构 分布式 微服务

JSR 311最终草案:RESTful Web服务Java API_Java_Stefan Tilkov_InfoQ精选文章