寫給大忙人看的Java SE 8

寫給大忙人看的Java SE 8

《寫給大忙人看的Java SE 8》向Java開發人員言簡意賅地介紹了Java 8 的許多新特性(以及Java 7 中許多未被關注的特性),《寫給大忙人看的Java SE 8》延續了《快學Scala》“不廢話”的風格。 《寫給大忙人看的Java SE 8》共分為9章。第1章講述了lambda表達式的全部語法;第2章給出了流的完整概述;第3章給出了使用lambda表達式設計庫的有效技巧;第4章介紹了JavaFX;第5章詳細介紹了Java新增的日期/時間API;第6章介紹了原子計數器、並發哈希映射、並行數組操作等特性中的改進;第7章介紹了如何在Java虛擬機上執行JavaScript,以及如何與Java代碼進行互動操作;第8章描述了Java 8中其他一些不起眼但很實用的特性;第9章則關注於Java 7中改進的異常處理,以及其他一些你可能會忽略掉的API。 《寫給大忙人看的Java SE 8》適合所有Java程式設計師、軟體設計師、架構師及軟體開發愛好者閱讀。對於想要快速了解Java SE 8新特性的Java工程師來說,《寫給大忙人看的Java SE 8》是一本不可多得的枕邊讀物。

編輯推薦

Java SE 8是Java多年來最重要的一個更新版本,備受萬千程式設計師的期待。lambda表達式(閉包)和流的加入代表了自泛型和註解依賴以來,Java語言發生的最大改變。

通過《寫給大忙人看的Java SE 8》這本書,國際知名的Java作者 Cay S. Horstmann向我們介紹了Java 8 中最有價值的新特性(以及一些Java 7中本該引起人們注意的特性)。如果你是一個經驗豐富的Java編程人員,Horstmann的實際見解和示例代碼會幫助你快速掌握這些Java語言和平台的改進。這本不可或缺的指南包括以下內容:

□ 如何使用lambda表達式(閉包)來編寫可以傳遞給工具類函式的計算“代碼片段”。

□ 使得Java集合變得更加靈活有效的全新流API。

□ 並發編程的主要更新,包括對lambda表達式(filter/map/reduce)的利用,以及對共享計數器和hash表的巨大性能提升。

□ 用整一章詳細給出了在實際中使用lambda表達式的建議。

□ 被程式設計師期待已久的、精心設計的日期/時間/日曆庫(JSR 310)。

□ 簡要介紹了用來替代Swing GUI的JavaFX,以及Nashorn JavaScript引擎。

□ 細緻討論了許多讓Java編程更有效、更享受的API改動。

這是第一本介紹了所有這些備受期待的改進之處的書籍,對於任何希望編寫最健壯、最有效、最安全的Java代碼的人來說,本書都是極具價值的。

內容提要

《寫給大忙人看的Java SE 8》向Java開發人員言簡意賅地介紹了Java 8 的許多新特性(以及Java 7 中許多未被關注的特性),《寫給大忙人看的Java SE 8》延續了《快學Scala》“不廢話”的風格。

《寫給大忙人看的Java SE 8》共分為9章。第1章講述了lambda表達式的全部語法;第2章給出了流的完整概述;第3章給出了使用lambda表達式設計庫的有效技巧;第4章介紹了JavaFX;第5章詳細介紹了Java新增的日期/時間API;第6章介紹了原子計數器、並發哈希映射、並行數組操作等特性中的改進;第7章介紹了如何在Java虛擬機上執行JavaScript,以及如何與Java代碼進行互動操作;第8章描述了Java 8中其他一些不起眼但很實用的特性;第9章則關注於Java 7中改進的異常處理,以及其他一些你可能會忽略掉的API。

《寫給大忙人看的Java SE 8》適合所有Java程式設計師、軟體設計師、架構師及軟體開發愛好者閱讀。對於想要快速了解Java SE 8新特性的Java工程師來說,《寫給大忙人看的Java SE 8》是一本不可多得的枕邊讀物。

目錄

第1章 lambda表達式 0

1.1 為什麼要使用lambda表達式 2

1.2 lambda表達式的語法 4

1.3 函式式接口 6

1.4 方法引用 8

1.5 構造器引用 10

1.6 變數作用域 10

1.7 默認方法 14

