JDK8新特性
1、Lambda表達式
2、函數式編程
3、接口可以添加默認方法和靜態方法,也就是定義不需要實現類實現的方法
4、方法引用
5、重復注解,同一個注解可以使用多次
6、引入Optional來避免空指針
7、引入Streams相關的API
8、引入新的Date/Time相關的API
9、新增jdeps命令行,來分析類、目錄、jar包的類依賴層級關系
10、JVM使用MetaSpace代替了永久代(PermGen Space)
JDK9新特性
1、接口方法可以使用private來修飾
2、設置G1為JVM默認垃圾收集器
3、支持http2.0的API
JDK10新特性
1、局部變量類型推斷,類似JS可以通過var來修飾局部變量,編譯之后會推斷出值的真實類型
2、並行Full GC,來優化G1的延遲
3、允許在不執行全局VM安全點的情況下執行線程回調,可以停止單個線程,而不需要停止所有線程或不停止線程
JDK11新特性
1、ZGC,ZGC可以看做是G1之上更細粒度的內存管理策略。由於內存的不斷分配回收會產生大量的內存碎片空間,因此需要整理策略防止內存空間碎片化,在整理期間需要將對於內存引用的線程邏輯暫停,這個過程被稱為"Stop the world"。只有當整理完成后,線程邏輯才可以繼續運行。(並行回收)
2、Flight Recorder(飛行記錄器),基於OS、JVM和JDK的事件產生的數據收集框架
JDK12新特性
1、Shenandoah GC
2、Switch 表達式表達式
3、G1收集器的優化