Java13 閃亮來襲,你是否還停留在 Java8

  • 2019 年 10 月 6 日
  • 筆記

近期 Java 界好消息頻傳。先是 Java 13 發布,接著 Eclipse 也發布了新版本表示支援新版本的 Java 特性。

本文介紹了 Java 13 的新特性並展示了相關的示例。

2019 年 9 月 17 日,Java 13 正式發布。特性如下。

Java 13 新特性


此版本帶來了以下幾大新特性:

  • JEP 350,Dynamic CDS Archives:擴展應用程式類 - 數據共享,以允許在 Java 應用程式執行結束時動態歸檔類。歸檔類將包括默認的基礎層 CDS(class data-sharing)存檔中不存在的所有已載入的應用程式類和庫類。
  • JEP 351,ZGC: Uncommit Unused Memory:增強 ZGC 以將未使用的堆記憶體返回給作業系統。
  • JEP 353,Reimplement the Legacy Socket API:使用易於維護和調試的更簡單、更現代的實現替換 java.net.Socket 和 java.net.ServerSocket API 使用的底層實現。
  • JEP 354,Switch Expressions (Preview):可在生產環境中使用的 switch 表達式,JDK 13 中將帶來一個 beta 版本實現。switch 表達式擴展了 switch 語句,使其不僅可以作為語句(statement),還可以作為表達式(expression),並且兩種寫法都可以使用傳統的 switch 語法,或者使用簡化的 「case L ->」 模式匹配語法作用於不同範圍並控制執行流。這些更改將簡化日常編碼工作,並為 switch 中的模式匹配(JEP 305)做好準備。
  • JEP 355,Text Blocks (Preview):將文本塊添加到 Java 語言。文本塊是一個多行字元串文字,它避免了對大多數轉義序列的需要,以可預測的方式自動格式化字元串,並在需要時讓開發人員控制格式。

安裝 JDK 13


JDK 13 下載地址為 。

以 Windows 環境為例,可通過 jdk-13_windows-x64_bin.exe 或 jdk-13_windows-x64_bin.zip 來進行安裝。 .exe 文件的安裝方式較為簡單,按照介面提示點擊 「下一步」 即可。

下面演示. zip 安裝方式。

1. 解壓. zip 文件到指定位置

將 jdk-13_windows-x64_bin.zip 文件解壓到指定的目錄下即可。比如,本例子放置在了D:Program Filesjdk-13位置。

2. 設置環境變數

創建系統變數 「JAVA_HOME」,其值指向了 JDK 的安裝目錄。

在用戶變數 「Path」 中,增加「%JAVA_HOME%bin」。

註:JDK13 已經無需再安裝 JRE,設置環境變數時也不用設置 CLASSPATH 了。

3. 驗證安裝

執行 「java -version」 命令進行安裝的驗證:

$ java -version  java version "13" 2019-09-17  Java(TM) SE Runtime Environment (build 13+33)  Java HotSpot(TM) 64-Bit Server VM (build 13+33, mixed mode, sharing)

如果顯示上述資訊,則說明 JDK 已經安裝完成。

如果顯示的內容還是安裝前的老 JDK 版本,則可按照如下步驟解決。

首先,卸載老版本的 JDK

其次,在命令行輸入如下指令來設置 JAVA_HOM 和 Path:

>SET JAVA_HOME=D:Program Filesjdk-13    >SET Path=%JAVA_HOME%bin

Eclipse IDE 2019-09


在 Java 13 發布兩天後的 2019 年 9 月 19 日,Eclipse IDE 2019-09 發布。Eclipse IDE 2019-09 聲稱支援 Java 13。接下里將演示如何使用 Eclipse IDE 2019-09 編寫 Java 13 的示例。

Eclipse IDE 2019-09 下載地址為 https://www.eclipse.org/downloads/packages/。本例使用的是 Eclipse 4.14 版本。

正是金九銀十跳槽季,為大家收集了2019年最新的面試資料,有文檔、有攻略、有影片。有需要的同學可以在公眾號【Java知己】,發送【面試】領取最新面試資料攻略!暗號【1024】千萬不要發,否則.....

編寫 Java 13 示例


實戰 1:Switch 表達式的例子

下面是原有的 Switch 表達式的寫法:

switch (day) {      case MONDAY:      case FRIDAY:      case SUNDAY:          System.out.println(6);          break;      case TUESDAY:          System.out.println(7);          break;      case THURSDAY:      case SATURDAY:          System.out.println(8);          break;      case WEDNESDAY:          System.out.println(9);          break;  }

在 Java 12 中,Switch 表達式可以改為如下寫法:

switch (day) {      case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);      case TUESDAY                -> System.out.println(7);      case THURSDAY, SATURDAY     -> System.out.println(8);      case WEDNESDAY              -> System.out.println(9);  }

還能支援在表達式中返回值:

int numLetters = switch (day) {      case MONDAY, FRIDAY, SUNDAY -> 6;      case TUESDAY                -> 7;      case THURSDAY, SATURDAY     -> 8;      case WEDNESDAY              -> 9;  };

在 Java 13 中,Switch 表達式可以改為如下寫法:

int date = switch (day) {  	case MONDAY, FRIDAY, SUNDAY : yield 6;  	case TUESDAY                : yield 7;  	case THURSDAY, SATURDAY     : yield 8;  	case WEDNESDAY              : yield 9;  	default 					: yield 1; // default條件是必須的  };    System.out.println(date);

需要注意的是,在使用 yield 時,必須要有 default 條件。

實戰 2:文本塊

自 Java 13 開始,支援文本塊(Text Blocks)。

以下是 Java 13 之前的文本塊的處理方式的示例:

String html = "<html>n" +  	              "    <body>n" +  	              "        <p>Hello, world</p>n" +  	              "    </body>n" +  	              "</html>n";    System.out.println(html);

在上述示例中,由於文本塊需要換行,所以產生了很多本文的拼接和轉義。

以下是 Java 13 中的文本塊示例:

String html2 = """  	              <html>  	                  <body>  	                      <p>Hello, world</p>  	                  </body>  	              </html>  	              """;    System.out.println(html2);

在上述示例中,對於文本塊的處理變得簡潔、自然。

以上兩個示例在控制台輸出內容都是一樣的,效果如下:

<html>      <body>          <p>Hello, world</p>      </body>  </html>

你的贊和關注是我繼續創作的動力~

Tags: