具體描述
作 者:(美)凱 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應用程序。