- Java RESTful Web Service實戰
- 韓陸
- 252字
- 2018-12-31 14:06:49
前言
從我啟動本書到完稿,歷時一年有余。
此間,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式的開發中的經驗和教訓,并在本書中介紹自動化測試和敏捷實踐的相關知識。
- 垃圾回收的算法與實現
- Learning Informatica PowerCenter 10.x(Second Edition)
- Java面向對象程序開發及實戰
- Rust Essentials(Second Edition)
- Learning Salesforce Einstein
- C程序設計實踐教程
- Java編程從入門到精通
- 例說FPGA:可直接用于工程項目的第一手經驗
- JBoss AS 7 Development
- Python高性能編程(第2版)
- Clojure編程樂趣
- MySQL核心技術與最佳實踐
- PHP程序設計經典300例
- Python Geospatial Analysis Cookbook
- 片上系統設計思想與源代碼分析