- Java RESTful Web Service實(shí)戰(zhàn)
- 韓陸
- 3字
- 2018-12-31 14:06:50
前言
從我啟動(dòng)本書(shū)到完稿,歷時(shí)一年有余。
此間,Java EE 7得到了更多服務(wù)器軟件的支持,Jersey升級(jí)了9個(gè)小版本——我在動(dòng)筆開(kāi)始文字和示例代碼編寫(xiě)的時(shí)候,Jersey剛剛推出2.0版本,到本書(shū)完畢時(shí),版本號(hào)是2.9,這也是本書(shū)的最終版本。此后新版本帶來(lái)的改變只有通過(guò)本書(shū)提供的源代碼來(lái)同步更新。
此間,我積極參與和關(guān)注著Jersey項(xiàng)目的動(dòng)向,通過(guò)關(guān)注Jersey官方文檔、Jersey在GitHub托管系統(tǒng)的源代碼、Jersey的Jira缺陷管理系統(tǒng)、Jersey的StackOverflow問(wèn)答系統(tǒng),對(duì)其修復(fù)缺陷、引入新功能和如何使用Jersey等事宜不斷跟進(jìn)。
我之所以這么做,目的只有一個(gè),即希望為讀者呈現(xiàn)的是一本Java領(lǐng)域REST開(kāi)發(fā)的好書(shū)。
為什么要寫(xiě)這本書(shū)
REST式的Web服務(wù)有多流行,相信每一位翻閱本書(shū)的讀者都很清楚,冒昧地猜測(cè),你可能想要看到的是一本講述如何使用Java語(yǔ)言和Java EE平臺(tái),來(lái)實(shí)現(xiàn)這一風(fēng)格的服務(wù)或者應(yīng)用的書(shū)。這也正是我這兩年來(lái)努力寫(xiě)作的初心和原動(dòng)力。我相信,讀者希望看到的內(nèi)容不單單是追逐流行、風(fēng)靡一時(shí)的“快餐”。作為開(kāi)發(fā)者,我知道擁有對(duì)新技術(shù)、新標(biāo)準(zhǔn)的敏銳嗅覺(jué)非常重要,但我認(rèn)為更難能可貴的是把一個(gè)業(yè)內(nèi)認(rèn)可的標(biāo)準(zhǔn)學(xué)好和用好。Java EE 7中包含了JAX-RS 2.0標(biāo)準(zhǔn),是Java領(lǐng)域REST式的Web服務(wù)的規(guī)范;GlassFish是Java EE 7的參考實(shí)現(xiàn)項(xiàng)目集,Jersey是其子項(xiàng)目,是JAX-RS 2.0的參考實(shí)現(xiàn)。本書(shū)的目的就是要把JAX-RS 2.0說(shuō)清楚,把如何用Jersey寫(xiě)好REST式的服務(wù)講明白。
本書(shū)特色
□第一本完整講述使用Java標(biāo)準(zhǔn)規(guī)范實(shí)現(xiàn)REST的書(shū)籍。
□第一本完整講述以JAX-RS 2.0參考實(shí)現(xiàn)實(shí)踐Jersey的書(shū)籍。
□給出深度學(xué)習(xí)和實(shí)踐JAX-RS的線路圖和解決方案。
讀者對(duì)象
本書(shū)從實(shí)踐角度,完整地詮釋了JAX-RS 2.0(JSR 339),即Jersey 2.0的核心元素和REST開(kāi)發(fā)過(guò)程。面向所有在Java領(lǐng)域?qū)W習(xí)和使用REST的讀者。同樣歡迎REST領(lǐng)域的其他語(yǔ)言的使用者通過(guò)本書(shū)了解REST的實(shí)現(xiàn)。
□技術(shù)路線:架構(gòu)師、技術(shù)主管、研發(fā)工程師、REST小白(網(wǎng)絡(luò)用語(yǔ),本書(shū)指新手);
□管理路線:部門經(jīng)理、項(xiàng)目經(jīng)理、產(chǎn)品經(jīng)理;
□敏捷實(shí)踐者。
如何閱讀本書(shū)
本書(shū)收納了筆者近三年的RESTful實(shí)戰(zhàn)經(jīng)驗(yàn),將REST理論與Java實(shí)現(xiàn)相結(jié)合,循序漸進(jìn)地將使用Java開(kāi)發(fā)REST式的Web服務(wù)中遇到的知識(shí)點(diǎn)和經(jīng)驗(yàn)呈現(xiàn)給讀者。每個(gè)章節(jié)中的知識(shí)點(diǎn)都精心設(shè)計(jì)了相應(yīng)的示例代碼,便于讀者更好地理解和更及時(shí)地進(jìn)行實(shí)踐。從第11章開(kāi)始,筆者從敏捷角度為讀者呈現(xiàn)了一個(gè)完整和相對(duì)復(fù)雜的REST式的Web服務(wù)實(shí)例,相信這個(gè)實(shí)例能讓讀者更好地理解相關(guān)內(nèi)容,同時(shí),可以對(duì)敏捷開(kāi)發(fā)和自動(dòng)化測(cè)試有新的認(rèn)識(shí)。
全書(shū)分為3篇,共11章。
第一篇共5章(第1~5章),講述REST的基本理論和Jersey的基本實(shí)踐。完成第一篇的閱讀和示例代碼的實(shí)踐,讀者可以學(xué)會(huì)使用Java開(kāi)發(fā)REST式的Web服務(wù)的基本能力。
第1章 分別闡述了REST、REST式的Web服務(wù)、JAX-RS 2.0和Jersey 2.x的基本情況。
第2章 講述了使用Jersey 2.x開(kāi)發(fā)一個(gè)基于JAX-RS 2.0標(biāo)準(zhǔn)的應(yīng)用的基本知識(shí)以及如何使用Jersey來(lái)集成Spring和JPA以快速開(kāi)發(fā)一個(gè)REST式的Web服務(wù)。本章包含10個(gè)示例項(xiàng)目。
第3章 深入闡述了如何使用Jersey設(shè)計(jì)和實(shí)現(xiàn)REST式的Web服務(wù)的API。本章包含5個(gè)示例項(xiàng)目。
第4章 深入闡述了Jersey的Providers對(duì)REST請(qǐng)求的處理。
第5章 講述了Jersey的客戶端開(kāi)發(fā)的基本實(shí)踐和常用配置。
第二篇共5章(第6~10章),講述寫(xiě)好REST程序的必要知識(shí)點(diǎn)。完成第二篇的閱讀和實(shí)踐,讀者可以全面了解如何寫(xiě)好一個(gè)完整的REST式的Web服務(wù)。
第6章 全面講述了如何實(shí)現(xiàn)一個(gè)安全的REST式的Web服務(wù)。
第7章 講述了Jersey的測(cè)試框架及其使用。
第8章 講述了Jersey對(duì)HTML5的SSE的支持和異步請(qǐng)求處理。
第9章 講述了Jersey 1.x遷移到Jersey 2.x的要素和經(jīng)驗(yàn)分享。
第10章 分享了REST式的Web服務(wù)的性能調(diào)優(yōu)的經(jīng)驗(yàn)。
第三篇包含1章(第11章),分享了5年外企工作中,我對(duì)自動(dòng)化測(cè)試和敏捷的體會(huì)。完成本部分內(nèi)容的閱讀和實(shí)踐,讀者可以更宏觀地審視REST的應(yīng)用場(chǎng)景,起到拋磚引玉的作用。
第11章 講述一個(gè)完整的REST項(xiàng)目的全過(guò)程。
全文由三個(gè)小版組成:“閱讀指南”、“小白講堂”(為某些在知識(shí)點(diǎn)上比較“小白”的同學(xué)介紹概念性的知識(shí))和“宅人坑事”(技術(shù)宅最自豪和最擔(dān)驚受怕的就是“踩坑”),旨在和讀者分享基礎(chǔ)知識(shí)和心得體會(huì),只為交流,切勿對(duì)號(hào)入座。
第一篇推薦研發(fā)工程師和REST小白完整閱讀,這部分包含了了解和使用JAX-RS 2.0完成學(xué)習(xí)和工作的必要章節(jié)。對(duì)于有基礎(chǔ)的技術(shù)人員,可以作為實(shí)踐的參考有選擇地閱讀。
第二篇推薦致力于提高自己的技術(shù)人員完整閱讀,這部分包含了JAX-RS 2.0的高級(jí)功能。永不滿足和持續(xù)學(xué)習(xí)的精神,會(huì)讓你在關(guān)鍵時(shí)刻成為“關(guān)鍵先生”。架構(gòu)師和項(xiàng)目經(jīng)理在考慮安全、性能等問(wèn)題時(shí),可以參考相關(guān)章節(jié)。
第三篇推薦渴望實(shí)戰(zhàn)指導(dǎo)的技術(shù)人員閱讀和跟隨實(shí)踐。同時(shí),該篇結(jié)合了筆者參與敏捷實(shí)踐的體會(huì),以scrum的方式進(jìn)行開(kāi)發(fā)管理。因此,敏捷實(shí)踐者和相關(guān)的部門經(jīng)理可以參考。
產(chǎn)品經(jīng)理可以閱讀與REST特性相關(guān)的章節(jié),這樣可幫你在設(shè)計(jì)應(yīng)用方面有所提高。
源代碼

