具体描述
作 者:(美)凯 S.霍斯特曼(Cay S.Horstmann) 著;陈昊鹏 译 著作 定 价:139 出 版 社:机械工业出版社 出版日期:2017年09月01日 页 数:803 装 帧:平装 ISBN:9787111573319 ●译者序
●前言
●第1章JavaSE8的流库1
●1.1从迭代到流的操作1
●1.2流的创建3
●1.3filter、map和flatMap方法6
●1.4抽取子流和连接流8
●1.5其他的流转换8
●1.6简单约简9
●1.7Optional类型11
●1.7.1如何使用Optional值11
●1.7.2不适合使用Optional值的方式12
●1.7.3创建Optional值13
●1.7.4用flatMap来构建Optional值的函数13
●1.8收集结果15
●1.9收集到映射表中19
●1.10群组和分区23
●1.11下游收集器24
●1.12约简操作28
●1.13基本类型流29
●部分目录
内容简介
本书是Java领域有影响力和价值的著作之一,由拥有20多年教学与研究经验的Java技术专家撰写(获Jolt大奖),与《Java编程思想》齐名,10余年优选畅销不衰,广受好评。靠前0版根据JavaSE8全面更新,同时修正了第9版中的不足,系统全面讲解了Java语言的核心概念、语法、重要特性和开发方法,包含大量案例,实践性强。 (美)凯 S.霍斯特曼(Cay S.Horstmann) 著;陈昊鹏 译 著作 凯 S.霍斯特曼,圣何塞州立大学计算机科学系教授、Java的倡导者,经常在开发人员会议上发表演讲。他是《C0 re Java fo r the Impatient》(2015)《Java SE 8 for the Really Impatient》(2014)和《Scala for the Impatient》(2012)的作者,这些书均由Addison―Wesley出版。他为专业程序员和计算机科学专业学生编写过数十本图书。 前 言致读者本书是按照Java SE 8完全更新后的《Java核心技术 卷Ⅱ 高级特性(原书第10版)》。卷Ⅰ主要介绍了Java语言的一些关键特性;而本卷主要介绍编程人员进行专业软件开发时需要了解的高级主题。因此,与本书卷Ⅰ和之前的版本一样,我们仍将本书定位于用Java技术进行实际项目开发的编程人员。 编写任何一本书籍都难免会有一些错误或不准确的地方。我们非常乐意听到读者的意见。当然,我们更希望对本书问题的报告只听到一次。为此,我们创建了一个FAQ、bug修正以及应急方案的网站http:// horstmann.com/corejava。你可以在bug报告网页(该网页的目的是鼓励读者阅读以前的报告)的末尾处添加bug报告,以此等
《Java核心技术(卷2):高级特性》是一本旨在深入探索Java语言核心机制和高级开发技巧的权威著作。本书精选了Java SE 8及更高版本中的重要特性,为开发者提供了全面、详尽的技术解析,帮助读者构建健壮、高效、可扩展的Java应用程序。 本书内容涵盖广泛,逻辑严谨,循序渐进,确保读者能够逐步掌握Java开发的精髓。 第一部分:Java语言基础回顾与提升 在深入高级特性之前,本书首先为读者回顾了Java语言的基础知识,并在此基础上进行了拔高。这部分内容并非简单的重复,而是从更深层次的角度审视Java的核心概念,为后续的高级话题打下坚实基础。 对象导向编程的深度理解: 本章将超越基本的类、对象、继承和多态,深入探讨封装的真正含义、接口的强大之处以及抽象类的作用。我们将分析类设计的原则,例如SOLID原则(单一职责、开放封闭、里氏替换、接口隔离、依赖倒置),并展示如何在实际开发中应用这些原则来构建易于维护和扩展的代码。多态的实现机制,如虚方法调用和方法重写,将得到细致的剖析,帮助读者理解运行时多态的威力。 Java内存模型与垃圾回收机制: 理解Java内存模型是编写并发安全和高性能代码的关键。本书将详细阐述Java内存模型(JMM)的各个方面,包括内存可见性、原子性、顺序性等,并解释`volatile`关键字、`synchronized`关键字以及`java.util.concurrent`包中的原子类是如何保证线程安全和数据一致性的。同时,我们将深入剖析JVM的垃圾回收机制,介绍不同的垃圾回收算法(如Serial、Parallel、CMS、G1),分析它们的优缺点,并指导读者如何通过调优JVM参数来优化内存使用和垃圾回收的效率。 异常处理与资源管理: 尽管异常处理是Java的基础,但本书将探讨更高级的异常处理策略,包括如何设计自定义异常类、何时使用受检查异常和非受检查异常、以及如何有效地使用`try-catch-finally`块来捕获和处理错误。更重要的是,本书将详细讲解`try-with-resources`语句,这是Java 7引入的强大特性,能够自动化地管理实现了`AutoCloseable`接口的资源,极大地简化了资源释放的流程,避免资源泄漏。 第二部分:Java SE 8及更高版本核心特性深度解析 这是本书的核心内容,聚焦于Java SE 8及后续版本引入的革命性特性,这些特性极大地提升了Java的表达能力和开发效率。 Lambda表达式与函数式接口: Lambda表达式是Java 8最显著的改进之一,它允许以简洁的语法编写函数式接口的实例。本书将从函数式编程的视角介绍Lambda表达式,深入讲解函数式接口的定义与使用,包括内置的函数式接口(如`Predicate`, `Function`, `Consumer`, `Supplier`)以及如何创建自定义的函数式接口。我们将演示Lambda表达式在集合操作、事件处理等场景下的强大应用,帮助读者理解函数式编程范式如何带来更简洁、更具声明性的代码。 Stream API: Stream API是Java 8带来的又一重大革新,它提供了一种声明式、高度优化的方式来处理数据集合。本书将系统地介绍Stream API的各种操作,包括中间操作(如`filter`, `map`, `flatMap`, `sorted`)和终端操作(如`forEach`, `collect`, `reduce`, `anyMatch`, `allMatch`, `noneMatch`)。我们将通过丰富的实例,展示如何使用Stream API进行高效的数据过滤、转换、聚合和分组,以及如何利用并行流来提升处理大量数据的性能。 Optional类: `Optional`类是Java 8为了解决`NullPointerException`而引入的,它提供了一种更加健壮和显式的方式来处理可能为空的值。本书将深入讲解`Optional`的构造、使用以及各种方法(如`get()`, `orElse()`, `orElseThrow()`, `ifPresent()`, `map()`, `flatMap()`),并阐述在哪些场景下应优先使用`Optional`来替代传统的空值检查,从而编写出更安全、更易读的代码。 CompletableFuture与异步编程: 随着多核处理器的普及,异步编程成为提升应用程序响应性和吞吐量的关键。本书将详细讲解`CompletableFuture`,这是Java 8引入的用于处理异步计算的类。我们将深入探讨`CompletableFuture`的构建、组合、依赖关系以及异常处理,并通过实例演示如何在并发环境中执行耗时操作,避免阻塞主线程,从而构建高响应性的应用程序。 新的日期与时间API(java.time包): 传统的`java.util.Date`和`java.util.Calendar`存在诸多不足,Java 8引入了全新的`java.time`包,提供了更强大、更灵活的日期和时间处理能力。本书将全面介绍`java.time`包中的主要类,如`LocalDate`, `LocalTime`, `LocalDateTime`, `ZonedDateTime`, `Period`, `Duration`等,并演示如何进行日期时间的创建、格式化、解析、计算以及时区处理,帮助读者解决复杂的日期时间问题。 第三部分:并发编程的高级主题 在多线程环境下编写正确且高效的代码是Java开发中的一大挑战。本书将深入探讨Java并发编程的高级概念和工具。 线程池与Executor框架: 本书将详细介绍`Executor`框架,包括`ExecutorService`, `Executors`工厂类,以及如何创建和管理各种类型的线程池(如固定线程池、缓存线程池、调度线程池)。我们将分析线程池的工作原理、线程复用、任务提交与调度,并指导读者如何选择合适的线程池配置来优化并发任务的执行效率。 并发集合与同步工具: 除了基本的`synchronized`关键字,Java提供了丰富的并发集合类(如`ConcurrentHashMap`, `CopyOnWriteArrayList`)和同步工具(如`CountDownLatch`, `CyclicBarrier`, `Semaphore`, `Lock`接口及其实现类`ReentrantLock`)。本书将深入讲解这些工具的原理和使用场景,帮助读者在多线程环境中安全高效地访问和修改共享数据。 原子操作与CAS(Compare-And-Swap): 本书将介绍`java.util.concurrent.atomic`包中的原子类(如`AtomicInteger`, `AtomicLong`, `AtomicReference`),它们提供了无锁的原子操作,效率通常高于锁。我们将深入剖析CAS机制的工作原理,并解释它是如何实现无锁并发控制的,以及它在构建高性能并发组件中的作用。 线程生命周期与中断机制: 深入理解线程的各个生命周期状态(新建、就绪、运行、阻塞、终止)是进行有效线程管理的基石。本书将详细讲解线程的创建、启动、等待、休眠等操作,并重点阐述Java线程中断机制的工作原理,包括`interrupt()`方法、`isInterrupted()`方法以及`Thread.interrupted()`方法,指导读者如何优雅地中断线程,避免程序僵死。 第四部分:Java I/O与NIO深度探索 高效的数据输入输出是应用程序性能的重要组成部分。本书将深入讲解Java的I/O模型。 传统I/O流模型: 本章将回顾Java传统的字节流和字符流,包括`InputStream`, `OutputStream`, `Reader`, `Writer`及其常用的子类,如`FileInputStream`, `FileOutputStream`, `BufferedReader`, `BufferedWriter`。我们将深入分析流的缓冲机制、装饰器模式的应用,以及如何正确地关闭流以避免资源泄漏。 NIO(New I/O)框架: NIO是Java 1.4引入的非阻塞I/O框架,它提供了比传统I/O更高效的数据传输机制。本书将详细讲解NIO的核心组件,包括`Channel`(通道)、`Buffer`(缓冲区)和`Selector`(选择器)。我们将深入解析NIO的工作原理,如缓冲区管理、数据读写、通道与缓冲区的交互,以及如何利用Selector实现多路复用,从而构建高性能的网络应用程序。 NIO.2(AIO)与异步I/O: Java 7进一步增强了I/O能力,引入了NIO.2,也称为异步I/O(Asynchronous I/O)。本书将介绍NIO.2的异步文件操作和网络操作,包括`AsynchronousFileChannel`和`AsynchronousSocketChannel`。我们将演示如何使用回调(Callback)或`CompletionStage`来处理异步I/O操作的结果,以实现真正的非阻塞I/O。 第五部分:网络编程与分布式系统基础 本书将引导读者理解Java在网络编程和构建分布式系统方面的应用。 TCP/IP与UDP套接字编程: 本章将深入讲解Java提供的TCP(面向连接)和UDP(无连接)套接字API,包括`Socket`、`ServerSocket`(TCP)和`DatagramSocket`、`DatagramPacket`(UDP)。我们将通过实例演示如何创建客户端和服务器端应用程序,实现可靠的数据传输和高效的报文交换。 HTTP协议与Web客户端: 本书将介绍如何使用Java构建HTTP客户端,包括使用`java.net.HttpURLConnection`以及更现代的`java.net.http`包(Java 11+),实现发送HTTP请求(GET, POST等)、处理响应、设置请求头等功能,为访问Web服务打下基础。 RMI(Remote Method Invocation): RMI是Java提供的一种用于在远程Java虚拟机上调用Java对象的机制。本书将介绍RMI的基本概念、远程接口定义、远程对象实现以及客户端如何调用远程方法,为理解分布式对象计算提供入门。 第六部分:JDBC与数据库交互 数据库是大多数应用程序不可或缺的一部分。本书将讲解Java数据库连接。 JDBC API详解: 本章将全面讲解JDBC(Java Database Connectivity)API,包括`Connection`, `Statement`, `PreparedStatement`, `ResultSet`等核心接口。我们将演示如何加载数据库驱动、建立数据库连接、执行SQL语句(包括查询、更新、删除),以及如何处理查询结果集。 高级JDBC特性: 除了基本操作,本书还将探讨JDBC的高级特性,如事务管理、批量更新、参数化查询的安全性与性能优化,以及如何处理二进制数据和大型对象(BLOB/CLOB)。 第七部分:XML与JSON处理 数据交换是现代应用程序开发的重要环节。本书将介绍Java中处理XML和JSON的常用方法。 XML解析技术(DOM, SAX, StAX): 本书将深入讲解Java中处理XML的多种API,包括DOM(Document Object Model)的树形结构解析、SAX(Simple API for XML)的事件驱动解析,以及StAX(Streaming API for XML)的拉式解析。我们将分析它们的优缺点,并指导读者根据不同场景选择最合适的解析方式。 JSON处理库: 随着JSON成为Web服务和API事实上的标准,本书将介绍流行的JSON处理库,如Jackson或Gson,演示如何将Java对象序列化为JSON字符串,以及如何将JSON字符串反序列化为Java对象,极大地简化了JSON数据的处理。 第八部分:Java虚拟机(JVM)内部机制概览 为了更深入地理解Java应用程序的性能和行为,了解JVM的内部机制至关重要。 JVM的类加载机制: 本书将剖析Java类的加载、连接(验证、准备、解析)和初始化过程。我们将介绍类加载器的层次结构(启动类加载器、扩展类加载器、应用程序类加载器)以及双亲委派模型,帮助读者理解类是如何被加载到内存中并执行的。 JVM内存区域与对象创建: 本章将详细阐述JVM的运行时内存区域,包括程序计数器、虚拟机栈、本地方法栈、堆和方法区(元空间)。我们将深入分析对象在堆中的创建过程,包括内存分配策略和垃圾回收器是如何工作的。 《Java核心技术(卷2):高级特性》以其全面深入的内容、严谨的逻辑结构和丰富的实战案例,是每一位希望在Java开发领域不断精进的开发者不可或缺的学习资源。本书将帮助读者构建坚实的理论基础,掌握前沿的Java技术,最终能够自信地设计和实现复杂的、高性能的Java应用程序。