就在剛剛,Java 16正式發佈。java
提高了Java在CPU向量計算的性能,這是對大規模的張量計算的支持,提高了Java在AI領域的能力。編程
容許在JDK中C++源代碼中使用 C ++ 14的新特性。安全
Git目前已經成爲代碼版本管理領域的絕對統治者,如今Java順應潮流也使用Git進行源代碼管理。併發
OpenJDK的代碼如今有GitHub託管。ide
併發線程堆棧處理的垃圾收集器。函數
Unix域套接字對ServerSocketChannel
和SocketChannel
的支持。工具
在x64和AArch64體系結構上,將JDK移植到Alpine Linux以及其它使用musl C庫的Linxu發行版上。post
Hotspot對類元數據的處理(metaspace-元空間)有了很大的改進。佔用空間減小了,如今能夠更快地將未使用的內存回收到操做系統。性能
將 JDK 移植到 Windows / AArch64平臺。學習
引入一個API,該API提供對本地代碼的靜態類型的純Java訪問。該API與Foreign-Memory API(JEP 393)一塊兒將大大簡化綁定到本機庫的本來容易出錯的過程。
將原始包裝器類指定爲基於值的類,並棄用其構造函數以將其刪除,從而提示新的棄用警告。提供有關在Java平臺中不正確嘗試在任何基於值的類的實例上進行同步的警告。
提供jpackage
用於打包獨立Java應用程序的工具。
msi
與exe
在Windows,pkg
並dmg
在MacOS,以及deb
和rpm
在Linux上。ToolProvider
API以編程方式調用。引入一個API,容許Java程序安全有效地訪問Java堆以外的外部內存。
在此以前 Java 中:
// 先判斷類型 if (obj instanceof String) { // 而後轉換 String s = (String) obj; // 而後才能使用 } 複製代碼
自動匹配模式中:
if (obj instanceof String s) { // 若是類型匹配 直接使用 } else { // 若是類型不匹配則不能直接使用 } 複製代碼
終於轉正了,Java類再也不又臭又長。原來是這樣的:
public class Range { private final int min; private final int max; public Range(int min, int max) { this.min = min; this.max = max; } public int getMin() { return min; } public int getMax() { return max; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Range range = (Range) o; return min == range.min && max == range.max; } @Override public int hashCode() { return Objects.hash(min, max); } @Override public String toString() { return "Range{" + "min=" + min + ", max=" + max + '}'; } } 複製代碼
如今能夠簡化爲:
public record Range(int min, int max) {} 複製代碼
以往的文章有詳細介紹:
提升JDK的安全性和可維護性,跟普通開發者無關。
密封類,簡單說就是被final修飾的類,密封類不能被繼承,防止了惡意的派生。
另外Oracle發文對參與JDK 16貢獻的公司和我的進行了感謝。
Oracle要感謝爲ARM,SAP,Red Hat和騰訊等組織工做的開發人員所作的傑出貢獻。咱們也很高興看到較小的組織(例如Ampere Computing,Bellsoft,DataDog,Microdoc和獨立開發人員)的貢獻,他們共同貢獻了Java 16中3%的修復程序。咱們一樣感謝許多經驗豐富的開發人員,他們審查了建議的更改,嘗試採用早期訪問版本並報告問題的早期採用者,以及在OpenJDK郵件列表中提供反饋的敬業專業人員。
參考:《2020最新Java基礎精講視頻教程和學習路線!》
連接:https://juejin.cn/post/694036...