1. 簡介
毫無疑問,Java 8是Java自Java 5(發(fā)布于2004年)之后的最重要的版本雅任。這個(gè)版本包含語言、編譯器咨跌、庫沪么、工具和JVM等方面的十多個(gè)新特性。在本文中我們將學(xué)習(xí)這些新特性锌半,并用實(shí)際的例子說明在什么場景下適合使用禽车。
這個(gè)教程包含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項(xiàng)目引入了Optional類刊殉,Guava通過使用檢查空值的方式來防止代碼污染殉摔,它鼓勵(lì)程序員寫更干凈的代碼。Google Guava的成功记焊,使得Java 8類庫引入了Optional類逸月。java.util.Optional<T>
Optional實(shí)際上是個(gè)容器:它可以保存類型T的值,或者僅僅保存null遍膜。
如果Optional類的實(shí)例為非空值的話碗硬,isPresent()返回true,否從返回false捌归。為了防止Optional為空值肛响,orElseGet()方法通過回調(diào)函數(shù)來產(chǎn)生一個(gè)默認(rèn)值。map()函數(shù)對當(dāng)前Optional的值進(jìn)行轉(zhuǎn)化惜索,然后返回一個(gè)新的Optional實(shí)例特笋。orElse()方法和orElseGet()方法類似,但是orElse接受一個(gè)默認(rèn)值而不是一個(gè)回調(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選項(xiàng)-XX:PermSize與-XX:MaxPermSize分別被-XX:MetaSpaceSize與-XX:MaxMetaspaceSize所代替角塑。