Java 8函數式編程 [Java 8 Lambdas:Functional Programming for the Masses] pdf epub mobi txt 電子書 下載 2024
編輯推薦
對於有經驗的Java程序員來說,全麵瞭解Java 8引入的Lambda錶達式是當務之急。本書作者是資深Java開發者、英國倫敦Java社區負責人,英文原版深受好評,被譽為學習Lambda錶達式的必讀佳作。這本書言簡意賅,示例精到,全麵介紹瞭因為Lambda錶達式的引入,Java這門世界上流行的語言都發生瞭哪些重大變化,以及匿名函數將如何重塑Java的編程範式。全書篇幅不長,環環相扣,讀來令人手不釋捲。
函數式編程的確能大幅提升編程效率,但它也並不高深,絕非少數人的遊戲。本書可以讓所有Java程序員平滑過渡到Java 8時代。前半部分展示瞭如何正確使用Lambda錶達式;後麵幾章介紹如何利用Lambda錶達式提高並發操作的性能、編寫齣更簡單的並發代碼。全書采用瞭示例驅動的寫作風格:每介紹完一個概念,緊接著給齣一段示例代碼,並輔以詳盡的講解。多數章節還在最後提供瞭練習題,供讀者自行練習。
內容簡介
通過每一章的練習快速掌握Java8中的Lambda錶達式分析流、高級集閤和其他Java8類庫的改進利用多核CPU提高數據並發的性能將現有代碼庫和庫代碼Lambda化學習Lambda錶達式單元測試和調試的實踐解決方案用Lambda錶達式實現麵嚮對象編程的SOLID原則編寫能有效執行消息傳送和非阻塞I/O的並發應用。
作者簡介
Richard Warburton,一位經驗豐富的技術專傢,善於解決復雜深奧的技術問題,擁有華威大學計算機科學專業博士學位。近期他一直從事高性能計算方麵的數據分析工作。他是英國倫敦Java社區的領導者,組織過麵嚮Java 8中Lambda錶達式、日期和時間的Adopt-a-JSR項目,以及Openjdk Hackdays活動。Richard還是知名的會議演講嘉賓,曾在JavaOne、DevoxxUK和JAX London等會議上演講。
內頁插圖
精彩書評
★“本書齣色的地方在於,它脈絡清晰地說明瞭為什麼、在何處以及如何使用Lambda錶達式,激勵讀者改善自己的代碼庫。”
——Martijn Verburg,jClarity公司CEO,Java Champion ★“我超級推薦本書,每個想瞭解JDK 8新特性的開發人員都應該人手一本。”
——Daniel Bryant,Instant Access技術公司CTO
目錄
前言
第1章 簡介
1.1 為什麼需要再次修改Java
1.2 什麼是函數式編程
1.3 示例
第2章 Lambda 錶達式
2.1 第一個Lambda 錶達式
2.2 如何辨彆Lambda 錶達式
2.3 引用值,而不是變量
2.4 函數接口
2.5 類型推斷
2.6 要點迴顧
2.7 練習
第3章 流
3.1 從外部迭代到內部迭代
3.2 實現機製
3.3 常用的流操作
3.3.1 collect(toList())
3.3.2 map
3.3.3 filter
3.3.4 flatMap
3.3.5 max 和min
3.3.6 通用模式
3.3.7 reduce
3.3.8 整閤操作
3.4 重構遺留代碼
3.5 多次調用流操作
3.6 高階函數
3.7 正確使用Lambda 錶達式
3.8 要點迴顧
3.9 練習
3.10 進階練習
第4章 類庫
4.1 在代碼中使用Lambda 錶達式
4.2 基本類型
4.3 重載解析
4.4 @FunctionalInterface
4.5 二進製接口的兼容性
4.6 默認方法
4.7 多重繼承
4.8 權衡
4.9 接口的靜態方法
4.10 Optional
4.11 要點迴顧
4.12 練習
4.13 開放練習
第5章 高級集閤類和收集器
5.1 方法引用
5.2 元素順序
5.3 使用收集器
5.3.1 轉換成其他集閤
5.3.2 轉換成值
5.3.3 數據分塊
5.3.4 數據分組
5.3.5 字符串
5.3.6 組閤收集器
5.3.7 重構和定製收集器
5.3.8 對收集器的歸一化處理
5.4 一些細節
5.5 要點迴顧
5.6 練習
第6章 數據並行化
6.1 並行和並發
6.2 為什麼並行化如此重要
6.3 並行化流操作
6.4 模擬係統
6.5 限製
6.6 性能
6.7 並行化數組操作
6.8 要點迴顧
6.9 練習
第7章 測試、調試和重構
7.1 重構候選項
7.1.1 進進齣齣、搖搖晃晃
7.1.2 孤獨的覆蓋
7.1.3 同樣的東西寫兩遍
7.2 Lambda 錶達式的單元測試
7.3 在測試替身時使用Lambda 錶達式
7.4 惰性求值和調試
7.5 日誌和打印消息
7.6 解決方案:peak
7.7 在流中間設置斷點
7.8 要點迴顧
第8章 設計和架構的原則
8.1 Lambda 錶達式改變瞭設計模式
8.1.1 命令者模式
8.1.2 策略模式
8.1.3 觀察者模式
8.1.4 模闆方法模式
8.2 使用Lambda 錶達式的領域專用語言
8.2.1 使用Java 編寫DSL
8.2.2 實現
8.2.3 評估
8.3 使用Lambda 錶達式的SOLID 原則
8.3.1 單一功能原則
8.3.2 開閉原則
8.3.3 依賴反轉原則
8.4 進階閱讀
8.5 要點迴顧
第9章 使用Lambda 錶達式編寫並發程序
9.1 為什麼要使用非阻塞式I/O
9.2 迴調
9.3 消息傳遞架構
9.4 末日金字塔
9.5 Future
9.6 CompletableFuture
9.7 響應式編程
9.8 何時何地使用新技術
9.9 要點迴顧
9.10 練習
第10章 下一步該怎麼辦
封麵介紹
精彩書摘
在開始探索Lambda錶達式之前,首先我們要知道它因何而生。本章將介紹Lambda錶達式産生的原因,以及本書的寫作動機和組織結構。
1.1 為什麼需要再次修改Java
1996年1月,Java 1.0發布,此後計算機編程領域發生瞭翻天覆地的變化。商業發展需要更復雜的應用,大多數程序都跑在功能強大的多核CPU的機器上。帶有高效運行時編譯器的Java虛擬機(JVM)的齣現,使程序員將更多精力放在編寫乾淨、易於維護的代碼上,而不是思考如何將每一個CPU時鍾周期、每字節內存物盡其用。
多核CPU的興起成為瞭不容迴避的事實。涉及鎖的編程算法不但容易齣錯,而且耗費時間。人們開發瞭java.util.concurrent包和很多第三方類庫,試圖將並發抽象化,幫助程序員寫齣在多核CPU上運行良好的程序。很可惜,到目前為止,我們的成果還遠遠不夠。
開發類庫的程序員使用Java時,發現抽象級彆還不夠。處理大型數據集閤就是個很好的例子,麵對大型數據集閤,Java還欠缺高效的並行操作。開發者能夠使用Java 8編寫復雜的集閤處理算法,隻需要簡單修改一個方法,就能讓代碼在多核CPU上高效運行。為瞭編寫這類處理批量數據的並行類庫,需要在語言層麵上修改現有的Java:增加Lambda錶達式。
當然,這樣做是有代價的,程序員必須學習如何編寫和閱讀使用Lambda錶達式的代碼,但是,這不是一樁賠本的買賣。與手寫一大段復雜、綫程安全的代碼相比,學習一點新語法和一些新習慣容易很多。開發企業級應用時,好的類庫和框架極大地降低瞭開發時間和成本,也為開發易用且高效的類庫掃清瞭障礙。
對於習慣瞭麵嚮對象編程的開發者來說,抽象的概念並不陌生。麵嚮對象編程是對數據進行抽象,而函數式編程是對行為進行抽象。現實世界中,數據和行為並存,程序也是如此,因此這兩種編程方式我們都得學。
這種新的抽象方式還有其他好處。不是所有人都在編寫性能優先的代碼,對於這些人來說,函數式編程帶來的好處尤為明顯。程序員能編寫齣更容易閱讀的代碼——這種代碼更多地錶達瞭業務邏輯的意圖,而不是它的實現機製。易讀的代碼也易於維護、更可靠、更不容易齣錯。
在寫迴調函數和事件處理程序時,程序員不必再糾纏於匿名內部類的冗繁和可讀性,函數式編程讓事件處理係統變得更加簡單。能將函數方便地傳遞也讓編寫惰性代碼變得容易,惰性代碼在真正需要時纔初始化變量的值。
Java 8還讓集閤類可以擁有一些額外的方法:default方法。程序員在維護自己的類庫時,可以使用這些方法。
總而言之,Java已經不是祖輩們當年使用的Java瞭,嗯, 這不是件壞事。
1.2 什麼是函數式編程
每個人對函數式編程的理解不盡相同。但其核心是:在思考問題時,使用不可變值和函數,函數對一個值進行處理,映射成另一個值。
不同的語言社區往往對各自語言中的特性孤芳自賞。現在談Java程序員如何定義函數式編程還為時尚早,但是,這根本不重要!我們關心的是如何寫齣好代碼,而不是符閤函數式編程風格的代碼。
本書將重點放在函數式編程的實用性上,包括可以被大多數程序員理解和使用的技術,幫助他們寫齣易讀、易維護的代碼。
……
前言/序言
Java 8函數式編程 [Java 8 Lambdas:Functional Programming for the Masses] 下載 mobi epub pdf txt 電子書
Java 8函數式編程 [Java 8 Lambdas:Functional Programming for the Masses] pdf epub mobi txt 電子書 下載