1.8 接口中的靜態方法 17

練習 18

第2章 Stream API 20

2.1 從疊代器到Stream操作 22

2.2 創建Stream 23

2.3 filter、map和flatMap方法 25

2.4 提取子流和組合流 26

2.5 有狀態的轉換 27

2.6 簡單的聚合方法 28

2.7 Optional類型 29

2.7.1 使用Optional值 29

2.7.2 創建可選值 30

2.7.3 使用flatMap來組合可選值函式 31

2.8 聚合操作 32

2.9 收集結果 33

2.10 將結果收集到Map中 35

2.11 分組和分片 37

2.12 原始類型流 40

2.13 並行流 42

2.14 函式式接口 44

練習 45

第3章使用lambda編程 48

3.1 延遲執行 50

3.2 lambda表達式的參數 51

3.3 選擇一個函式式接口 52

3.4 返回函式 55

3.5 組合 56

3.6 延遲 58

3.7 並行操作 59

3.8 處理異常 60

3.9 lambda表達式和泛型 63

3.10 一元操作 65

練習 67

第4章 JavaFX 72

4.1 Java GUI編程簡史 74

4.2 你好,JavaFX! 75

4.3 事件處理 76

4.4 JavaFX屬性 77

4.5 綁定 80

4.6 布局 85

4.7 FXML 91

4.8 CSS 95

4.9 動畫和特殊效果 97

4.10 不尋常的控制項 100

練習 103

第5章新的日期和時間API 106

5.1 時間線 108

5.2 本地日期 110

5.3 日期校正器 113

5.4 本地時間 114

5.5 帶時區的時間 115

5.6 格式化和解析 119

5.7 與遺留代碼互操作 122

練習 123

第6章並發增強 126

6.1 原子值 128

6.2 ConcurrentHashMap改進 131

6.2.1 更新值 132

6.2.2 批量數據操作 134

6.2.3 Set視圖 136

6.3 並行數組操作 137

6.4 可完成的Future 138

6.4.1 Future 138

6.4.2 編寫Future 139

6.4.3 Future流水線 139

6.4.4 編寫異步操作 141

練習 143

第7章 JavaScript引擎——Nashorn 146

7.1 從命令行運行Nashorn 148

7.2 從Java運行Nashorn 149

7.3 調用方法 150

7.4 構造對象 151

7.5 字元串 153

7.6 數字 153

7.7 使用數組 154

7.8 列表和映射 155

7.9 lambda表達式 156

7.10 繼承Java類及實現Java接口 157

7.11 異常 158

7.12 Shell腳本 159

7.12.1 執行Shell命令 159

7.12.2 字元串插值 160

7.12.3 腳本輸入 161

7.13 Nashorn和JavaFX 162

練習 164

第8章雜項改進 166

8.1 字元串 168

8.2 數字類 168

8.3 新的數學函式 169

8.4 集合 170

8.4.1 集合類中添加的方法 170

8.4.2 比較器 171

8.4.3 Collections類 173

8.5 使用檔案 173

8.5.1 讀取檔案行的流 173

8.5.2 遍歷目錄項的流 175

8.5.3 Base64編碼 176

8.6 註解 177

8.6.1 可重複的註解 177

8.6.2 可用於類型的註解 179

8.6.3 方法參數反射 181

8.7 其他一些細微的改進 182

8.7.1 Null檢查 182

8.7.2 延遲訊息 182

8.7.3 正則表達式 183

8.7.4 語言環境 183

8.7.5 JDBC 185

練習 185

第9章你可能錯過的Java 7特性 188

9.1 異常處理改進 190

9.1.1 try-with-resources語句 190

9.1.2 忽略異常 191

9.1.3 捕獲多個異常 192

9.1.4 更簡單地處理反射方法的異常 193

9.2 使用檔案 193

9.2.1 Path 194

9.2.2 讀取和寫入檔案 196

9.2.3 創建檔案和目錄 197

9.2.4 複製、移動和刪除檔案 198

9.3 實現equals、hashCode和compareTo方法 198

9.3.1 安全的Null值相等測試 198

9.3.2 計算哈希碼 199

9.3.3 比較數值類型對象 200

9.4 安全需要 201

9.5 其他改動 204

9.5.1 將字元串轉換為數字 204

9.5.2 全局Logger 204

