- Java RESTful Web Service实战
- 韩陆
- 252字
- 2023-07-14 20:49:13
前言
从我启动本书到完稿,历时一年有余。
此间,Java EE 7得到了更多服务器软件的支持,Jersey升级了9个小版本——我在动笔开始文字和示例代码编写的时候,Jersey刚刚推出2.0版本,到本书完毕时,版本号是2.9,这也是本书的最终版本。此后新版本带来的改变只有通过本书提供的源代码来同步更新。
此间,我积极参与和关注着Jersey项目的动向,通过关注Jersey官方文档、Jersey在GitHub托管系统的源代码、Jersey的Jira缺陷管理系统、Jersey的StackOverflow问答系统,对其修复缺陷、引入新功能和如何使用Jersey等事宜不断跟进。
我之所以这么做,目的只有一个,即希望为读者呈现的是一本Java领域REST开发的好书。
为什么要写这本书
REST式的Web服务有多流行,相信每一位翻阅本书的读者都很清楚,冒昧地猜测,你可能想要看到的是一本讲述如何使用Java语言和Java EE平台,来实现这一风格的服务或者应用的书。这也正是我这两年来努力写作的初心和原动力。我相信,读者希望看到的内容不单单是追逐流行、风靡一时的“快餐”。作为开发者,我知道拥有对新技术、新标准的敏锐嗅觉非常重要,但我认为更难能可贵的是把一个业内认可的标准学好和用好。Java EE 7中包含了JAX-RS 2.0标准,是Java领域REST式的Web服务的规范;GlassFish是Java EE 7的参考实现项目集,Jersey是其子项目,是JAX-RS 2.0的参考实现。本书的目的就是要把JAX-RS 2.0说清楚,把如何用Jersey写好REST式的服务讲明白。
本书特色
□第一本完整讲述使用Java标准规范实现REST的书籍。
□第一本完整讲述以JAX-RS 2.0参考实现实践Jersey的书籍。
□给出深度学习和实践JAX-RS的线路图和解决方案。
读者对象
本书从实践角度,完整地诠释了JAX-RS 2.0(JSR 339),即Jersey 2.0的核心元素和REST开发过程。面向所有在Java领域学习和使用REST的读者。同样欢迎REST领域的其他语言的使用者通过本书了解REST的实现。
□技术路线:架构师、技术主管、研发工程师、REST小白(网络用语,本书指新手);
□管理路线:部门经理、项目经理、产品经理;
□敏捷实践者。
如何阅读本书
本书收纳了笔者近三年的RESTful实战经验,将REST理论与Java实现相结合,循序渐进地将使用Java开发REST式的Web服务中遇到的知识点和经验呈现给读者。每个章节中的知识点都精心设计了相应的示例代码,便于读者更好地理解和更及时地进行实践。从第11章开始,笔者从敏捷角度为读者呈现了一个完整和相对复杂的REST式的Web服务实例,相信这个实例能让读者更好地理解相关内容,同时,可以对敏捷开发和自动化测试有新的认识。
全书分为3篇,共11章。
第一篇共5章(第1~5章),讲述REST的基本理论和Jersey的基本实践。完成第一篇的阅读和示例代码的实践,读者可以学会使用Java开发REST式的Web服务的基本能力。
第1章 分别阐述了REST、REST式的Web服务、JAX-RS 2.0和Jersey 2.x的基本情况。
第2章 讲述了使用Jersey 2.x开发一个基于JAX-RS 2.0标准的应用的基本知识以及如何使用Jersey来集成Spring和JPA以快速开发一个REST式的Web服务。本章包含10个示例项目。
第3章 深入阐述了如何使用Jersey设计和实现REST式的Web服务的API。本章包含5个示例项目。
第4章 深入阐述了Jersey的Providers对REST请求的处理。
第5章 讲述了Jersey的客户端开发的基本实践和常用配置。
第二篇共5章(第6~10章),讲述写好REST程序的必要知识点。完成第二篇的阅读和实践,读者可以全面了解如何写好一个完整的REST式的Web服务。
第6章 全面讲述了如何实现一个安全的REST式的Web服务。
第7章 讲述了Jersey的测试框架及其使用。
第8章 讲述了Jersey对HTML5的SSE的支持和异步请求处理。
第9章 讲述了Jersey 1.x迁移到Jersey 2.x的要素和经验分享。
第10章 分享了REST式的Web服务的性能调优的经验。
第三篇包含1章(第11章),分享了5年外企工作中,我对自动化测试和敏捷的体会。完成本部分内容的阅读和实践,读者可以更宏观地审视REST的应用场景,起到抛砖引玉的作用。
第11章 讲述一个完整的REST项目的全过程。
全文由三个小版组成:“阅读指南”、“小白讲堂”(为某些在知识点上比较“小白”的同学介绍概念性的知识)和“宅人坑事”(技术宅最自豪和最担惊受怕的就是“踩坑”),旨在和读者分享基础知识和心得体会,只为交流,切勿对号入座。
第一篇推荐研发工程师和REST小白完整阅读,这部分包含了了解和使用JAX-RS 2.0完成学习和工作的必要章节。对于有基础的技术人员,可以作为实践的参考有选择地阅读。
第二篇推荐致力于提高自己的技术人员完整阅读,这部分包含了JAX-RS 2.0的高级功能。永不满足和持续学习的精神,会让你在关键时刻成为“关键先生”。架构师和项目经理在考虑安全、性能等问题时,可以参考相关章节。
第三篇推荐渴望实战指导的技术人员阅读和跟随实践。同时,该篇结合了笔者参与敏捷实践的体会,以scrum的方式进行开发管理。因此,敏捷实践者和相关的部门经理可以参考。
产品经理可以阅读与REST特性相关的章节,这样可帮你在设计应用方面有所提高。
源代码
勘误和交流
作为开发者,非常欢迎读者能与我一起交流JAX-RS 2.0相关的技术。我的邮箱是:feuyeux@gmail.com,新浪微博是:六爷1_1。
本书的勘误统计在https://github.com/feuyeux/jax-rs2-guide/wiki中,欢迎读者批评指正。
致谢
感谢我的夫人Caroline。写作期间,没有时间陪你共度周末,甚至没有精力陪你共度以2开头的最后一个生日,也没有营造任何浪漫的气氛。我们的女儿从蹒跚学步到会唱儿歌,我没有更多的时间陪伴你们,而你一如既往地支持我,在此我对你表示深深的感谢。
感谢华章公司的杨福川。我最难忘的是最初谈到要出本书时与君一拍即合的快意,这为我此后动笔增添了无穷的动力和信心。同时,阁下给予我的信任和鼓励也极大地推动了本书的顺利完成。在此后一年多的交往中,我深深感受到了业内对杨福川专业水准的评价和他敬业的态度。
感谢华章公司编辑高婧雅专业和耐心的审阅和指正。我曾一度被这位可敬的东北妹子的严谨和勤奋打击,心生愧对华章精品精神的挫败感。但随着婧雅的不断鼓励和支持,我一遍遍改进着稿件,自信心得到了恢复,同时,内心得到了安慰,我没有偏离初心和那份原动力。非常感谢华章公司和婧雅。
感谢RedHat公司姜宁师兄的技术校对,感谢阿里巴巴公司许晓斌的敏捷校对。
最后,我要感谢Technicolor敏捷团队中的每一位成员,正是与各位度过的每一天,才让我有资本和信心与广大读者分享在REST式的开发中的经验和教训,并在本书中介绍自动化测试和敏捷实践的相关知识。