本书结合大量典性的实例,详细介绍了用Java来编写网络应用程序的技术。本书的范例都基于最新的JDK10版本。本书内容包括:Java网络编程的基础知识、 套接字编程、非阻塞通信、创建HTTP服务器与客户程序、数据报通信、对象的序列化与反序列化、Java反射机制、RMI框架、JDBC API、JavaMail API、MVC设计模式、安全网络通信、XML数据处理和Web服务。
阅读本书,读者不仅可以掌握网络编程的实用技术,还可以进一步提高按照面向对象的思想来设计和编写Java软件的能力。本书适用于所有Java编程人员,包括Java初学者及资深Java开发人员。本书还可作为高校的Java教材,以及企业Java培训教材。
知名Java开发专家、IT技术作家孙卫琴老师畅销作品再度升级
业界经典10年畅销图书《Java面向对象编程》的姊妹篇
以行云流水般的语言诠释Java网络编程核心
基于全新Java技术、程序员的优选Java指南、配备视频微课
推 荐 序
在 IT 行业,大多数 Java 程序员都看过孙卫琴老师的书。孙老师的书,清晰严谨,把复杂的技术架构层层剖析,结合典型的实例细致讲解,读者只要静下心来好好品读,就能深入 Java 技术的殿堂,领悟其中的核心思想,并掌握开发实际应用的种种技能。
读好书,犹如和名师面对面交流,可以全面地学习和传承名师在这个技术领域里的经
验和学识。孙老师及其同仁孜孜不倦地钻研 Java 技术,紧跟技术前沿,传道授业、著书立说。无数程序员从中受益,从 Java 小白成长为 Java 大牛。
Oracle 作为 Java 领域的技术引领者和规范制定者,非常欢迎中国的作者把最新的 Java技术介绍给广大 Java 开发人员,孙老师的书刚好满足了这一需求。如今,Java 在网络应用开发领域得到了非常广泛的运用,这本书深入浅出地介绍了套接字编程、非阻塞通信、数据报通信、RMI 框架、安全网络通信和 Web 服务等网络编程技术。读者如果希望成为高级Java 开发人员,本书是必备的参考手册和学习宝典。
甲骨文人才产业基地作为 Oracle 在中国的业务拓展公司,非常欣赏这本书,许多老师和学员都用本书作为首选的 Java 网络编程参考书。相信读者能够从中受益匪浅,轻松上手,循序渐进,最后精通技术。
王正平
甲骨文人才产业基地教育产品部总监
前 言
Java 语言是第 1 个完全融入网络的语言。Java 语言之所以适合编写网络应用程序,归功于它的以下三方面的优势。
(1)Java 语言与生俱来就是与平台无关的。Java 程序能够运行在不同的平台上,运行在不同平台上的 Java 程序之间能够方便地进行网络通信。
(2)Java 语言具有完善的安全机制,可以对程序进行权限检查,这对网络程序至关重要。
(3)JDK 类库提供了丰富的网络类库(如套接字 API、JavaMail API 和 JDBC API 等),大大简化了网络程序的开发过程。
本书将展示如何利用 Java 网络类库来快速便捷地创建网络应用程序,致力于完成以下任务。
实现访问 HTTP 服务器的客户程序。
实现 HTTP 服务器。
实现多线程的服务器,以及非阻塞的服务器。
解析并展示 HTML 页面。
通过 JDBC API 访问数据库。
通过 JavaMail API 接收和发送电子邮件。
利用 RMI 框架实现分布式的软件系统。
进行安全的网络通信,对数据加密,验证身份,保证数据的完整性。
运用第三方开源软件框架,如 Axis、Spring 和 CXF,开发 Web 服务,实现分布式的软件系统。
本书的组织结构和主要内容
本书结合大量典型的实例,详细介绍了用 Java 来编写网络应用程序的技术。本书内容包括:Java 网络编程的基础知识、套接字编程、非阻塞通信、创建 HTTP 服务器与客户程序、数据报通信、对象的序列化与反序列化、Java 反射机制、RMI 框架、JDBC API、MVC设计模式、JavaMail API、安全网络通信、XML 数据处理和 Web 服务。
本书第 1 章介绍了分层的网络体系结构,Java 网络程序位于最上层——应用层,并且通过套接字访问底层网络,也可以说,套接字为应用层封装了底层网络传输数据的细节。套接字(Socket)是 Java 网络编程的基础,第 2 章和第 3 章分别详细介绍了 Socket 与 ServerSocket 的用法。Java 网络程序都采用客户/服务器模式,客户端发出获得Java 网络编程核心技术详解特定服务的请求,服务器接收请求,执行客户端所请求的操作,然后向客户端发回响应。
本书在介绍服务器端编程时,探讨了服务器端实现并发响应多个客户请求的两种方式:一种方式是运用线程池(第 3 章),还有一种方式是采用非阻塞通信(第 4 章)。在介绍客户端编程时,介绍了 JDK 提供的一种通用的客户端协议处理框架(第 6 章)。
利用 Java 网络 API,可以实现基于各种应用层协议(比如 HTTP 和 FTP)的服务器程序与客户程序,本书侧重介绍了 HTTP 服务器(第 5 章)与 HTTP 客户程序(第 7 章)的实现方法,HTTP 客户程序也被称为浏览器。
本书还介绍了两种分布式的软件架构:RMI(第 11 章)和 Web 服务(第 17 章和第18 章)。这些分布式架构主要解决的问题是,如何让客户端调用服务器端的远程对象。RMI是 JDK 自带的,它要求客户端与服务器端都是 Java 程序,而 Web 服务允许用任意编程语言编写的客户程序与服务器程序之间能够通信。本书详细介绍了 RMI 框架的用法。RMI框架在其实现中封装了用套接字通信的细节,此外,RMI 框架的实现会把客户端的方法调用请求信息序列化为字节序列,把它发送给服务器端,然后在服务器端再通过反序列化把字节序列还原为方法调用请求。RMI 框架还运用了动态代理机制,为客户端提供了远程对象的代理。客户端实际上直接访问的是远程对象的代理。为了帮助读者理解 RMI 框架的实现原理,本书第 9 章和第 10 章分别介绍了 Java 序列化以及反射机制。在介绍反射机制时,还介绍了动态代理。
本书第 17 章和第 18 章介绍了在开源软件框架 Axis、Spring 和 CXF 中创建和发布 Web服务的方法。这些框架软件封装了客户端和服务器端底层通信的细节,使得开发人员只要利用框架软件的 API、注解和配置文件,就能方便地编写与具体业务领域相关的服务程序和客户程序。
本书还介绍了两个常用的客户端的网络 API:JDBC API(第 12 章)和 JavaMail API(第 14 章),这两个 API 分别用于访问数据库服务器和邮件服务器,在它们的实现中都封装了用套接字与服务器通信的细节。Java 客户程序可以通过 JDBC API 来访问各种数据服务器,还可以通过 JavaMail API 来访问各种邮件服务器。
本书第 13 章介绍了一个运用了 MVC 设计模式和 RMI 框架的综合应用。MVC 设计模式把实际的软件应用分为视图、控制器和模型 3 个层次,每个层次相对独立。本书的范例把模型作为远程对象放到 RMI 的服务器端,把视图和控制器放到 RMI 的客户端。
本书第 15 章介绍了 SSLSocket,它支持 SSL(Server Socket Layer)协议和 TLS(TransportLayer Security)协议。运用 SSLSocket,可以实现安全的网络通信,网络上传输的是被加密的数据,并且通信两端还能验证对方的身份。
本书在介绍以上技术时,采用 UML建模语言中的类框图和时序图来展示对象模型,以及类与类之间的协作关系。此外,本书还把一些常见的设计模式,如静态代理模式、动态代理模式和 MVC设计模式等运用到实际例子中。阅读本书,读者不仅可以掌握 Java网络编程的实用技术,还可以进一步提高按照面向对象的思想来设计和编写 Java 软件的能力。
这本书是否适合您
阅读本书,要求读者已经具备了 Java 编程的基础知识。对于不熟悉 Java 语言的读者,建议先阅读本书作者的另一本书《Java 面向对象编程》,本书是它的姊妹篇。《Java 面向对象编程》自 2006 年 7 月出版后,一直畅销至今,受到了广大 IT 读者的欢迎。本书围绕着网络编程,进一步介绍了 Java 语言的一些高级特性,这些特性是作为一个高级 Java 开发人员必须知晓的。深入了解这些高级特性,有助于开发人员熟练地开发分布式的软件系统,或者轻松地学习和掌握现有的分布式软件架构。
本书一方面由浅入深地组织内容,满足 Java 网络编程初学者的需求,另一方面与实际项目紧密结合,介绍了线程池、非阻塞通信和动态代理等高级话题,可作为 Java 开发人员的参考手册。本书还可以作为高校的 Java 教材,以及企业培训教材。
致谢
本书在编写过程中得到了 Oracle 公司在技术上的大力支持。此外,JavaThinker.net 网站的网友为本书的编写提供了有益的帮助,在此表示衷心的感谢!尽管我们尽了最大努力,
但本书难免会有不妥之处,欢迎各界专家和读者朋友批评指正。以下网址是作者为本书提供的技术支持网址,读者可通过它下载与本书相关的资源(如源代码、软件安装程序和视频课程、PPT 讲义等),还可以与其他读者交流学习心得,以及对本书提出宝贵意见。
http://www.javathinker.net/javanet.jsp
孙卫琴