收藏版:《JDK13新特性詳解》
1、switch最佳化更新
JDK11以及之前的版本:
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; }
JDK12版本
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); }
JDK13版本
static void howMany(int k) { System.out.println( switch (k) { case 1 -> "one" case 2 -> "two" default -> "many" } );}
2、文字塊升級
2.1、html例子
JDK13之前
String html = "<html>\n" + " <body>\n" + " <p>Hello, world</p>\n" + " </body>\n" + "</html>\n";
JDK13最佳化的:
String html = """ <html> <body> <p>Hello, world</p> </body> </html> """;
2.2、SQL變化
JDK13之前
String query = "SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`\n" + "WHERE `CITY` = 'INDIANAPOLIS'\n" + "ORDER BY `EMP_ID`, `LAST_NAME`;\n";
JDK13
String query = """ SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB` WHERE `CITY` = 'INDIANAPOLIS' ORDER BY `EMP_ID`, `LAST_NAME`; """;
2.3、解釋
文字塊
""" line 1 line 2 line 3 """
相當於字串文字:
"line 1\nline 2\nline 3\n"
3、動態CDS檔案
目標:
提高應用程式類 - 資料共享(AppCDS)的可用性。消除了使用者進行試執行以建立每個應用程式的類列表的需要。-Xshare:dump使用類列表由該選項啟用的靜態歸檔應繼續工作。這包括內建類載入器和使用者定義的類載入器的類。
4、取消使用未使用的記憶體
摘要:
增強ZGC以將未使用的堆記憶體返回給作業系統。
動機:
ZGC目前沒有取消提交併將記憶體返回給作業系統,即使該記憶體長時間未使用。對於所有型別的應用程式和環境,此行為並非最佳, 尤其是那些需要關注記憶體佔用的應用程式和環境 例如:透過使用支付資源的容器環境。應用程式可能長時間處於空閒狀態並與許多其 他應用程式共享或競爭資源的環境。應用程式在執行期間可能具有非常不同的堆空間要求。 例如,啟動期間所需的堆可能大於穩態執行期間稍後所需的堆。HotSpot中的其他垃圾收集器,如G1和Shenandoah,今天提供 了這種功能,某些類別的使用者發現它非常有用。將此功能新增到ZGC將受到同一組使用者的歡迎。
5、重新實現舊版套接字API
摘要:
使用更簡單,更現代的實現替換java.net.Socket和java.net.ServerSocketAPI 使用的底層實現,易於維護和除錯。新的實 現很容易適應使用者模式執行緒,也就是光纖,目前正在Project Loom中進行探索。
動機:
在java.net.Socket和java.net.ServerSocketAPI,以及它們的底層實現,可以追溯到JDK 1.0。實現是遺留Java和C代 碼的混合,維護和除錯很痛苦。該實現使用執行緒堆疊作為I/O緩衝區,這種方法需要多次增加預設執行緒堆疊大小。該實現使用本機資料 結構來支援非同步關閉,這是多年來微妙可靠性和移植問題的根源。該實現還有幾個併發問題,需要進行大修才能正確解決。在未來的光 纖世界環境中,而不是在本機方法中阻塞執行緒,當前的實現不適用於目的。加q群:478052716 免費領取(Java架構資料,影片資料,BATJ面試資料)
6、 FileSystems.newFileSystem新方法
核心庫/ java.nio中新增了FileSystems.newFileSystem(Path,Map <String,?>)方法
新增了三種新方法
java.nio.file.FileSystems
,以便更輕鬆地使用將檔案內容視為檔案系統的檔案系統提供程式。
1、newFileSystem(Path)2、newFileSystem(Path, Map<String, ?>)3、newFileSystem(Path, Map<String, ?>, ClassLoader) 新增為newFileSystem(Path, Map<String, ?>) 已使用現有2-arg newFileSystem(Path, ClassLoader)並指定類載入器 的程式碼建立源(但不是二進位制)相容性問題。null.例如,由於引用newFileSystem不明確,因此無法編譯以下內容: FileSystem fs = FileSystems.newFileSystem(path, null);為了避免模糊引用,需要修改此程式碼以將第二個引數強制轉換為java.lang.ClassLoader。
7、nio新方法
核心庫/ java.nio中新的java.nio.ByteBuffer批次獲取/放置方法轉移位元組而不考慮緩衝區位置。
java.nio.ByteBufferjava.nio現在,其他緩衝區型別定義絕對批次get和put傳輸連續位元組序列的方法,而不考慮或影響緩衝 區位置。
8、核心庫/ java.time
新日本時代名稱Reiwa,此更新中新增了代表新Reiwa時代的例項。與其他時代不同,這個時代沒有公共領域。它可以透過呼叫JapaneseEra.of(3)或獲得JapaneseEra.valueOf("Reiwa")。JDK13及更高版本將有一個新的公共領域來代表這個時代。 NewEra從2019年5月1日開始的日本時代的佔位符名稱“ ”已被新的官方名稱取代。依賴佔位符名稱(請參閱JDK-8202088)獲 取新時代單例(JapaneseEra.valueOf("NewEra"))的應用程式將不再起作用。請參閱JDK-8205432
9、核心庫/ java.util中:I18N
支援Unicode 12.1, 此版本將Unicode支援升級到12.1,其中包括以下內容:
java.lang.Character支援12.1級的Unicode字元資料庫,其中12.0從11.0開始增加554個字元,總共137,928個 字元。這些新增內容包括4個新指令碼,總共150個指令碼,以及61個新的表情符號字元。U+32FF SQUARE ERA NAME REIWA從 12.0開始,12.1只新增一個字元。java.text.Bidi和java.text.Normalizer類分別支援12.0級的Unicode標準附件, #9和#15。java.util.regexpackage支援基於12.0級Unicode標準附件#29的擴充套件字形叢集。
10、熱點/ GC
10.1 JEP 351 ZGC取消提交未使用的儲存器 10.2 新增了-XXSoftMaxHeapSize標誌 10.3 ZGC支援的最大堆大小從4TB增加到16TB
11、安全庫/ java.security
11.1 該com.sun.security.crl.readtimeout系統屬性設定為CRL檢索的最大讀取超時,單位為秒。如果尚未設定該屬性, 或者其值為負,則將其設定為預設值15秒。值0表示無限超時。 11.2 新的keytool -showinfo -tls用於顯示TLS配置資訊的命令keytool -showinfo -tls新增了一個顯示TLS配置信 息的新命令。 11.3 SunMSCAPI提供程式現在支援以下一代加密(CNG)格式讀取私鑰。這意味著CNG格式的RSA和EC金鑰可從Windows金鑰 庫載入,例如“Windows-MY”。與EC(簽名演算法SHA1withECDSA,SHA256withECDSA等等)也支援。
12、刪除功能
刪除的部分功能:
12.1 核心庫/java.net中,不再支援Pre-JDK 1.4 SocketImpl實現java.net.SocketImpl此版本已刪除對為JavaSE1.3及更早版本編譯的自定義實現的支援。此更改對SocketImpl為Java SE 1.4(2002年釋出)或更新版本編譯 的實現沒有影響。 12.2 核心庫/java.lang中,刪除執行時跟蹤方法,過時的方法traceInstructions(boolean),並traceMethodCalls(boolean)已經從刪除java.lang.Runtime類。這些方法對許多版本都不起作用,它們 的預期功能由Java虛擬機器工具介面(JVMTI)提供。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545684/viewspace-2657828/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JDK13新特性詳解JDK
- Android Studio 新特性詳解Android
- 詳解C#7.0新特性C#
- JDK8新特性詳解JDK
- JDK9新特性詳解JDK
- JDK10新特性詳解JDK
- JDK11新特性詳解JDK
- JDK12新特性詳解JDK
- Java8 新特性詳解Java
- JDK8新特性詳解(二)JDK
- JDK8新特性詳解(一)JDK
- Oracle 18c新特性詳解 - 表和表空間相關的新特性Oracle
- java JDK1.7版本新特性詳解JavaJDK
- Dubbo3詳解(5大新特性及功能圖解)圖解
- Oracle 18c新特性詳解:In-Memory 專題Oracle
- 學Java的同學看過來,JDK13即將釋出,新特性會是什麼?JavaJDK
- C#–特性詳解C#
- Oracle 18c新特性詳解-多租戶專題Oracle
- Win10 Build 17692釋出 7個新特性詳解Win10UI
- Swift 5新特性詳解:ABI 穩定終於來了!Swift
- 全面煥新|詳解 Grafana v9.0.x 新增功能特性Grafana
- ES10特性詳解
- 顯微鏡下的webpack4的新特性:mode詳解Web
- SpreadJS 類Excel表格控制元件 - V12 新特性詳解JSExcel控制元件
- 整理了一份php8新特性詳解pdf文件PHP
- Kubernetes 1.24新特性解讀
- 蒲公英 · JELLY技術週刊 Vol.14: Vue 3 新特性詳解Vue
- React 16 新特性全解(上)React
- Python 3.8 新特性全面解讀Python
- Apache Kyuubi 1.6.0 新特性解讀Apache
- C# 9.0新特性詳解系列之三:模組初始化器C#
- 詳解C#特性和反射(四)C#反射
- 詳解C#特性和反射(三)C#反射
- 詳解C#特性和反射(二)C#反射
- 詳解C#特性和反射(一)C#反射
- vue-cli 3.0新特性解讀Vue
- Python 3 新特性:型別註解Python型別
- 特性更新!DistSQL 叢集治理能力詳解SQL