Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤和異常

Java 多執行緒

Java 同步

Java 網路程式設計

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 其他

Java API 和框架

Java 類引用

Java 有用資源

Java 10 新特性(API 和選項)


Java 10 是 Java 版本釋出節奏中的一個主要版本,它於 2018 年 3 月 10 日釋出。透過 Java 10,Oracle 已將 Java 版本釋出節奏更改為一個新模型,即 6 個月釋出節奏和 Oracle Java SE 產品的長週期支援 (LTS) 模型。LTS 模型代表長期支援模型。

從 Java 10 開始,Oracle 每 6 個月釋出一個新版本的 Java,每個版本包含一到兩個主要特性。Oracle 使用釋出列車概念。每個釋出列車計劃為 6 個月。在此時間線內開發的特性將包含在釋出版本中,否則這些特性將移至下一個釋出列車。

Oracle JDK 與 OpenJDK

大多數 Oracle JDK 二進位制檔案是專有的,並由 Oracle 授權,並且對重新分發有多個限制。而 OpenJDK 更受開發者社群歡迎。從 Java 10 開始,Oracle 已決定將 OpenJDK 作為主要 JDK 來促進基於社群的 Java 開發。Oracle 將繼續製作其自身的 JDK,但它將在 3 年後釋出它們,並將它們稱為 LTS 版本。因此,OpenJDK 二進位制檔案將每六個月釋出一次。

OpenJDK 相容雲和容器,因為它可以作為容器的一部分自由分發。因此,Oracle 推廣 OpenJDK 的舉動使 Java 更易於在雲或容器中進行開發和部署。

Java 9 和 Java 10 是非 LTS 版本。Java 11 版本是 LTS 版本。

Java 10 新特性

以下是 Java 10 中引入的主要新特性。

Java 10 增強了 70 多個 API,增加了新的方法和選項,並刪除了已棄用的 API 和選項。我們將在接下來的章節中看到這些更改。

Java 10 - 新的 API 和選項

JDK 10 版本為 Java 庫添加了 70 多個新的 API 和選項。以下是引入的一些重要增強功能。

Optional.orElseThrow() 方法

java.util.Optional 類中提供了一個新的方法 **orElseThrow()**,現在它是 **get()** 方法的首選替代方法。

建立不可修改集合的 API

List、Set 和 Map 介面中提供了一個新的方法 **copyOf()**,它可以從現有集合建立新的集合例項。Collector 類具有新的方法 **toUnmodifiableList()、toUnmodifiableSet() 和 toUnmodifiableMap()**,用於將流的元素放入不可修改的集合中。

停用 JRE 最近使用跟蹤

引入了新的標誌 jdk.disableLastUsageTracking,該標誌可停用正在執行的 VM 的 JRE 最近使用跟蹤。

雜湊密碼

JMX 代理現在使用其 SHA3-512 雜湊值覆蓋 jmxremote.password 檔案中可用的純文字密碼。

javadoc 對多個樣式表的支援

javadoc 命令提供了一個新的選項 --add-stylesheet。此選項支援在生成的文件中使用多個樣式表。

javadoc 對重寫方法的支援

javadoc 命令提供了一個新的選項 --overridden-methods=value。許多類重寫繼承的方法,但不更改規範。--overridden-methods=value 選項允許將這些方法與其他繼承的方法分組,而不是再次單獨記錄它們。

javadoc 對摘要的支援

提供了一個新的內聯標籤 {@summary ...},用於指定用作 API 說明摘要的文字。預設情況下,API 說明的摘要是從第一句推斷出來的。

示例

以下程式展示了在 JAVA 10 中使用一些新的 API。

import java.util.List;
import java.util.stream.Collectors;

public class Tester {
   public static void main(String[] args) {
      var ids = List.of(1, 2, 3, 4, 5); 
      try {
         // get an unmodifiable list
         List<Integer> copyOfIds = List.copyOf(ids);
         copyOfIds.add(6);	
      } catch(UnsupportedOperationException e){
         System.out.println("Collection is not modifiable.");
      }
      try{
         // get an unmodifiable list
         List<Integer> evenNumbers = ids.stream()
            .filter(i -> i % 2 == 0)
            .collect(Collectors.toUnmodifiableList());;
         evenNumbers.add(6);	
      }catch(UnsupportedOperationException e){
         System.out.println("Collection is not modifiable.");
      }
   }
}

輸出

它將列印以下輸出。

Collection is not modifiable.
Collection is not modifiable.

有用連結

廣告