《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章 两个简单应用
附录