JDK10新特性-你瞭解多少

feri發表於2018-05-17
  1. 區域性變數型別推斷

區域性變數型別推斷是Java 10中最值得注意的特性,這是Java語言開發人員為了簡化Java應用程式的編寫而採取的又一步。

var sts=new ArrayList();
新的語法將減少與編寫Java相關的冗長度,同時保持對靜態型別安全性的承諾。
區域性變數型別推斷將引入”var”關鍵字,也就是你可以隨意定義變數而不必指定變數的型別
var num1=10;
var num2=true;
雖然型別推斷在Java中不是一個新概念,但在區域性變數中確是很大的一個改進。
說到型別推斷,從JDK 5引進泛型,到JDK 7的”<>”操作符允許不繫結型別而初始化List,再到JDK 8的Lambda表示式,再到現在JDK 10的區域性變數型別推斷,Java型別推斷正大刀闊斧的向前發展。

區域性變數型別推薦僅限於如下使用場景:
區域性變數初始化
for迴圈內部索引變數
傳統的for迴圈宣告變數
Java官方表示,它不能用於以下幾個地方:
方法引數
建構函式引數
方法返回型別
欄位
捕獲表示式(或任何其他型別的變數宣告)
2. GC改進和記憶體管理
JDK 10中有2個JEP專門用於改進當前的垃圾收集元素。
第一個垃圾收集器介面是(JEP 304),它將引入一個純淨的垃圾收集器介面,以幫助改進不同垃圾收集器的原始碼隔離。
預定用於Java 10的第二個JEP是針對G1的並行完全GC(JEP 307),其重點在於通過完全GC並行來改善G1最壞情況的等待時間。G1是Java 9中的預設GC,並且此JEP的目標是使G1平行。

  1. 執行緒本地握手(JEP 312)
    JDK 10將引入一種線上程上執行回撥的新方法,因此這將會很方便能停止單個執行緒而不是停止全部執行緒或者一個都不停。

  2. 備用記憶體裝置上的堆分配(JEP 316)
    允許HotSpot VM在備用記憶體裝置上分配Java物件堆記憶體,該記憶體裝置將由使用者指定。

  3. 其他Unicode語言 - 標記擴充套件(JEP 314)
    目標是增強java.util.Locale及其相關的API,以便實現語言標記語法的其他Unicode擴充套件(BCP 47)。

  4. 基於Java的實驗性JIT編譯器
    Oracle希望將其Java JIT編譯器Graal用作Linux / x64平臺上的實驗性JIT編譯器。

  5. 根證照(JEP 319)
    這個的目標是在Oracle的Java SE中開源根證照。

  6. 根證照頒發認證
    這將使OpenJDK對開發人員更具吸引力,它還旨在減少OpenJDK和Oracle JDK構建之間的差異。

  7. 將JDK生態整合單個儲存庫(JEP 296)
    此JEP的主要目標是執行一些記憶體管理,並將JDK生態的眾多儲存庫組合到一個儲存庫中。

  8. 刪除工具javah(JEP 313)
    從JDK中移除了javah工具,這個很簡單並且很重要。

相關文章