開篇做者就提出,Java8所作的改變在許多方面比java歷史上任何一次改變都深遠。並且好消息是,這些改變會讓你編輯程序來更容易,不再用寫相似相似於之前的swing中的事件處理函數的囉嗦代碼了。
關於多線程,做者也提到,從Java的演變路徑來看,他一直致力於讓併發編程更容易、出錯更少。好比在Java1.0裏面有線程和鎖的概念,這是當時的最佳實踐,但事實證實,不具有專門知識的項目團隊,很難可靠地使用這些基本模型。而後在Java 5.0
的時候就添加了工業級的構建模塊,好比線程池和併發集合。而後到Java7的時候又添加了,分支合併(Fork/Join)框架,使得並行變得更實用,但仍然很困難。因此,到Java8的時候,對並行有了一個更簡單的新思路,不過你仍要遵循一些規則。
第一節,java怎麼還在變?
Java在編程語言世界中曾經作的不錯,可是編程語言生態系統的氣候正在變化,程序員愈來愈多的須要處理所謂的大數據,並但願利用多核計算機和計算機集羣來有效的處理,這意味着要使用並行處理,Java之前對此並不支持。因此Java8對程序員的主要好處在於它提供了更多的編程工具和概念,能以更快,更重要的是能以更爲簡潔、更易於維護的方式解決新的或是現有的編程問題。
接下來做者介紹了在java8中新增的流處理的概念,這裏使用了載有Unix系統中的流式命令做爲例子。
第3小節做者介紹了
行爲參數化的概念。就是能夠把代碼或者函數做爲參數傳遞給另一個方法。
接下來做者提到了函數式編程範式的
兩個基石,
第一,沒有共享的可變數據,第二,將方法和函數傳遞給其餘方法的能力。
第二節,java中的函數
在基於JVM的Scala和Groovy等語言的實踐已經證實,讓方法的概念做爲一等值能夠擴充程序員的工具庫,從而讓編程變得更簡單。在這裏,做者給了一個簡單的例子來比較用Java8以前 和 以後的代碼實現一個隱藏文件篩選的例子來講明函數式編程的優點。
而後又給了一個,從一堆蘋果中篩選出,不一樣顏色或者不一樣重量的蘋果的例子來講明Lambda和Stream的好處。而後這裏就引出了流的
內部迭代(這是相對於傳統的外部迭代來講的)的概念。
在這裏,做者提到了集合與流的區別,集合主要是爲了存儲和訪問數據,而流主要是用於描述對數據的計算。
第四節,默認方法
開篇做者就提到Java8中加入默認方法主要是爲了支持庫設計師,讓他們可以寫出更容易改進的接口。做者用給List接口添加排序方法來講明這個默認方法帶來的好處。
固然,其實我以爲Java8的這種默認方法的概念,可能會把接口搞得不三不四的,由於在這樣的話接口就包含業務邏輯了,那實際上就至關於C++的抽象類。如何避免C++中臭名昭著的多重繼承的菱形繼承問題呢?聽說在第九章有談到,那咱們就拭目以待吧!