[翻譯] JDK 15 的新功能

看板Translate-CS作者 (痞子軍團團長)時間4年前 (2020/07/02 00:29), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
Blog 版: http://blog.dontcareabout.us/2020/07/jdk-15.html BBS 版以 markdown 格式撰寫 底子不夠,很多句子拆開來都看得懂,但是合併起來就死翹翹... (艸 ---------------------------------------------------------------------- 原文網址:https://www.infoworld.com/article/3534133/ jdk-15-the-new-features-in-java-15.html [Java Development Kit 15] 是 Java SE 的下個版本, Oracle 的實做在 6/11 進入到初期的 ramp-down phase, 該版本的功能集已經定型了。 JDK 15 的亮點包含 text block、hidden class、 foreign memory 存取 API 以及 sealed class、record 的 preview 版本。 Java upgrade 也進入到 ramp-down phase, 兩個候選版本會在 8/20 之前釋出。 general availability 會在 9/15。 JDK 15 的前身是 3/17 發布的 [JDK 14]。 Oracle 在 Java SE 保持著 6 個月發布一次新版的步調, 每年會有兩個新的版本問世。 OpenJDK 15 的新功能與改變: * 第二個 [foreign memory 存取 API] 的孵化版本, 這可以讓 Java 程式安全且有效率地存取 Java heap 以外的 foreign memory。 API 可以操作數種不同的 foreign memory, 像是 native、persistent、managed heap。 許多 Java 程式會存取 foreign memory,像是 Ignite、MapDB。 這個 API 會協助避免產生與 garbage collection、 跨 process 的 share memory、將檔案對應至記憶體的序列化...... 相關的成本與不確定性。 目前的 Java API 沒有提供令人滿意的 foreign memory 存取方法。 但在新的提案當中,API 應該也不會損害到 JVM 的安全性。 這個功能在 [JDK 14] 當中完成了早期孵化板, 在 JDK 15 當中提供的是精鍊過的版本。 * [sealed class] 的 preview 版本。 除了 interface,sealed class 限制其他 class 或 interface 如何繼承或實做 sealed class 的方式。 這個功能的目標包含 class 或 interface 的設計者 可以控制哪些程式碼是有實做的責任、 提供一個比 access modifier 更具表達力的方法來限制 super class 的使用、 以及 support future directions in pattern matching by underpinning the exhaustive analysis of patterns。 * 移除 Solaris/SPARC、Solaris/x64、Linux/SPARC 的支援。(細節略) * [record] 是一種 class、它是 immutable 資料的透明載體。 在 JDK 14 當中以前期 preview 版面世, JDK 15 應該會包含 preview 二版。 這個計畫的目標包含設計一個 OO 建造法來表達一個簡單的數據集合、 幫助程式設計師專住在建構 immutable data 而不是可繼承的行為、 自動實做資料相關的 method(像是 equals 跟 assessor)、 保持 Java 長期以來的原則(像是 nominal typing 以及移植能力)。 record 可以視為是 nominal tuple。 * 基於 [Edwards-Curve Digital Signature Algorithm (EdDSA)] 的加密簽章演算法。 EdDSA 是現代的 elliptic curve scheme 勝過目前 JDK 當中的簽章 scheme。 EdDSA 只有在 SunEC provider 當中會實做。 EdDSA 會被需要是因為相較於其他簽章 scheme 它加強了安全度及效能。 一些加密的 library(例如 OpenSSL 跟 BoringSSL)已支援這個演算法。 * [重新實做古老的 DatagramSocket API], 將底層 `java.net.datagram.Socket` 以及 `java.net.MulticastSocket` API 換成簡單且較現代的實做方式。 這帶來幾點好處:1. 容易除錯與維護。 2. 使用 [Project Loom] 正在開發的 virtual thread。 新的計畫會依循 JEP 353(重新實做古老的 Socket API)。 目前 `java.net.datagram.Socket` 以及 `java.net.MulticastSocket` 的實做 可以回溯至 JDK 1.0, 那時 IPv6 還在開發中。這造成目前 `MulticastSocket` 的實做 試著調解 IPv4 跟 IPv6 導致很難維護。 * 預設[關掉 biased locking], 所有相關的 command-line 選項也都 deprecate。(細節略) * 延續 [JDK 14] 的 preview 版本, 推出 [`instanceof` 的 pattern matching] 的 preview 二版。 pattern matching 主要可以讓 「在程式當中用特定條件取出 object 的 component」的表示法變得更簡潔。 像 Haskell 跟 C# 都因為其簡約與安全的特性而包含 pattern matching。 * [hidden class] 是無法讓其他 class 在 bytecode 當中直接使用的 class, 這讓 framework 在 runtime 製造出 class 然後透過 reflection 的方式間接地使用這些 class。 hidden class 可以被定義為 [access control nest] 的 member, 並且可以獨立 unload。 這個提案透過啟用標準 API 來定義 無法被找到且有 limited lifecycle 的 hidden class, 會增加所有 JVM 上語言的效能。 無論 JDK 內外的 framework 將可以動態地製造 class 而不是定義 hidden class。 許多在 JVM 上的語言依賴動態製造 class 來達到彈性與效率。 這個提案的目標包含:讓 framework 定義找不到實做細節的 class, 這樣其他 class 就無法連結到、也無法用 reflection 的方式發現到; support for extending an access control nest with non-discoverable classes; 以及支援無法找到的 class 的侵入式 unload, 這樣 framework 就有彈性可以想定義多少就定義多少。 另外一個目標是 deprecate 一個非標準 API `misc.Unsafe::defineAnonymousClass`, 這代表未來的版本會移除掉。 同樣地,Java 語言並不會因為這個提案而有所改變。 * [Z Garbage Collector][ZGC]([ZGC])將從實現性質的功能轉變成產品。 2018 年 9 月整合進 [JDK 11] 的 ZGC 是一個可拓展、低延遲的 GC。 ZGC 以實驗性功能的身份導入, 是因為 Java 開發人員認為 ZGC 的大小與複雜度應該小心地逐步帶入。 從那之後補強了許多部份, ranging from concurrent class unloading, uncommitting of unused memory, and support for data-class sharing to improved NUMA awareness and multi-threaded heap pre-touching。 heap 的最大值也從 4TB 增加到 16 TB。 支援的平台包括 Linux、Windows 與 MacOS。 * text block 在 JDK 14 與 [JDK 13] 都出過 preview 版, 要讓 Java 程式碼當中撰寫多行字串的工作便得簡單、 同時避免大多數情況下的 escape sequence。 一個 text block 是多行的字串,其中不包含 escape sequence、 自動用可預測的方式格式化、 並且提供開發人員控制格式的能力。 A goal of the text blocks proposal is enhancing the readability of strings in Java programs that denote code written in non-Java languages. Another goal is to support migration from string literals by stipulating that any new construct can express the same set of strings as a string literal, interpret the same escape sequences, and be manipulated in the same fashion as a string literal. OpenJDK 開發人員希望增加 escape sequence 以管理明確的 white space 以及換行符號。 * [Shenandoah low-pause-time garbage collector] 從實驗性的功能轉變成產品。 這在 [JDK 12] 時候導入,已經經過一年了。 * 移除 [Nashorn]。(細節略) * [Deprecation of the RMI Activation mechanism](細節略) [Java Development Kit 15]: https://openjdk.java.net/projects/jdk/15/ [JDK 14]: https://www.infoworld.com/article/3436795/jdk-14-the-new-features-in-java-14.html [foreign memory 存取 API]: https://openjdk.java.net/jeps/383 [sealed class]: https://openjdk.java.net/jeps/360 [record]: https://openjdk.java.net/jeps/384 [Edwards-Curve Digital Signature Algorithm (EdDSA)]: https://openjdk.java.net/jeps/339 [重新實做古老的 DatagramSocket API]: https://openjdk.java.net/jeps/373 [Project Loom]: https://www.infoworld.com/article/3230507/java-jdk-10-what-new-features-to-expect-in-the-next-java.html [關掉 biased locking]: https://openjdk.java.net/jeps/374 [`instanceof` 的 pattern matching]: https://openjdk.java.net/jeps/375 [hidden class]: https://www.infoworld.com/article/3520792/hidden-classes-could-be-coming-to-java.html [access control nest]: https://openjdk.java.net/jeps/181 [ZGC]: https://openjdk.java.net/jeps/377 [JDK 11]: https://www.infoworld.com/article/3265447/java-jdk-11-all-the-new-features-now-available.html [JDK 13]: https://www.infoworld.com/article/3340052/jdk-13-the-new-features-in-java-13.html [Shenandoah low-pause-time garbage collector]: https://www.infoworld.com/article/2888189/red-hat-shenandoah-boosts-java-garbage-collection.html [JDK 12]: https://www.infoworld.com/article/3301197/jdk-12-the-new-features-in-java-12.html [Nashorn]: https://www.infoworld.com/article/3279893/nashorn-javascript-engine-for-jvm-could-be-axed.html [Deprecation of the RMI Activation mechanism]: https://openjdk.java.net/jeps/385 -- 錢鍾書: 說出來的話 http://www.psmonkey.org 比不上不說出來的話 Hiking / Singapore 板 只影射著說不出來的話 and more...... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.40.175 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Translate-CS/M.1593620987.A.CB3.html
文章代碼(AID): #1U_Bdxop (Translate-CS)
文章代碼(AID): #1U_Bdxop (Translate-CS)