《Java網絡編程進階——從BIO到RPC》用于學習Java網絡通信的設計和開發,系統地介紹了Java網絡通信的多種技術,由淺人深地闡述了多種通信技術的基礎知識、主要模型以及實際可用的案例,使讀者能有效地掌握Java網絡編程的相關知識,并具備以Java編程來處理和解決網絡通信問題的能力。
全書共8章和1個附錄。第1~4章依次介紹BIO、NIO、AIO及Netty編程技術,每章均提供3個案例的設計和編碼;第5章與讀者分享RESTful應用輕量級框架Jersey的使用經驗;第6章介紹Web服務消息推送規范SSE,并基于Jersey的SSE機制實現訂閱一發布功能以及一個可重人的分布式鎖;第7章自行設計了一個RPC框架并進行代碼實現;第8章開發了兩個簡單常見的應用;附錄解答了Java開發時常見的若干問題。
《Java網絡編程進階——從BIO到RPC》可作為高等院校“網絡程序設計”課程的教材,也可供相關領域的技術人員參考。
網絡編程是一門實用型技術,必須理論和實踐相結合。本書在闡述理論知識或設計思路時,輔以更為直觀的圖解,使其更易理解;本書亦用大量的篇幅展示落地實用的Java代碼并對其進行分析和解釋;通過案例的開發和分析,本書還向讀者展示了Java網絡技術與Java其他技術如線程、同步器、泛型、反射等的關聯使用。
‘隨著網絡及Java技術的發展,分布式和微服務成了企業信息部門在技術選型時的首選。網絡編程技術是分布式系統開發的基石,無論是使用現有的微服務框架開發業務應用,還是自行研發底層的服務框架,了解、掌握底層的網絡編程技術如AIO、NIO等,對開發者來說都是必不可少且多多益善的技術修煉。基礎不牢,地動山搖,豐富自己的技術知識棧將為開發者的職業生涯提供更加廣闊的發展空間。本書特色
網絡編程是一門實用型技術,必須理論和實踐相結合。本書在闡述理論知識或設計思路時,輔以更為直觀的圖解,使其更易理解;本書亦用大量的篇幅展示落地實用的Java代碼并對其進行分析和解釋;通過案例的開發和分析,本書還向讀者展示了Java網絡技術與Java其他技術如線程、同步器、泛型、反射等的關聯使用。讀者對象
·Java程序員
·分布式系統架構師
·高校“網絡程序設計”課程的學生
·其他對Java網絡編程感興趣的讀者本書內容
基于學以致用的原則,本書通過8章內容和1個附錄來介紹Java網絡編程相關的技術。
第1~4章依次介紹基于BIO、NIO、AIO及Netty的編程技術,每種技術實現3個案例的設計和編碼。
第5章與讀者分享RESTful應用輕量級框架Jersey的使用經驗,包括同步請求及應答、異步請求及應答、基本認證和授權以及如何替換某些部件,這些經驗使得Jersey應用的開發更加高效和魯棒。
第6章介紹Web服務消息推送規范SSE的使用,基于Jersey的SSE機制實現訂閱一發布功能以及一個可重人的分布式鎖。
第7章自行設計一個RPC框架并進行代碼實現,闡述了設計方案,并對關鍵代碼進行解釋。
第8章開發兩個簡單常見的應用,一個是基于WebSocket的聊天室;另一個是郵件發送程序。
附錄解答了Java開發時常見的若干問題。
本書所關注的網絡編程技術符合業界當今主流,可以有效提高讀者的Java網絡編程技術水平及核心競爭力。源碼和課件
本書的Java源碼和PPT課件可從https://github. com/Adairiver/jnp下載,亦可在清華大學出版社的官方網站上獲取。致謝
感謝我的家人。本書的寫作占用了大量的業余時間,沒有家人的支持和理解,這本書不可能完成。
感謝清華大學出版社的編輯劉向威博士。因為向威博士的一直鼓勵和幫助,本書才會如此順利地出版。
由于筆者的水平有限,書中難免有不足之處,還望讀者海涵和指正。非常期待能夠得到廣大讀者的反饋,在技術之路上互勉共進。
肖川,復旦大學計算機學院教師、工程師;男,44歲;專業:計算機技術;
學歷:碩士;研究領域:計算機網絡、計算機教學;研究成果:著有《計算機網絡與網頁制作》等。
第1章 BIO
1.1 Socket通信模型
1.2 完善通信框架
1.3 升級write與read
1.4 案例1:傳輸字符串的會話
1.5 案例2:傳輸對象的會話
1.6 案例3:傳輸文件的會話
習題
第2章 NIO
2.1 NIO模型
2.2NIO服務端框架代碼
2.3NIO客戶端框架代碼
2.4 ByteBuffer及其在NIO中使用的問題
2.5 NIO的分幀處理
2.6 案例1:傳輸字符串的會話
2.7 案例2:傳輸對象的會話
2.8 案例3:傳輸文件的會話
2.9 設計多線程服務器
習題
第3章 AIO
3.1 異步操作概述
3.2AIO服務端框架代碼
3.3AIO客戶端框架代碼
3.4AIO的分幀問題
3.5 案例1:傳輸字符串的會話
3.6 案例2:傳輸對象的會話
3.7 案例3:傳輸文件的會話
習題
第4章 Netty
4.1 Netty的使用模型
4.2 Netty的入站與出站
4.3 服務端框架代碼
4.4 客戶端框架代碼
4.5 ByteBuf、分幀以及ChannelHandler鏈
4.6 案例1:傳輸字符串的會話
4.7 案例2:傳輸對象的會話
4.8 案例3:傳輸文件的會話
習題
第5章 Jersey
5.1 概述
5.2 案例1:對象資源的操作
5.2.1 服務端基本框架
5.2.2 客戶端基本框架
5.2.3 逐項添加URI功能
5.3 案例2:異步請求與異步應答
5.3.1 服務端基本框架
5.3.2 客戶端基本框架
5.3.3 逐項添加URI功能
5.4 案例3:基本認證和授權
5.4.1 服務端基本框架
5.4.2 客戶端基本框架
5.4.3 服務端認證項
5.4.4 客戶端認證項
……
第6章 SSE
第7章 實現RPC框架
第8章 兩個簡單應用
附錄