[翻譯]JDK8有什麼新東西?
翻譯官方文檔,刪除部分可忽略。
譯者:坤穀 ,校對:井桐
Java SE 8是一個Java主要特性的發布版本。本文總結了在Java SE 8、JDK 8以及Oracle實現的Java SE 8中的新特性和增強的功能。點擊下麵各個組件的名稱可以獲取該組件增強的更詳細說明。
-
- Lambda表達式(Lambda Expressions)作為一種新的語言特性引入到這個版本中。它們允許我們將功能作為方法的參數傳遞,或者把代碼看成是數據。Lambda表達式能夠讓你更加簡潔的表達單個方法的接口(函數式接口)的實例。
- 方法引用(Method references)為有名稱的方法提供易於閱讀的lambda表達式。
- 默認方法(Default methods)能夠使新功能被添加到庫的接口中,並確保與舊版本中為這些接口寫的代碼二進製兼容。
- 重複注解(Repeating Annotations)提供對於同樣的聲明和類型使用時可以多次使用相同的注解類型的能力。
- 類型注解(Type Annotations)可以在一個類型的任意使用位置使用注解,而不局限於在類型聲明處使用。配合可插拔的類型係統(pluggable type system)使用,類型注解可以提高代碼的類型檢查能力。
- 改進類型推斷
- 方法參數反射
-
- 新的
java.util.stream
包中的類為集合類的元素提供了流式API來支持函數式的操作。該流式API被集成到集合API中,它使得集合類可以進行(串行或並行map-reduce)批量操作。 - 改進HashMaps鍵衝突的性能
- 新的
緊湊的配置,提供了Java SE平台的預定義子集,使得小型設備的應用程序可以不需要再在整個平台上部署運行。-
客戶端TLS 1.2默認啟用- 新的
AccessController.doPrivileged
變量使代碼對其權限的子集進行斷言,而避免遍曆整個方法棧來檢查其他權限 - 更強大的基於密碼的加密算法
- JSSE服務器支持SSL/TLS服務器名稱指示(SNI)擴展
- 支持AEAD算法:增強了SunJCE provider,支持AES/GCM/NoPadding cipher實現以及GCM算法參數。增強SunJSSE provider,支持基於cipher suites的AEAD模式。看考甲骨文提供的文檔,JEP 115。
- 增強KeyStore,包括新的Domain KeyStore類型
java.security.DomainLoadStoreParameter
,以及keytool工具新的命令選項-importpassword
。 - SHA-224消息摘要
- NSA Suite B Cryptography增強
- 更好地支持高熵隨機數生成
- 新的
java.security.cert.PKIXRevocationChecker
類用於配置X.509證書吊銷檢查。 Windows 64位PKCS11。- 為Kerberos 5 Replay Caching 新增rcache類型。
- 支持Kerberos 5協議轉換和約束委派。
- 默認情況下禁用Kerberos 5弱加密類型。
- 對GSS-API / Kerberos 5提供未綁定的SASL。
- SASL服務支持多主機名。
Mac OS X支持JNI橋接原生JGSS。- SunJSSE provider 支持更強的短暫DH密鑰。
- JSSE支持服務器端cipher suites的定製。
JavaFX 略-
-
jjs
命令用於啟動Nashorn引擎。 java
命令可以啟動JavaFX應用程序。- 重新設計
java
man頁。 -
jdeps
命令行工具用於分析類文件。 - Java管理擴展(JMX)給診斷命令提供遠程訪問。
-
jarsigner
工具增加請求從Time Stamping Authority(TSA)已簽名的時間戳的選項。 - javac工具
-
javac
命令的-parameters
選項可以用來存儲形參名稱並可以用反射API來獲取形參名稱。 -
javac
命令現在能正確地執行在Java語言規範(JLS)第15.21關於相等運算符的類型規則。 -
javac
工具支持檢查javadoc
注釋的內容。檢查可能導致javadoc
生成的文檔的各種問題,如無效的HTML或可訪問性問題。 該功能是通過啟用新的-Xdoclint
選項來執行。 欲了解更多信息,請參閱運行“javac -X
”的輸出。這個功能也可以在javadoc
工具中使用,默認啟用。 -
javac
工具還提供根據需要生成native頭文件的能力。 這免去了構建流程中單獨運行javah工具的必要。javac
通過使用新的-h
選項來開啟,該選項用於指定頭文件寫入指定的目錄。 native方法和標注了新注釋java.lang.annotation.Native的常量字段,都將生成頭文件。 - Javadoc工具
-
javadoc
工具支持新DocTree
API,使你能夠以抽象語法樹的方式遍曆Javadoc注釋。 -
javadoc
工具支持新的Javadoc訪問API,使你能夠直接從Java應用程序調用Javadoc工具,而不執行新的進程。 請參閱的javadoc新特性了解更多信息。 -
javadoc
工具現在已經支持檢查javadoc
注釋的內容,檢查可能生成導致各種問題的注釋,如無效的HTML或可訪問性問題。 該功能是默認啟用,並且還可以通過新的-Xdoclint
選項控製。 欲了解更多信息,請參閱“javadoc -X
”的輸出。 這個功能也可以在javac工具提供,雖然它不是默認啟用的。
-
-
- Unicode的改進,包括對Unicode 6.2.0支持。
- 采用Unicode的CLDR數據和java.locale.providers係統屬性。
- 新的Calendar和LocaleAPIs。
- 能夠擴展安裝自定義資源包。
-
對於沙盒applets和Java Web Start應用程序,URLPermission現在用於允許連接回他們所啟動的服務器,SocketPermission權限不再授予。所有安全級別的主JAR文件的manifest必須包含權限屬性。
-
- 一組新的軟件包提供了一個全麵的日期-時間模式。
-
- Nashorn JavaScript引擎
-
- Pack200支持由JSR 292引入的常量池項和新的字節碼。
- 支持由JSR-292,JSR-308和JSR-335引入的JDK8類文件的變化。
-
Solaris新增基於Solaris事件端口機製的SelectorProvider
,使用時,係統屬性java.nio.channels.spi.Selector
設置為值sun.nio.ch.EventPortSelectorProvider
。- 減少
<JDK_HOME>/jre/lib/charsets.jar
文件的大小。 - 優化
java.lang.String(byte[], *)
構造函數和java.lang.String.getBytes()
方法的性能。
-
- 並行數組排序
- 標準Base64編碼器和解碼器
- 無符號運算支持
-
- 刪除JDBC-ODBC橋。
- JDBC 4.2引入了新功能。
-
Java DB
- JDK 8包含Java DB 10.10。
-
- 添加類
java.net.URLPermission
。 - 如果啟用了security manager,類
java.net.HttpURLConnection
請求打開一個連接需要獲得許可。
- 添加類
-
-
java.util.concurrent
包添加了相關類和接口。 -
java.util.concurrent.ConcurrentHashMap
類添加了方法,用於支持基於新的流設施和lambda表達式聚合操作。 -
java.util.concurrent.atomic
包添加了類,用於支持可擴展的、可更新的變量。 -
java.util.concurrent.ForkJoinPool
類添加了方法,用於支持公共線程池。 - 添加了
java.util.concurrent.locks.StampedLock
類,提供了有三種模式的capability-based lock,用於控製讀/寫訪問。
-
-
- 為使用Advanced Encryption Standard(AES)添加硬件相關的intrinsics。 可以通過
UseAES
和UseAESIntrinsics
兩個flag使得Intel硬件上的基於硬件的AES intrinsics生效。 硬件必須是2010或更高版本的Westmere硬件。例如,要啟用硬件AES,使用下麵的選項:-XX:+ UseAES -XX:+ UseAESIntrinsics
要禁用硬件AES使用下麵的選項:-XX:-UseAES -XX:-UseAESIntrinsics
- 去除PermGen。
- 對方法調用的字節碼指令,支持Java編程語言的默認方法。
- 為使用Advanced Encryption Standard(AES)添加硬件相關的intrinsics。 可以通過
-
JDK 8包括JavaMission Control 5.3。
最後更新:2017-04-01 13:44:33