目前宣称支持REST的Java框架包括以下这些: 
Restlet(http://www.restlet.org/) 
Cetia4(https://cetia4.dev.java.net/) 
Apache Axis2(http://http://ws.apache.org/axis2/) 
sqlREST(http://sqlrest.sourceforge.net/) 
REST-art(http://rest-art.sourceforge.net/

以下对这些框架进行了较为全面的分析。

Restlet,最新版本1.0.1 
特点:完全抛弃了Servlet API,作为替代,自己实现了一套API。能够支持复杂的REST架构设计。 
缺点: 
1. 虽然也可以运行于Web容器中,但是难以利用Servlet和JSP等资源。因为需要另外学习一套API和概念,学习成本比较高。 
2. 完全不支持服务器端的HTTP Session,强制完全基于无状态服务器模型来做开发。对于基于浏览器的应用来说,开发难度较高。 
3. 自身没有包括与Spring的集成,可以使用第三方代码与Spring集成,集成难度较大。 
4. 文档不是很丰富,大多比较简短,很多时候需要自己去读代码,或者到其wiki上去查找。 
5. 没有内建的国际化支持。 
优点: 
1. 有内建的HTTP认证机制,不需要另外开发安全机制。 
2. 灵活性较高,支持更多的REST概念,支持透明的内容协商,适合于开发更加强大的REST组件(不限于服务器端应用)。 
3. 零配置文件,全部配置通过代码来完成。

相关资源: 
功能列表:http://www.restlet.org/about/features 
简介:http://www.restlet.org/about/introduction 
教程:http://www.restlet.org/documentation/1.0/tutorial 
FAQ:http://www.restlet.org/about/faq

Cetia4,最新版本1.0 
特点:基于Servlet API开发,可以运行于所有的Web容器中。 
优点: 
1. 可以充分利用Servlet API和JSP等资源,需要额外学习的概念较少,学习成本较低。 
2. 对于传统的Web应用,可以使用服务器端HTTP Session;对于Web服务类应用,不使用HTTP Session,基于无状态服务器模型做开发。 
3. 自身包括了对于Web MVC的支持,熟悉Web MVC框架的开发者很容易理解。还内建了参数映射、参数验证等等传统Web MVC框架所支持的功能。 
4. 内建了自己特有的导航对象栈的概念,对于支持传统的Web应用的开发(基于浏览器的导航)非常有帮助。 
5. 提供了JSP标签库,对于传统的基于HTML表单的Web开发非常有帮助。 
6. 支持与SiteMesh相配合,由SiteMesh来支持页面布局的重用。 
7. 内建有与Spring的集成,集成起来非常容易。 
8. 配置文件完全基于标准的web.xml,不需要额外的配置文件。大量使用默认配置,一般情况下足以满足常见的需求。 
9. 拥有很好的文档。 
10. 有内建的国际化支持。 
缺点: 
1. 没有内建的HTTP认证机制,需要自行开发安全机制。 
2. 对于内容协商的支持比较弱,仅支持HTML和XML格式的表现。需要加以扩展才能支持其他格式的表现。

相关资源: 
教程:https://cetia4.dev.java.net/files/documents/5545/38989/cetia4_tutorial.pdf

Axis2,最新版本1.2 
特点:同时支持SOAP和REST风格的Web Service。 
缺点: 
1. 仅仅支持GET与POST方法。 
2. 仅仅是以REST风格暴露出Web服务,数据格式仍然是包含SOAP封装的XML,不能使用更加有效的格式。 
3. 只支持同步的调用方式。 
4. 仅仅提供了以SOAP方式暴露Web服务的最小化的支持,不支持全面的REST架构设计。

相关资源: 
简介:http://ws.apache.org/axis2/1_2/rest-ws.html

sqlREST,最新版本0.3.1 
特点: 
1. 为任何可以通过JDBC访问的数据库提供Web服务访问接口,自动将REST风格的HTTP请求转换为相应的数据库SQL语句,并将数据库中的记录编码为XML格式传给客户端。是REST风格的HTTP请求到数据库中的数据的直接映射。 
2. 基于Servlet API开发。 
缺点: 
1. 因为是REST风格的HTTP请求到SQL语句的直接映射,因此强制使用以SQL和关系数据库为中心的数据建模设计方法,不支持面向对象的设计。灵活性很低,难以实现较为复杂的业务逻辑。 
2. 因为资源的定义仅限于数据库的表,难以实现更高层次的抽象,必然会导致非常细粒度的API。应用的性能和可伸缩性都难以保证。

相关资源: 
教程:http://sqlrest.sourceforge.net/5-minutes-guide.htm

REST-art,最新版本0.2 
特点:一个旨在替换复杂的SOAP框架的REST框架,用来作为替代SOAP方便地发布Web服务的工具。不是基于Servlet API开发。 
缺点: 
1. 目前尚处于刚刚起步的阶段,功能非常少。 
2. 不是基于Servlet API,带来了额外的学习成本。

几种支持REST的Java框架的更多相关文章

  1. Java程序员的现代RPC指南(Windows版预编译好的Protoc支持C++,Java,Python三种最常用的语言,Thrift则支持几乎主流的各种语言)

    Java程序员的现代RPC指南 1.前言 1.1 RPC框架简介 最早接触RPC还是初学Java时,直接用Socket API传东西好麻烦.于是发现了JDK直接支持的RMI,然后就用得不亦乐乎,各种大 ...

  2. Java框架介绍-13个不容错过的框架项目

    本文转自互联网,个人收藏所用. 下面,我们将一同分享各有趣且颇为实用的Java库,大家请任取所需.不用客气~ 1.极致精简的Java Bootique是一项用于构建无容器可运行Java应用的极简技术. ...

  3. 常见JAVA框架

     Spring Framework [Java开源JEE框架] Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不 ...

  4. Java框架的思考

    目前的JAVA 企业级开发框架,我们常用的大致包括IOC AOP MVC ORM框架 1. IOC spring是一个非常棒的ico容器,其思想非常简单,用一个集合对象如MAP 来缓存对象(对象都是单 ...

  5. 2016年7款最流行的Java框架

    虽然Java一直被唱衰,但是直到现在Java也坚持霸主地位不动摇,毫无疑问,Java是目前最热门的编程语言之一,所以我们为大家搜集了一些目前比较受欢迎的Java框架的消息. 根据RebelLabs对在 ...

  6. Redis 分布式缓存 Java 框架

    为什么要在 Java 分布式应用程序中使用缓存? 在提高应用程序速度和性能上,每一毫秒都很重要.根据谷歌的一项研究,假如一个网站在3秒钟或更短时间内没有加载成功,会有 53% 的手机用户会离开. 缓存 ...

  7. 7 个最佳的 Java 框架

    毫无疑问,Java是目前最需要的编程语言之一.在这里,我们已经挖掘了一些关于框架趋势的有用信息,以减轻全球软件开发人员的日常工作. 根据RebelLabs,也是在线Java用户组(虚拟JUG)的媒体盟 ...

  8. 转 分享我在阿里工作十年接触过Java框架设计模式

    转 原文: 分享我在阿里工作十年接触过Java框架设计模式 一.前言 说起来设计模式,大家应该都耳熟能详,设计模式代表了软件设计的最佳实践,是经过不断总结提炼出来的代码设计经验的分类总结,这些模式或者 ...

  9. Android RIL的java框架

    Android RIL的Java部分也被分为了两个模块,RIL模块与Phone模块.其中RIL模块负责进行请求以及相应的处理,它将直接与RIL的原声代码进行通信.而Phone模块则向应用程序开发者提供 ...

随机推荐

  1. Chapter 4 图

    Chapter 4 图 . 1-   图的存储结构 无向图:对称 有向图:…… 2-   图的遍历 1   深度优先搜索(DFS) 类似于二叉树的先序遍历 2   广度优先搜索(BFS) 类似于二叉树 ...

  2. ubuntu与xshell连接不起来:

  3. 2018-10-31-win10-uwp-使用-asp-dotnet-core-做图床服务器客户端

    title author date CreateTime categories win10 uwp 使用 asp dotnet core 做图床服务器客户端 lindexi 2018-10-31 14 ...

  4. select有条件in要按照in中的数据排序

    mybatis中的写法 <select id="selectByIds" resultType="com.hoohui.electronic.util.ExHash ...

  5. Joomla - akeeba backup(joomla网站备份、迁移扩展)

    在所有 joomla 的网站中,如果只允许安装一个扩展,估计超过90%的人都会选择 akeeba backup,这基本是每个joomla都必备的一个扩展: akeeba backup 的更多资料可以到 ...

  6. node.js 安装步骤

    1.打开链接(http://nodejs.cn/download/) 2.下载自己所需的安装包(32位 or 64位.哪个系统) 3.双击直接安装(成功如下图) 4.点击 Node.js comman ...

  7. [转] 允许远程用户登录访问mysql的方法

    需要手动增加可以远程访问数据库的用户. 方法一.本地登入mysql,更改 "mysql" 数据库里的 "user" 表里的 "host" 项 ...

  8. Finalize什么时候被调用

    Finalize方法在垃圾回收结束时被调用,有五种一下情况会导致开始垃圾回收. 第0代已满  第0代满时,垃圾回收会自动开始.改时间是目前导致Finalize方法被调用的最常见的一种方式,因为随着应用 ...

  9. 探索SpringBoot中的SpringMVC

    spring boot就是一个大框架里面包含了许许多多的东西,其中spring就是最核心的内容之一,当然就包含spring mvc.spring mvc 是只是spring 处理web层请求的一个模块 ...

  10. php工作中常用到的linux命令

    压缩并指定目录举例:zip -r /home/kms/kms.zip /home/kms/server/kms 解压并指定目录举例:unzip /home/kms/kms.zip -d /home/k ...