1. 程式人生 > >Java JDK 10:下一代 Java 有哪些新特性?

Java JDK 10:下一代 Java 有哪些新特性?

工欲善其事,必先利其器。作為老牌軍 Java 在發行二十多年的今天,戰勝了 C 和 C++,成為諸多開發者的寵兒,且如今從其更新速度來看,也是不甘落後。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

今年的 9 月 21 日,大家期待已久的 Java 9 正式釋出,現在開發者即將在幾個月後就可以使用下一代 Java —— Java 10。十二月中旬,計劃中的 Java 10 開發工具包升級節奏已經逐漸放緩。所以在目前階段,產品升級後只能修復 P1 到 P3 的錯誤(https://www.infoworld.com/article/3183502/java/oracle-sets-priorities-for-java-9-bug-fixes.html)。

JDK 10 何時釋出?

JDK 10 是 Java 10 標準版的部分實現,將於 2018 年 3 月 20 日釋出,改進的關鍵點包括一個本地型別推斷、一個垃圾回收的“乾淨”介面。

Oracle 已經為 Java 設定了六個月的發行計劃。之前本打算根據發行的年份和月份命名升級版和後續版,這樣的話第一個版本就會被稱為 Java 18.3, 但這個計劃後來被中止了。

如何下載 JDK 10?

使用者要先加入早期使用者計劃,然後才可以下載 JDK 10 測試版:http://jdk.java.net/10。

JDK 10 的新改進有哪些?

JDK 10 的主要功能包括:

  • 一個區域性變數型別推斷,通過增強語言特性將型別推斷擴充套件到區域性變數,目的是減少與編碼相關的“儀式”,同時保持對靜態型別的安全承諾。

  • 一個乾淨的垃圾收集器介面,用來改善垃圾收集器原始碼之間的隔離效果,這樣可以為HotSpot 虛擬機器中的內部垃圾收集程式碼提供更好的模組化功能,也可以更容易向 HotSpot 新增新的垃圾收集器。

  • 並行、完整的 G1 垃圾收集器,通過實現並行性來改善最壞情況下的延遲問題。

  • 啟用 HotSpot 將物件堆分配給使用者指定的備用記憶體裝置(如 NVDIMM 記憶體模組),這個特性也側面預示了未來的系統可能會採用異構的記憶體架構。

  • 在 Linux / x64 平臺上以實驗性方式啟用基於 Java 的即時編譯器(https://www.infoworld.com/article/3187868/application-development/oracles-java-on-java-experiment-picks-up-steam.html)。

  • 將 JDK 的多個儲存庫合併成一個,簡化開發。目前的程式碼庫被分解成了多個庫,容易出現原始碼的管理問題。

  • 應用程式資料共享,通過跨程序共享通用類的元資料,減少空間佔用及啟動時長。

  • 執行緒本地握手,不執行全域性 VM 安全點也能對執行緒執行回撥,同時實現單執行緒停止回撥。

  • JDK 提供了一組預設證書,開源 Java SE 的 CA程式,對開發人員更具吸引力。

JDK 10 的開發包括哪些階段?

目前,Oracle 的 Java SE 下載頁面(http://www.oracle.com/technetwork/java/javase/downloads/index.html)還沒有提供對 JDK 10 的訪問,因為在最終版本確認之前,JDK 10 還有一些其他的開發階段,包括:

  • 2018 年 1 月 11 日:在所有支援的平臺上,對所有計劃完成至少一次的測試。

  • 2018 年 1 月 18 日:減速階段,只修復“ showstopper ”的 Bug。

  • 2018 年 2 月 22 日:最終版本確認。

從 9 月 21 日期待已久的 JDK 9 版本釋出開始,Oracle 就一直在計劃 Java 的改進和升級,包括將於 2018 年 3 月到期的 Java 18.3 版本,這個版本將作為 Java 標準版的釋出計劃一部分。

Java 的長期路線圖

以下是 Oracle 公司正在考慮的下一代產品、以及更高版本的 Java SE:

  • Amber 專案(https://www.infoworld.com/article/3187868/application-development/oracles-java-on-java-experiment-picks-up-steam.html)是面向生產力的語言特徵孵化器,包括區域性變數型別推斷在內的各種較小的語言,目標是減少編寫 Java 程式碼的相關程式、通過增強列舉使型別變數的常量執行更為清晰、提高 Lambda 方法的可用性。

  • Panama 專案(https://www.infoworld.com/article/2607953/java/article.html),將 JVM 和原生代碼互連,具有來自 JVM 的本地函式呼叫和來自 JVM 的本地資料訪問等功能。

  • Valhalla 專案(https://www.infoworld.com/article/2608087/java/java-incubator-to-explore-technologies-for-java-10-and-beyond.html)是高階 Java 虛擬機器和語言特性孵化器。

  • Loom 專案(http://cr.openjdk.java.net/~rpressler/loom/Loom-Proposal.html),以降低編寫併發應用程式的複雜性為目標,專案要求新增可選的使用者模式執行緒實現、定界延續以及涉及呼叫堆疊操作的其他構造。通過提供一個由 Java 編寫的排程器,替代實現執行緒的管理,這樣子普通 Java 執行緒的 Java 程式設計模型就可以被保留下來,提高了效能,減少了佔用空間。

新的六月發行計劃推出後,也就意味著不同版本的功能更新會間隔六個月。但是目前除了已經宣佈的 JDK 10 之外,Oracle 還沒有承諾在 Java 中提供其他新的功能。

對於明年即將推出的 Java 10,在 JDK 10 早期試用版釋出後(https://www.oschina.net/news/90271/jdk-10),網路上觀點不一

@一刀:厲害了,悄無聲息的就釋出了 JDK10。

@WO不吹牛:9 還沒開始用,10 又悄悄的來了,這速度太 6 了。

@半個克林姆:不覺明歷, 對於我這種菜雞來說, 好像並沒有什麼影響!

@cky_Me:公司基本上用的還是1.6,1.7。

@東東-:快加上真泛型,刪掉那堆沒用的祖傳模組。