JDK8新特性-你瞭解多少

feri發表於2018-05-17

Java 程式語言

Lambda 表示式是一個新的語言特性,已經在此版本中引入。該特性讓您可以將功能視為方法引數,或者將程式碼視為資料。使用 Lambda 表示式,您可以更簡潔地表示單方法介面(稱為功能介面)的例項。

方法引用為已經具有名稱的方法提供了易於理解的 lambda 表示式。

預設方法允許將新功能新增到庫的介面中,並確保與為這些介面的舊版本編寫的程式碼的二進位制相容性。

重複批註支援對同一個宣告或型別的使用多次應用相同的批註型別。

型別批註支援在使用型別的任何地方應用批註,而不僅限於宣告。與可插拔型別系統結合使用時,此特性可改進程式碼的型別檢查。

改進型別推斷。

方法引數反射。

集合

新的 java.util.stream 包中的類提供了一個 Stream API,支援對元素流進行函式式操作。Stream API 整合在 Collections API 中,可以對集合進行批量操作,例如順序或並行的 map-reduce 轉換。

針對存在鍵衝突的 HashMap 的效能改進

緊湊 profile包含 Java SE 平臺的預定義子集,並且支援不需要在小型裝置上部署和執行整個平臺的應用。

安全性

預設啟用客戶端 TLS 1.2

AccessController.doPrivileged 的新變體支援程式碼斷言其許可權的子集,而不會阻止完全遍歷堆疊來檢查其他許可權

更強大的基於密碼的加密演算法

JSSE 伺服器端支援 SSL/TLS 伺服器名稱指示 (SNI) 擴充套件

支援 AEAD 演算法:SunJCE 提供程式得到了增強,支援 AES/GCM/NoPadding 密碼實現以及 GCM 演算法引數。而且 SunJSSE 提供程式也得到了增強,支援基於 AEAD 模式的密碼套件。請參閱 Oracle 提供程式文件,JEP 115。

金鑰庫增強,包括新的域金鑰庫型別 java.security.DomainLoadStoreParameter 和為 keytool 實用程式新增的命令選項 -importpassword

SHA-224 訊息摘要

增強了對 NSA Suite B 加密的支援

更好地支援高熵隨機數生成

新增了 java.security.cert.PKIXRevocationChecker 類,用於配置 X.509 證照的撤銷檢查

適用於 Windows 的 64 位 PKCS11

Kerberos 5 重放快取中新增了 rcache 型別

支援 Kerberos 5 協議轉換和受限委派

預設禁用 Kerberos 5 弱加密型別

適用於 GSS-API/Kerberos 5 機制的未繫結 SASL

針對多個主機名稱的 SASL 服務

JNI 橋接至 Mac OS X 上的原生 JGSS

SunJSSE 提供程式中支援更強大的臨時 DH 金鑰

JSSE 中支援伺服器端加密套件首選項自定義

JavaFX

本版本中實施了新的 Modena 主題。有關更多資訊,請參閱 xexperience.com 上的部落格。

新的 SwingNode 類允許開發人員將 Swing 內容嵌入到 JavaFX 應用中。請參閱 SwingNode javadoc 和將 Swing 內容嵌入 JavaFX 應用中。

新的 UI 控制元件包括 DatePicker 和 TreeTableView 控制元件。

javafx.print 程式包為 JavaFX Printing API 提供了公共類。有關更多資訊,請參閱 javadoc。

3D 圖形特性現在包括 3D 形狀、攝像頭、燈光、子場景、材料、挑選和抗鋸齒。JavaFX 3D 圖形庫中新增了 Shape3D(Box、Cylinder、MeshView 和 Sphere 子類)、SubScene、Material、PickResult、LightBase(AmbientLight 和 PointLight 子類)和 SceneAntialiasing API 類。此版本中的 Camera API 類也已更新。請參閱 javafx.scene.shape.Shape3D、javafx.scene.SubScene、javafx.scene.paint.Material、javafx.scene.input.PickResult 和 javafx.scene.SceneAntialiasing 類的相關 javadoc 以及 JavaFX 3D 圖形入門文件。

WebView 類包含新特性和改進。有關其他 HTML5 特性(包括 Web 套接字、Web 輔助程式和 Web 字型)的更多資訊,請參閱 HTML5 支援的特性。

增強了文字支援,包括雙向文字、複雜文字指令碼(如泰語和印地語控制元件)以及文字節點中的多行多樣式文字。

此版本新增了對 Hi-DPI 顯示的支援。

CSS Styleable* 類已成為公共 API。有關更多資訊,請參閱 Javafx.css javadoc。

新的 ScheduledService 類允許自動重新啟動服務。

JavaFX 現在可用於 ARM 平臺。適用於 ARM 的 JDK 包含 JavaFX 的基礎元件、圖形元件和控制元件。

工具

可通過 jjs 命令來呼叫 Nashorn 引擎。

java 命令用於啟動 JavaFX 應用。

重新編寫了 java 手冊頁。

可通過 jdeps 命令列工具來分析類檔案。

