Java RESTful Web Service实战
上QQ阅读APP看书,第一时间看更新

1.5 Java领域的其他REST实现

Java领域的REST实现以是否遵循JAX-RS标准分为两个阵营。前者为参考实现之外的厂商实现,后者要么出现较早、要么干脆跳出了标准的框架,以自身所追求的目标,比如性能、框架一致性等,实现了一套独有的对REST开发的支持。本节将做概括性介绍,以便读者有所对比和选择。

1.5.1 其他JAX-RS实现

JAX-RS标准发布后,诸多厂商推出了自己的基于JAX-RS标准的实现。其中比较有影响力的应该是来自JBoss社区的RESTEasy和来自Apache社区的CXF。本节将简述这两个项目。如果读者的项目确实和它们结合得比较紧密,Jersey未必是最佳选择,读者尽可“拥抱”这两个基于JAX-RS标准的项目。

1.JBoss的RESTEasy

RESTEasy是JBoss社区提供的JAX-RS项目。值得说明的是,JBoss这一名词目前已经不再代表Java EE容器,曾经的JBoss已经更名为WildFly,而JBoss一词现在特指RedHat公司旗下的开源社区。RESTEasy自2009年1月第一个GA版本以来,发展到3.0.x。从版本3.0.0.Final开始支持JAX-RS 2.0。

官方文档提供单页面HTML、按章节HTML和PDF三种格式,可以按照阅读习惯选择。参见:

http://www.jboss.org/resteasy/docs

该项目源代码由GitHub托管,地址为:

https://github.com/resteasy/Resteasy

项目下载由http://sourceforge.net托管,当前版本为3.0.7.Final。地址为:

http://sourceforge.net/projects/resteasy/files/Resteasy%20JAX-RS

2.Apache的CXF

CXF是Apache开源社区提供的JAX-RS项目,CXF的名称是由Celtix项目和XFire项目合并而来。其中Celtix由IONA Technologies开发,XFire来自Codehaus。CXF是JAX-WS的著名实现,同时实现了JAX-RS,从版本2.7.0开始几乎全面支持JAX-RS 2.0全部特性。官方文档参见http://cxf.apache.org/docs/jax-rs.html。

Apache CXF当前版本为2.7.11,下载地址为:

http://cxf.apache.org/download.html

源代码由Apache的GIT服务器托管,地址为:

https://git-wip-us.apache.org/repos/asf?p=cxf.git

源代码克隆命令参考如下:

git clone https://git-wip-us.apache.org/repos/asf/cxf.git

1.5.2 其他REST实现

JAX-RS是Java领域实现REST式Web服务的标准规范。但需要注意的是,Java领域支持REST式Web服务开发的工具未必遵循JAX-RS规范。其中,大名鼎鼎的Spring MVC就是一个支持REST开发的非JAX-RS规范的实现。本节将带领读者认识Java领域的非JAX-RS规范的著名REST支持工具。

(1)Restlet项目

Restlet是一款遵从REST风格的、基于Java平台的轻量级框架。Restlet是开源的,提供REST开发的完整支持。Restlet官网地址为:

http://restlet.org

Restlet源代码由GitHub托管,地址为:

https://github.com/restlet

Restlet学习指南文档地址为:

http://restlet.org/learn/tutorial

(2)LinkedIn的Rest.li

Rest.li是社交网站LinkedIn开发的REST+JSON的开源REST式服务框架。Rest.li的官方地址是:

http://rest.li

Rest.li源代码由GitHub托管,地址为:

https://github.com/linkedin/rest.li

文档的wiki地址为:

https://github.com/linkedin/rest.li/wiki

(3)Spring WEB MVC项目

Spring框架使用Gradle构建和管理项目,使用GIT管理源代码,地址为:

https://github.com/spring-projects/spring-framework

Spring-Web是Spring项目的一个模块,详情可参考:

http://spring.io/projects

Spring-Web从3.0版本开始提供了对REST式应用开发的支持,但Spring-Web目前并没有推出一个实现JAX-RS标准的模块。Spring-Web MVC模块提供了REST功能,但没有采用JAX-RS提出的标准。本质上,Spring-Web MVC控制流程是使用Controller处理Model在某种动词性的业务逻辑操作,而JAX-RS的控制流程是使用资源类Resource处理名词性的资源表述。

小白讲堂

Gradle是一个基于Apache Maven概念的项目自动化建构工具。和Maven使用传统的XML配置项目不同的是,Gradle使用Groovy语言(一种领域特定语言,即DSL)来配置项目构建信息。Gradle官网地址是:http://www.gradle.org。