Java歷史版本新特性總結(JDK5~JDK13)
嗯,啊,額,只要是收集整理資源,當然很多不瞭解的東西和功能,我是很自然的就忽略掉了。改進畢竟很多,我只是列出了相對比較直觀的改進
版本演進
Java 5
- 引入
泛型
功能(僞泛型) - 增強循環,可以使用
迭代循環
,Iterator - 支持
自動裝箱
和自動拆箱
- 支持類型安全的
枚舉
- 支持
可變參數
- 支持
靜態引入
- 支持元數據(
註解
)功能 - 引入Java Instrumentation
Java 6
- 支持腳本語言
- 引入JDBC 4.0 API
- 引入Java Compiler API
- 支持可插拔註解
Java 7
- 支持了
switch語句
以String作爲條件,至此已支持4中基本類型(byte, char , short ,int
),2種對象類型(枚舉,String
) - 優化增強了泛型對象
類型推斷
- 支持了在一個語句塊中捕獲多種異常,既一個catch,可以
|
多個異常 - 支持
try-with-resources
語法,自動爲資源類進行關閉,而無需finally進行 - 引入Java NIO2開發包,支持了
AIO
- 支持了數值的二進制表示方式,比如
0b1010000
, 以前只能8,10,16進制的表示 鑽石型語法
,省略類型參數的聲明- 支持了
動態語言
Java 8
- 支持
lambda
表達式 - 支持集合的
Stream流
處理 - 支持
Functional
函數式接口 - 對各個類支持了很多對應的lambda增強方法
- 增強接口,支持了接口的默認和靜態的
具體方法
- 支持
LocalDate
等時間包,以改進原有Date - 支持
Optional
來改進Null值的處理 - 優化了
HashMap
和ConcurrentHashMap
Java 9
- 支持Java平臺級模塊系統,既
模塊化
- 支持了
JShell
,既類似node.js, python一樣的命令行工具,對待簡單的東西,可以直接命令測試 - 改進
Javadoc
, 使得Javadoc可以搜索 - 支持了
List.of()
,Set.of()
,Map.of()
的方式初始化不可變集合
,省略了大量代碼,語法糖 - 改進的Stream API,比如ofNullable(),dropWhile(),takeWhile()等
- 增強接口,支持了
私有接口具體方法
,補充了Java8默認和靜態方法的支持 - 把
G1垃圾收集器
作爲默認的垃圾收集器,並標註CMS爲過時收集器 - 引入了響應式流Reactive Streams API, 支持了
響應式編程
- 支持了
HTTP/2
客戶端
Java 10
- 支持了局部變量的類型推導,支持了局部變量的
var
聲明 - 優化改進了G1垃圾回收器,採用並行化mark-sweep-compact算法
Java 11
- 簡化了啓動單個源代碼文件的方法,使得小白命令式編譯運行Java文件變成更加簡單,
java Helloworld.java
即可 - 增加支持了一個叫
Epsilon
的低開銷垃圾收集器 - 增加支持了一個叫ZGC(
Z Garbage Collector
)的可伸縮低延遲垃圾收集器, 相比G1,停頓時間有了很大的改進,穩定在10ms以下 - 重寫了HttpClient,提供了新的標準化
HttpClient API
, 以後不再需要引入apache包的HttpClient或是okhttp就能支持高性能的網絡編程 - 增加了對
TLS 1.3
的支持 - 允許了
飛行記錄器
進行商用下的使用 - 更好的支持了動態語言,在JVM層面增加了
invokedynamic
指令 - 支持了在
lambda
內部使用var
聲明局部變量
Java 12
- 引入了一個叫
Shenandoah
低停頓的實驗性垃圾收集器 - 改進了
G1
垃圾收集器 - 引入了實驗性的預覽版
Switch
語句優化,可以省略break語句,合併多個case - 引入了
JVM的常量API
, 有助於一些分析的實現
Java 13
- 增強優化了
ZGC
垃圾收集器, 歸還未使用的堆內存給操作系統 - 將Java12引入的預覽版
Switch語法
提爲正式版,使得Switch的使用更加的順滑和流暢 - 支持了
"""
字符串塊功能