[翻譯]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
命令的-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
工具支援新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,用於控制讀/寫訪問。
-
- Java的XML – JAXP
-
- 為使用Advanced Encryption Standard(AES)新增硬體相關的intrinsics。 可以通過
UseAES
和UseAESIntrinsics
兩個flag使得Intel硬體上的基於硬體的AES intrinsics生效。 硬體必須是2010或更高版本的Westmere硬體。例如,要啟用硬體AES,使用下面的選項:
- 為使用Advanced Encryption Standard(AES)新增硬體相關的intrinsics。 可以通過
-XX:+ UseAES -XX:+ UseAESIntrinsics
要禁用硬體AES使用下面的選項:
-XX:-UseAES -XX:-UseAESIntrinsics
- 去除PermGen。
- 對方法呼叫的位元組碼指令,支援Java程式語言的預設方法。
-
JDK 8包括JavaMission Control 5.3。
相關文章
- jQuery 3 有哪些新東西jQuery
- Linux 3.16 核心中有什麼新東西?Linux
- 框架是個什麼東西?框架
- 這是什麼東西呢?
- ftp是什麼,ftp是什麼東西?FTP
- 什麼新東西值得學「GitHub 熱點速覽 v.22.29」Github
- 為什麼說區塊鏈也不是什麼好東西?區塊鏈
- 37個最好的學習新東西的網站(譯)網站
- 開發者工具又加了什麼好東西?(Chrome 68)Chrome
- Java JVM:垃圾回收(GC 在什麼時候,對什麼東西,做了什麼事情)JavaJVMGC
- 來聊聊,這個Java到底是什麼東西?Java
- HTML5.1 裡的新東西HTML
- [譯]JS裡我才知道的東西JS
- 知識普及:HTML 5到底是個什麼東西HTML
- 什麼是大翻譯運動?
- JavaScript 6 裡都有啥新鮮東西?JavaScript
- 微軟黑科技:Skype同聲翻譯背後還有什麼微軟
- 聽說node.js很火?那麼這skr什麼鬼東西?Node.js
- 程式、執行緒、協程到底是個什麼東西?執行緒
- 淺入瞭解 vue cli3.0 生成了什麼東西Vue
- linux 運維 命令 + 運維需要掌握些什麼東西Linux運維
- 中國為什麼能把一切東西搞成物聯網?
- Vue 3 的 setup語法糖到底是什麼東西?Vue
- 怪東西
- [翻譯]Billy Belceb 病毒編寫教程for Win32 ----病毒編寫中的有用的東西Win32
- 「翻譯」什麼是SAP F&R?
- 翻譯-DevOps究竟是什麼?dev
- 為什麼不能當職業翻譯
- 開源 從零上手flutter一個月可以做出什麼東西?Flutter
- 深度學習記錄(1)metricLogger是個什麼東西?深度學習
- 【翻譯】 What is class diagram(什麼是類圖)?
- [翻譯]西數某硬碟韌體除錯分析硬碟除錯
- 什麼是翻譯平臺最重要的地方?
- 一個詞告訴你什麼是翻譯
- Android7.1新特性shortcut文件之外的東西Android
- CSS選擇器 4 中包括了哪些新東西?CSS
- 斷言的東西如果是有延遲的要怎麼處理?
- 暴雪中國:重製版中文翻譯和舊版有什麼“大”區別?