2014年4月29日

Book: "Java 8 Lambdas" By Richard Warburton, O'Reilly

Java SE 8 帶來全新的 Lambda 語法,也是這次新版最重要的新功能,Lambda 讓 Java 語言更容易開發平行運算應用程式碼,充分利用現代電腦多核心處理的威力。Lambda 語法可簡化過去採用匿名類別(Anonymous Class)的設計,更簡潔的語法能提高可讀性。

比學習新語法更重要的事情,就是先熟悉函數型程式設計(Functional Programming)的觀念。函數型介面(Functional Interface),例如常見的 Runnable 與 Comparator 等,在 Java 8 可以改用 Lambda 的語法,取代過去匿名類別的寫法,以 Runnable 介面為例:

new Thread(new Runnable() {
    public void run() {
        System.out.println("Run!");
    }
}).start();

可以用 Labmda 語法改寫:

new Thread(() -> {
    System.out.println("Run!");
}).start();

Comparator 類別改用 Lambda 語法改寫,更容易看出語法的簡潔。

Collections.sort(users, (User u1, User u2) -> u1.id.compareTo(u2.id));

如果只把 Java 8 的 Lambda 當作語法糖衣,那麼也許不需要大費周章學習它,但是作者 Richard Warburton 仍寫一本專書介紹 Lambda,目的是幫助有這些需求的學習者:
  1. 想撰寫更簡潔的程式碼,特別是針對集合(Collections)的處理。
  2. 用平行處理的做法提升效能。
  3. 建立更好的 DSL 領域描述語言。
  4. 學習 Lambda 語法的測試與除錯。
Lambda  本身只是一種新的語法,即使不用它同樣能完成 Java 程式功能。但是過去的經驗中,不難發現 Java 程式碼在平行世界變得複雜難懂,造成維護的不易,函數型程式設計的觀念也不容易妥善實踐。

程式語言帶給設計者不僅止語法,而是包含蘊含的觀念。支援 Lambda 語法的 Java 8,可以說是正式將函數型程式設計的觀念,一步步傳遞給程式設計師。

作為一本 Lambda 入門書, 這本 Java 8 Lambdas 擁有接近五顆星的高評價,透過清楚的程式範例與易懂的說明,可以幫助學習者省下不少時間花費。

Buy Java 8 Lambdas from O'Reilly

Update:

中文版「Java 8 Lambdas 技術手冊」在 2014/11/20 出版囉!強力推薦 : )

沒有留言:

張貼留言

lyhcode by lyhcode
歡迎轉載,請務必註明出處!