9.5.3 Null檢查 205

9.5.4 ProcessBuilder 205

9.5.5 URLClassLoader 206

9.5.6 BitSet 206

練習 207

索引 209

作者簡介

Cay S. Horstmann不僅是Scala for the Impatient(Addison-Wesley於2012年出版)一書的作者,而且是Core Java™, Volumes I and II, Ninth Edition(Prentice Hall於2013年出版)一書的主要作者,他還編寫了一系列針對專業編程人員和計算機專業學生的書籍。他是聖荷西州立大學計算機科學專業的一名教授,也是一位Java擁護者。

前言

本書向Java開發人員言簡意賅地介紹了Java 8 的許多特性,以及Java 7 中許多沒有被關注的特性。

本書延續了《快學Scala》(Scala for the Impatient)“不廢話”的風格(我在那本書中第一次嘗試了這種寫作風格)。在那本書中,我希望快速帶讀者切入正題,避免煩瑣枯燥地羅列各種技術規範之間的優劣。我對知識點進行了分類整理,將它們組織為一個個模組,方便你快速獲取所需的內容。這種方式在Scala社區取得了巨大的成功,因此我再次在本書中使用了這種方式。

自從有了Java 8,Java語言和庫就仿佛獲得了新生。lambda表達式可以允許開發人員編寫簡潔的“計算片段”,並將它們傳遞給其他的代碼。接收代碼可以選擇在合適的時候來執行“計算片段”。這對於構建第三方庫有著深遠的影響。

尤其要指出一點,它徹底改變了集合的使用方式。我們不需要再指定計算結果的過程(從起始遍歷到結尾,如果某個元素滿足某個條件,就根據它計算一個值,然後將值添加到總和中),只需指定想要什麼樣的結果(給我所有滿足條件的元素的總和)。這樣,代碼就可以重新對計算排序——例如,來充分利用並行的優勢。或者,如果你只希望匹配前100個元素,那么你不必再維護一個計數器,程式可以自動停止計算。

Java 8中全新的Stream API實現了這一想法。第1章介紹了lambda表達式的全部語法,第2章給出了流的完整概述,第3章則給出了一些如何用lambda表達式設計庫的有效技巧。

有了Java 8之後,由於Swing現在已經處於“維護”階段,客戶端應用程式的開發人員需要轉到JavaFX API。第4章會向需要進行圖形化編程的開發人員介紹JavaFX——這在一圖勝過萬語千言時尤為有效。

在經過多年的等待之後,開發人員終於能夠用上設計良好的日期/時間庫了。第5章會詳細介紹java.time API。

Java的每個版本都會對並發API進行增強,Java 8也不例外。在第6章中,你將會了解原子計數器、並發哈希映射、並行數組操作及可完成的Future等方面的改進。

Java 8 內置了一個高質量的JavaScript引擎——Nashorn。在第7章中,你將會看到如何在Java虛擬機上執行JavaScript,以及如何與Java代碼進行互動操作。

第8章集中介紹了Java 8中其他一些不起眼但很實用的特性。同樣,第9章關注於Java 7中改進的異常處理、處理檔案和目錄的“新I/O”API,以及其他一些你可能會忽略的API。

我要一如既往地感謝我的編輯Greg Doench,他想出了這個點子,即為有經驗的開發人員編寫一本言簡意賅的書,幫助他們跟上Java 8的步伐。Dmitry Kirsanov和 Alina Kirsanova又一次以令人驚訝的速度和對細節的關注,將XHTML手稿轉化為了這本引人注目的書籍。由衷地感謝本書的審校人員,他們指出了許多低級的錯誤,並給出了精彩的改進建議。這些審校人員是:Gail Anderson、Paul Anderson、James Denvir、Trisha Gee、Brian Goetz (尤其感謝他細緻入微的審校)、Marty Hall、Angelika Langer、Mark Lawrence、Stuart Marks、Attila Szegedi和Jim Weave。

我希望你能喜歡這本簡明扼要介紹Java 8新特性的書,希望它能幫助你成為一個更成功的Java開發人員。在該頁面上,你還可以下載包含書中所有代碼示例在內的歸檔檔案。

Cay S. Horstmann

2013年於舊金山

相關詞條

相關搜尋

熱門詞條

聯絡我們