勘誤和交流
作為開(kāi)發(fā)者,非常歡迎讀者能與我一起交流JAX-RS 2.0相關(guān)的技術(shù)。我的郵箱是:feuyeux@gmail.com,新浪微博是:六爺1_1。
本書(shū)的勘誤統(tǒng)計(jì)在https://github.com/feuyeux/jax-rs2-guide/wiki中,歡迎讀者批評(píng)指正。
致謝
感謝我的夫人Caroline。寫(xiě)作期間,沒(méi)有時(shí)間陪你共度周末,甚至沒(méi)有精力陪你共度以2開(kāi)頭的最后一個(gè)生日,也沒(méi)有營(yíng)造任何浪漫的氣氛。我們的女兒從蹣跚學(xué)步到會(huì)唱兒歌,我沒(méi)有更多的時(shí)間陪伴你們,而你一如既往地支持我,在此我對(duì)你表示深深的感謝。
感謝華章公司的楊福川。我最難忘的是最初談到要出本書(shū)時(shí)與君一拍即合的快意,這為我此后動(dòng)筆增添了無(wú)窮的動(dòng)力和信心。同時(shí),閣下給予我的信任和鼓勵(lì)也極大地推動(dòng)了本書(shū)的順利完成。在此后一年多的交往中,我深深感受到了業(yè)內(nèi)對(duì)楊福川專業(yè)水準(zhǔn)的評(píng)價(jià)和他敬業(yè)的態(tài)度。
感謝華章公司編輯高婧雅專業(yè)和耐心的審閱和指正。我曾一度被這位可敬的東北妹子的嚴(yán)謹(jǐn)和勤奮打擊,心生愧對(duì)華章精品精神的挫敗感。但隨著婧雅的不斷鼓勵(lì)和支持,我一遍遍改進(jìn)著稿件,自信心得到了恢復(fù),同時(shí),內(nèi)心得到了安慰,我沒(méi)有偏離初心和那份原動(dòng)力。非常感謝華章公司和婧雅。
感謝RedHat公司姜寧師兄的技術(shù)校對(duì),感謝阿里巴巴公司許曉斌的敏捷校對(duì)。
最后,我要感謝Technicolor敏捷團(tuán)隊(duì)中的每一位成員,正是與各位度過(guò)的每一天,才讓我有資本和信心與廣大讀者分享在REST式的開(kāi)發(fā)中的經(jīng)驗(yàn)和教訓(xùn),并在本書(shū)中介紹自動(dòng)化測(cè)試和敏捷實(shí)踐的相關(guān)知識(shí)。
- 多媒體CAI課件設(shè)計(jì)與制作導(dǎo)論(第二版)
- Mastering QGIS
- Network Automation Cookbook
- The Computer Vision Workshop
- 前端架構(gòu):從入門到微前端
- Web全棧工程師的自我修養(yǎng)
- Visual Basic學(xué)習(xí)手冊(cè)
- JavaScript:Moving to ES2015
- 軟件測(cè)試教程
- Android開(kāi)發(fā)三劍客:UML、模式與測(cè)試
- iPhone應(yīng)用開(kāi)發(fā)從入門到精通
- 21天學(xué)通C++(第5版)
- Unity&VR游戲美術(shù)設(shè)計(jì)實(shí)戰(zhàn)
- JavaScript動(dòng)態(tài)網(wǎng)頁(yè)編程
- OpenCV with Python Blueprints