近期 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 Files\jdk-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 Files\jdk-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 版本。
編寫 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>
“不積跬步,無以至千里”,希望未來的你能:有夢為馬 隨處可棲!加油,少年!
關注公眾號:「Java 知己」,每天更新Java知識哦,期待你的到來!
- 發送「Group」,與 10 萬程序員一起進步。
- 發送「面試」,領取BATJ面試資料、面試視頻攻略。
- 發送「玩轉算法」,領取《玩轉算法》系列視頻教程。
- 千萬不要發送「1024」...