Java Management Extensions (JMX) 支援遠端訪問診斷命令。

jarsigner 工具提供了一個選項用於請求獲取時間戳機構 (TSA) 的簽名時間戳。

Javac 工具

javac 命令的 -parameters 選項可用於儲存正式引數名稱,並啟用反射 API 來檢索正式引數名稱。

javac 命令現已正確實施了 Java 語言規範 (JLS) 第 15.21 節中的相等運算子的型別規則。

javac 工具現在支援檢查 javadoc 註釋的內容,從而避免在執行 javadoc 時生成的檔案中產生各種問題,例如無效的 HTML 或可訪問性問題。可通過新的 Xdoclint 選項來啟用此特性。有關更多詳細資訊,請參閱執行“javac-X”時的輸出。此特性也可以在 javadoc 工具中使用,並且預設啟用。

javac 工具現在支援根據需要生成原生標頭。這樣便無需在構建管道中單獨執行 javah 工具。可以使用新的 -h 選項在 javac 中啟用此特性,該選項用於指定寫入標頭檔案的目錄。將為任何具有原生方法或者使用 java.lang.annotation.Native 型別的新批註的類進行批註的常量欄位生成標頭檔案。

Javadoc 工具

javadoc 工具支援新的 DocTree API,讓您可以將 Javadoc 註釋作為抽象語法樹來進行遍歷。

javadoc 工具支援新的 Javadoc Access API,讓您可以直接從 Java 應用中呼叫 Javadoc 工具,而無需執行新的程式。有關更多資訊,請參閱 javadoc 新特性頁面。

javadoc 工具現在支援檢查 javadoc 註釋的內容,從而避免在執行 javadoc 時生成的檔案中產生各種問題,例如無效的 HTML 或可訪問性問題。此特性預設為啟用狀態,可以通過新的 -Xdoclint 選項加以控制。有關更多詳細資訊,請參閱執行“javadoc -X”時的輸出。javac 工具也支援此特性,但預設情況下並未啟用它。

國際化

Unicode 增強,包括對 Unicode 6.2.0 的支援

採用 Unicode CLDR 資料和 java.locale.providers 系統屬性

新增日曆和區域設定 API

支援將自定義資源包作為擴充套件進行安裝

部署

現在可以使用 URLPermission 允許沙盒小程式和 Java Web Start 應用連線回啟動它們的伺服器。不再授予 SocketPermission。

在所有安全級別,主 JAR 檔案的 JAR 檔案清單中都需要 Permissions 屬性。

Date-Time 程式包 — 一組新程式包,提供全面的日期-時間模型。

指令碼編寫

Rhino Javascript 引擎已被替換為 Nashorn JavaScript 引擎

Pack200

Pack200 支援 JSR 292 引入的常量池條目和新位元組碼

JDK8 支援 JSR-292、JSR-308 和 JSR-335 指定的類檔案更改

IO 和 NIO

全新的基於 Solaris 事件埠機制的面向 Solaris 的 SelectorProvider 實現。要使用它,請將系統屬性 java.nio.channels.spi.Selector 的值設定為 sun.nio.ch.EventPortSelectorProvider。

減小 /jre/lib/charsets.jar 檔案的大小

提高了 java.lang.String(byte[], *) 建構函式和 java.lang.String.getBytes() 方法的效能。

java.lang 和 java.util 程式包

並行陣列排序

標準編碼和解碼 Base64

無符號算術支援

JDBC

刪除了 JDBC-ODBC Bridge。

JDBC 4.2 引入了新特性。

Java DB

JDK 8 包含 Java DB 10.10。

網路

已新增 java.net.URLPermission 類。

在 java.net.HttpURLConnection 類中,如果安裝了安全管理器,那麼請求開啟連線的呼叫需要許可權。

併發性

java.util.concurrent 程式包中新增了一些類和介面。

java.util.concurrent.ConcurrentHashMap 類中新增了一些方法,支援基於新增流工具和 lambda 表示式的聚合操作。

java.util.concurrent.atomic 程式包中新增了一些類來支援可擴充套件、可更新的變數。

java.util.concurrent.ForkJoinPool 類中新增了一些方法來支援通用池。

新增的 java.util.concurrent.locks.StampedLock 類提供了一個基於能力的鎖,可通過三種模式來控制讀/寫訪問。

Java XML - JAXP

HotSpot

新增的硬體內部函式以便使用高階加密標準 (AES)。UseAES 和 UseAESIntrinsics 標誌用於為 Intel 硬體啟用基於硬體的 AES 內部函式。硬體必須是 2010 年或更新的 Westmere 硬體。例如,要啟用硬體 AES,請使用以下標誌:

-XX:+UseAES -XX:+UseAESIntrinsics
要禁用硬體 AES,請使用以下標誌:

-XX:-UseAES -XX:-UseAESIntrinsics
刪除了 PermGen。

方法呼叫的位元組碼指令支援 Java 程式語言中的預設方法。

Java Mission Control 5.3 版本說明

JDK 8 包含 Java Mission Control 5.3

摘自sun官網

相關文章