如約而至,Java 10 正式發布!


3 月 20 日,Oracle 宣布 Java 10 正式發布。

官方已提供下載:http://www.oracle.com/technetwork/java/javase/downloads/index.html

在 Java 9 之后,Java 采用了基於時間發布的策略,每 6 個月一個版本。這是采用新的發布策略之后的第一個版本。

Java 10 主要有 12 個新特性。

具體來看看。

JEP 286: Local-Variable Type Inference

局部變量的類型推導。

很多人都會吐槽 Java 代碼寫起來太過繁瑣,特別是涉及泛型的時候。就像 C++,也基於 auto 關鍵字引入了類型推導功能。
Java 也計划引入類似特性,語法是這樣的:


var list = new ArrayList<String>();  // infers ArrayList<String>

var stream = list.stream();          // infers Stream<String>

該特性只能用於三種場景:

帶有初始化信息的局部變量

增強 for 循環中的索引

傳統 for 循環中的局部變量

看個復雜點的例子:

對該特性感興趣的讀者可以參考:https://developer.oracle.com/java/jdk-10-local-variable-type-inference

JEP 296: Consolidate the JDK Forest into a Single Repository

將 JDK 的多個代碼倉庫合並到一個代碼倉庫中。
看過 JDK 代碼的應該知道,JDK 的不同功能分布在不同代碼倉庫中。以 JDK 9 為例,代碼倉庫有 8 個: root, corba, hotspot,jaxp, jaxws, jdk, langtools 和 nashorn。其中 hotspot 是虛擬機實現代碼,jdk 是 Java 類庫和相關工具,langtools 是 javac 等工具,nashorn 是 JavaScript 引擎。

JEP 304: Garbage Collector Interface

垃圾收集器接口。

在 hotspot/gc 代碼實現方面,引入一個干凈的垃圾收集器接口,改進不同垃圾收集器源代碼的隔離性。這樣添加新的或者刪除舊的 GC,都會更容易。

JEP 307: Parallel Full GC for G1

為 G1 垃圾收集器引入並行 Full GC。

JEP 310: Application Class-Data Sharing

Java 之前就引入了類數據共享機制,Class data sharing (CDS) ,以減少 Java 程序的啟動時間,降低內存占用。簡單來說,Java 安裝程序會把 rt.jar 中的核心類提前轉化成內部表示,轉儲到一個共享的文件中(shared archive)。多個 Java 進程(或者說 JVM 實例)可以共享這部分數據。
現在,希望更近一步,支持應用類的數據共享。

JEP 312: Thread-Local Handshakes

修改安全點機制,使得部分回調操作只需要停掉單個線程,而不像以前那樣,只能選擇或者停掉所有線程,或者都不停止。

JEP 313: Remove the Native-Header Generation Tool (javah)

去掉 javah 工具。

從 JDK 8 開始,javah 的功能已經集成到了 javac 中。所以,javah 可以刪掉了。

JEP 314: Additional Unicode Language-Tag Extensions

額外的 Unicode 語言標簽擴展。

增強 java.util.Locale 和相關 API,實現 BCP 47 語言標簽中額外的 Unicode 擴展。

JEP 316: Heap Allocation on Alternative Memory Devices

在可選內存設備上分配堆內存。
支持將 Java 對象堆分配到 NV-DIMM 等內存設備上。隨着 NV-DIMM 越來越便宜,未來的系統可能會搭載異構內存架構。

JEP 317: Experimental Java-Based JIT Compiler

實驗性的基於 Java 的 JIT 編譯器。
支持基於 Java 的 JIT 編譯器。相關工作主要基於 Graal。Graal 也是 Java 9 中引入的 AOT 編譯器的基礎。

JEP 319: Root Certificates

根證書。
在 JDK 中提供一組默認的根證書。

JEP 322: Time-Based Release Versioning

基於時間的版本字符串。修改 Java SE 平台和 JDK 版本字符串機制。考慮和之前版本號的兼容等問題,新的版本命名機制是: $FEATURE.$INTERIM.$UPDATE.$PATCH

$FEATURE,每次版本發布加 1,不考慮具體的版本內容。(之前的主版本號部分)2018 年 3 月的版本是 JDK 10,9 月的版本是 JDK 11,依此類推。

$INTERIM,中間版本號,在大版本中間發布的,包含問題修復和增強的版本,不會引入非兼容性修改。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM