大家有沒有發現,現在越來越多的軟件安裝時最低要求都是 JAVA 11。比如 Flink。
Flink
SonarQube最新版甚至最低要求 Java 17。
SonarQube
那么真正放棄 Java 8 的原因是什么呢?
1. Java 新特性(如Java 11)
1.1局部變量類型推斷(Local Variable Type Inference)
引入了 var 關鍵字,使得在局部變量聲明時可以使用類型推斷。例如,var name = "John"; 將會被推斷為 String 類型。
1.2 針對字符串的新增方法
Java 11 引入了一些針對字符串處理的新方法,如 isBlank()、lines() 和 stripIndent() 等,用于更方便地操作字符串。
1.3 HTTP/2 客戶端 API
在 Java 11 中,提供了一個原生的 HTTP/2 客戶端 API,用于進行 HTTP 請求和響應的處理,以替代傳統的 HttpURLConnection。
1.4 響應式流(Reactive Streams)API
Java 9 引入的 Flow API 在 Java 11 進一步發展,并成為標準化的響應式流 API。它支持異步流式處理和背壓機制。
1.5 ZGC 改進
ZGC 是一種低暫停時間的垃圾回收器,在 Java 11 中進行了一些改進,進一步降低了垃圾回收的停頓時間,并提高了應用程序的吞吐量。
1.6 Epsilon 垃圾回收器
Epsilon 是一種無操作的垃圾回收器,用于測試和性能調優。它允許你在沒有任何垃圾回收的情況下運行 Java 應用程序,適用于一些特定的場景。
1.7 集合 API 改進
Java 11 對集合 API 進行了一些改進,包括新的方法和接口,如 List.of()、Set.of() 和 Map.of() 等用于創建不可變集合的靜態工廠方法。
1.8 新的垃圾回收器接口
Java 11 引入了一組垃圾回收器接口,允許開發者可以更方便地實現自定義的垃圾回收器和內存分配器。
2. 長期支持(LTS)版本
Java 8 和 11 都是長期支持版本,支持的時間 Java 11 更長(官網數據)。
3.生態系統支持
隨著時間的推移,越來越多的開源庫和框架開始逐步升級到 Java 11,并且停止或降低對 Java 8 的支持。選擇最低支持 Java 11 可以確保你能夠使用最新的第三方庫和框架,充分利用其功能和優化。
4.安全性和性能優化
Java 11 引入了一些安全性和性能方面的改進,包括 TLS 1.3 支持、改進的 HTTP 處理、本地內存訪問 API 等。使用較新的 Java 版本可以提供更好的安全性和性能。