书评:精通Lambda:多核世界中的Java编程
從版本8開始,λ編程(lambda編程)終于在Java世界中引入。此功能將在很大程度上改變Java開發人員的編程方式以及針對樣板代碼的新“武器”。 Java 8通過引入新的Stream API,大部分已將函數式編程應用在Collections API中。 此外,此新功能有望使我們輕松進入多核世界,而無需擔心線程,派生聯接等問題。
將lambda功能集成到傳統的面向對象的編程語言中一直是一個挑戰,但是Oracle似乎在提供半功能性面向對象的語言方面做得很好,有點夸大了。
關于Java 8的許多書籍已經出版,使Java開發人員的生活更加輕松。 但是,只有少數幾本書僅涉及Java 8中的λ編程。Maurice的書就是其中之一。
Maurice Naftalin是另一本著名的著作《 Java Generics and Collections 》的作者,并維護lambda FAQ ,他從中獲得了有關新λ-API( JSR-335 )的大量經驗。 長期經驗的結果就是這本有關Java 8 lambda的新書。
盡管其他有關該主題的書籍都在描述新API時提供了簡單的示例,但Maurice的書采用了一種更為實用的方式,描述了“使用Lambda表達式和流的最佳實踐”。
這本書解決了棘手的主題,并且沒有像其他書籍一樣提供簡單的示例來演示API的用法。 作者試圖利用他解決復雜問題的經驗,以實用的方式向讀者介紹新的思維方式。
更詳細地:
在第一章中, Maurice為這些Java 8新功能的推理奠定了基礎,并將在他的其余書中進行分析:
- 從內部到外部迭代
- 從收藏到流
- 從順序到并行
他詳細介紹了設計解決方案背后的原因以及上述主題的選定語法,從而使讀者確信這些更改是多么自然地引入到語言中的。
第2章專門介紹lambda表達式。 它將lambda與匿名內部類進行比較,他討論了變量捕獲(也稱為閉包),然后轉到函數接口。 子章節應盡可能簡潔。 他解釋了靜態 , 綁定和非綁定實例方法引用之間的區別(您知道區別嗎?)并以(函數)類型檢查和重載解析規則(包括lambda表達式和方法引用)告終。
那么,為什么在綁定str::replace未綁定String::concat ? 根據莫里斯(Maurice)的說法,綁定方法引用是所謂的,因為方法引用是隨接收器一起固定的。 所以str::replace等效于(x,y) -> str.replace(x,y) 。 您對接收器是什么沒有任何選擇。 它綁定到其receiver (str) 。
在調用接收器之前,尚未決定未綁定的方法引用。 所以String::concat等效于(receiver,str) -> receiver.concat(str) 。 它期望獲得一個接收器作為其第一個參數。
第3章通過將流與管道進行比較來介紹流。 他介紹了如何啟動流(管道),如何對其進行轉換(例如,過濾,映射,排序,截斷等)以及如何結束它(例如,減少,收集,搜索等)。 他涉及并行和調試。 他提供了有用且務實的例子。
第4章討論如何結束流,即減少和收集。 他還很費勁地解釋了如何編寫自己的收藏家。 一切都通過圖表說明了它們的工作方式以及示例。
第5章討論如何創建流,即源和分離器。 在這里,他介紹了遞歸grep命令的工作示例,并描述了實現該命令必須解決的錯誤。 莫里斯(Maurice)在他的整本書中都沒有提供解決方案。 通常,在他的推理中,您會發現類似以下的語句:“暫時停止閱讀并考慮此數據結構的設計”或“如果尚未解決,請立即停止編寫或概述代碼” 。
第6章介紹流性能。 他使用jmh對順序和并行流,排序,不同,分離器,收集器等進行微基準測試。并行流并不總是比順序流快,但它們必須滿足某些條件才能比順序流更好地執行。
最后, 第7章討論了接口中的靜態方法和默認方法,以及默認方法如何使API不斷發展并保持向后兼容性。 他討論了在哪里使用默認方法,并將具有默認方法的接口與抽象類進行了比較。
他介紹了繼承,提供了??兩個易于記憶的規則:
a)“實例方法的選擇優先于默認方法”
b)“如果一個類繼承了多個競爭默認方法,那么將選擇不可覆蓋的默認方法。”
本章涵蓋了我所見過的關于默認和靜態方法的主題的最完整的介紹。
您應該購買這本書的五個原因:
- 小而簡潔; 就個人而言,完成一本175頁的書(而且我做到了)的機會要多于一本500或1000頁的書。
- 作者試圖使您成為功能性程序員的思考。 他沒有為您提供解決方案。
- 它結構合理,易于找到所需內容
- 這是一本書,您會一次又一次地回到
- 它解決了性能問題,并提供了有關性能缺陷和反模式的有用建議。
他們說:“昂貴的香水裝在小瓶中。” 總而言之,這是一本非常有用的小書,當您使用Java 8中的新lambda和流API進行編程時,將一遍又一遍地回顧一本。Maurice的新書應該成為每一個Java的底蘊。想了解Java 8中的λ和流的開發人員。
圖書鏈接: 精通Lambda:多核世界中的Java編程
翻譯自: https://www.javacodegeeks.com/2014/12/book-review-mastering-lambdas-java-programming-in-a-multicore-world.html
總結
以上是生活随笔為你收集整理的书评:精通Lambda:多核世界中的Java编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想家悦bios(联想家悦bios下载地
- 下一篇: 水星150m无线宽带路由器如何设置150