1. 簡介
毫無疑問,Java 8是Java自Java 5(發(fā)布于2004年)之后的最重要的版本。這個版本包含語言、編譯器、庫、工具和JVM等方面的十多個新特性。在本文中我們將學(xué)習(xí)這些新特性,并用實際的例子說明在什么場景下適合使用。
這個教程包含Java開發(fā)者經(jīng)常面對的幾類問題:
語言
編譯器
庫
工具
JVM
2.Java語言的新特性
2.1 Lambda表達(dá)式與Functional接口
2.2 接口的默認(rèn)方法與靜態(tài)方法
2.3 方法引用
2.4 重復(fù)注解
2.5 更好的類型推測機(jī)制
2.6 擴(kuò)展注解的支持
3. Java編譯器的新特性
3.1 參數(shù)名字
4. Java 類庫的新特性
4.1 Optional
為了解決空指針異常,Google的Guava項目引入了Optional類,Guava通過使用檢查空值的方式來防止代碼污染,它鼓勵程序員寫更干凈的代碼。Google Guava的成功,使得Java 8類庫引入了Optional類。java.util.Optional<T>
Optional實際上是個容器:它可以保存類型T的值,或者僅僅保存null。
如果Optional類的實例為非空值的話,isPresent()返回true,否從返回false。為了防止Optional為空值,orElseGet()方法通過回調(diào)函數(shù)來產(chǎn)生一個默認(rèn)值。map()函數(shù)對當(dāng)前Optional的值進(jìn)行轉(zhuǎn)化,然后返回一個新的Optional實例。orElse()方法和orElseGet()方法類似,但是orElse接受一個默認(rèn)值而不是一個回調(diào)函數(shù)。
4.2 Stream
4.3 Date/Time API (JSR 310)
4.4 JavaScript引擎Nashorn
4.5 Base64
4.6 并行(parallel)數(shù)組
4.7 并發(fā)(Concurrency)
5. 新的Java工具
5.1 Nashorn引擎: jjs
5.2 類依賴分析器jdeps
6. Java虛擬機(jī)(JVM)的新特性
PermGen空間被移除了,取而代之的是Metaspace(JEP 122)。JVM選項-XX:PermSize與-XX:MaxPermSize分別被-XX:MetaSpaceSize與-XX:MaxMetaspaceSize所代替。