Java网络编程核心技术详解(视频微课版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

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展示了本书各章之间的循序渐进关系。

图1 本书各章之间的顺序渐进关系

从图1可以看出,本书第1章介绍了分层的网络体系结构,Java网络程序位于最上层——应用层,并且通过套接字访问底层网络,也可以说,套接字为应用层封装了底层网络传输数据的细节。套接字(Socket)是Java网络编程的基础,第2章和第3章分别详细介绍了Socket与ServerSocket的用法。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(Transport Layer 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

读者服务

微信扫码:38315

·获取博文视点学院20元付费内容抵扣券

·获取本书配套500+分钟的视频微课,以及配套源代码

·获取免费增值资源

·加入读者交流群,与更多读者互动

·获取精选书单推荐