目前宣称支持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,带来了额外的学习成本。

转载于:https://www.cnblogs.com/felixjia/p/3608683.html

几种支持REST的Java框架相关推荐

  1. MySQL:replace函数的几种实用场景,java框架技术课设

    mysql> select * from LOL; ±-±---------------±-------------±------+ | id | hero_title | hero_name ...

  2. Java框架篇---spring aop两种配置方式

    Java框架篇---spring aop两种配置方式 第一种:注解配置AOP 注解配置AOP(使用 AspectJ 类库实现的),大致分为三步:  1. 使用注解@Aspect来定义一个切面,在切面中 ...

  3. 别再用那些已经淘汰的技术了!2020 年 9 大顶级 Java 框架出炉!!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:Patricia Neil towardsdatascien ...

  4. 别再用那些已经淘汰的技术了!2020年9大顶级Java框架出炉!!

    作者:Patricia Neil https://towardsdatascience.com/9-top-java-frameworks-for-2020-1cc9d3c21f4c 诞生于1995年 ...

  5. 流行的9个Java框架介绍: 优点、缺点等等

    流行的9个Java框架介绍: 优点.缺点等等 在 2018年,Java仍然是世界上最流行的编程语言.它拥有一个巨大的生态系统,在全世界有超过900万Java开发人员.虽然Java不是最直接的语言,但是 ...

  6. 2020 年国外 9 个顶级的 Java 框架,你知道几个?

    来看下外国人整理的 9 个顶级框架: 诞生于1995年的Java,目前已在134,861个网站上广泛使用,包括ESPN.SnapDeal等.在其24年的成长史中,Java已经证明了自己是用于自定义软件 ...

  7. Redis 分布式缓存 Java 框架

    https://dzone.com/articles/java-distributed-caching-in-redis 为什么要在 Java 分布式应用程序中使用缓存? 在提高应用程序速度和性能上, ...

  8. java框架_2020年9个最流行的Java框架

    从1995年以来,Java已被134,861个网站广泛使用,其中包括阿里巴巴,EPSON,SnapDeal等网站.Java已经成为定制化软件开发的顶级通用语言. Java被广泛用于科学和教育,金融,法 ...

  9. java框架_2020年Java框架排行榜,谁居榜首?

    作者丨Patricia Neil来源丨Java技术驿站https://urlify.cn/ammaYj诞生于1995年的Java,目前已在134,861个网站上广泛使用,包括ESPN.SnapDeal ...

最新文章

  1. C语言指针数组与数组指针的区别
  2. Android 插件化原理学习 —— Hook 机制之动态代理
  3. document.getElementById 学习总结
  4. pkill mysql_每天一个linux命令:kill命令
  5. 前台传String日期格式后台用Date类型接收
  6. (49)FPGA状态机描述(二段式)
  7. phalapi可以依赖注入么_phalapi-进阶篇8(PhalApi能带来什么和进阶篇总结)
  8. union中结构体整合后字节对齐问题
  9. 常用的多列等高布局收藏
  10. python元胞转list_python元胞自动机的简单实现
  11. HTML5期末大作业:旅游网站设计——桂林旅游(3页) HTML+CSS+JavaScrip
  12. One or more errors occurred 报错
  13. Java游戏宋朝角色扮演_穿越历史并不现实,但是有这样一款游戏,带你回到宋朝...
  14. 数据安全被篡改的风险分析解决方案
  15. 【opencv-c++】cv::ximgproc::thinning图像细化算法
  16. 龙讯|LT8911EXB高性能MIPI转EDP分辨率1080P@60
  17. ajax angular点击事件_angularjs和ajax的结合使用 (三)
  18. c语言a-gt;ave=0.0什么意思?,来位c语言的大神把,来把这个程序解释一遍吧!跪求啊...
  19. linux egg,Ubuntu下egg文件的安装与制作
  20. 【数据处理】Python,matplotlib 如何画柱状图?如何画各种类型的柱状图?柱子宽度设置;设置X轴刻度用label显示;设置柱子距离x轴的高度;设置柱体颜色;设置柱体描边;并列、多条柱状图

热门文章

  1. 使用bc45编译ucos-II的配置过程
  2. 利用霍夫变换做直线检测的原理及OpenCV代码实现
  3. ufs 固态硬盘_NVMe SSD新利器?WTG最高级别评分 阿卡西斯NVMe M.2移动固态硬盘盒评测...
  4. 截取指定字符前_Excel应该怎么学--表格维护常用文本函数(截取、转换、连接)...
  5. 奇奇seo优化软件_seo优化软件如何选择
  6. 超越 一切还刚刚开始
  7. PHP中的符号 -、= 和 :: 分别表示什么意思?以及this,self,parent三个关键字的理解!...
  8. 查看linux 服务器有多少CPU
  9. 在VMware ESXI 6.5创建虚拟机
  10. 018-继承-OC笔记