何時Java 11將Java 8替換為預設Java?
Java Development Kit的最新版本Java 11 已經發布。自從JDK Beta於1995年首次亮相以來,這種高階通用程式語言的平臺不斷髮展。
Java 11的釋出只遵循Java 10 6個月。這符合Java平臺首席架構師Mark Reinhold在2017年提出的建議。他建議以每年兩次的釋出週期取代兩年的時間表。
目前,Java 8和Java 11是LTS(長期支援)版本。Java 8的公共更新結束計劃於2019年1月進行商業用途。對於非商業用途,計劃在2020年12月的未指定日期進行。
除了所有新增,刪除和棄用的功能之外,Java 11的有趣之處在於Oracle不支援它。取而代之的是,OpenJDK社群將提供長期支援,最有可能的形式是AdoptOpenJDK。
其他Java版本怎麼樣?
隨著Java 11的釋出,對Java 10的支援已經結束。這是因為它是一個快速釋出版本,如Java 9,其中包含的支援也已被刪除。
儘管組織在商業基礎上仍然支援Java 8之前的JDK版本,但強烈建議解除安裝pre-Java 8,尤其是從Windows計算機上解除安裝。在回答這個問題之前:“Java 11何時將Java 8替換為Java的預設版本?”,讓我們首先更好地瞭解Java 11。
Java 11中的新功能
每個Java版本都引入了許多新功能。然而,這一次,它更大更好。Java 11為現有功能列表添加了許多新功能。以下是一些最重要的內容:
附加
10個新劇本,包括Adlam,Newa,Tangut和Zanabazar Squar
可擴充套件的低延遲垃圾收集器ZGC或Z垃圾收集器與Epsilon GC一起新增,Epsilon GC是一個實驗性的無操作垃圾收集器
通過JVMTI可訪問,現在可以使用低開銷的堆分析
toArray (IntFunction) 在java.util.Collection介面中新增新的預設方法
可提供ChaCha20和ChaCha20-Poly1305密碼。ChaCha20是一種新的流密碼,旨在取代舊的,不安全的RC4流密碼
結合Unicode 9.0.0和10.0.0
增強的SunEC提供商,支援4個額外的Brainpool曲線
使用Curve25519和Curve448實施新的金鑰協商方案
改進的Java啟動程式,用於執行作為Java原始碼的單個檔案提供的程式
包括TLS 1.3的實現
介紹 jceks.key.serialFilter,安全財產
JVM現在支援將類和介面安排到一個巢狀中,這是一個全新的訪問控制上下文
新命令列標誌,-XX:+ UseDynamicNumberOfCompilerThreads。它被新增到動態控制編譯器執行緒
RSASSA-PSS簽名演算法支援新增到SunMSCAPI提供程式
標準化HTTP客戶端
支援aes128-cts-hmac-sha256-128和aes256-cts-hmac-sha384-192的Kerberos 5加密型別
基於Unicode Consortium的CLDR(公共區域設定資料登錄檔)更新的區域設定資料
var,保留型別名稱,在宣告lambda表示式的形式引數時可用
清除
Java Development Kit的最新版本不僅引入了大量功能,而且還削弱了它的一些舊功能。其中大多數已在以前的Java版本中棄用。JDK 11中不再提供的功能和選項包括:
該 appletviewer 工具。它在JDK 9中被折舊
捆綁的字型。因此,JDK 11僅依賴於作業系統上安裝的字型
com.sun.awt.AWTUtilities class,在JDK 10中獲得折舊
CORBA和Java EE模組
JavaFX模組,現在可作為一組單獨的模組使用
Java外掛和Java WebStart技術。用於配置部署技術的Java控制面板與共享系統JRE和JRE自動更新機制一起被刪除
jdk.snmp模組
JMC(Java Mission Control)。但是,它可作為單獨的可下載模組使用
通過SNMP,JVM-MANAGEMENT-MIB.mib進行JVM監視和管理的規範
sun.misc.Unsafe.defineClass 類。它的替代品是 java.lang.invoke.MethodHandles.Lookup.defineClass
sun.nio.ch.disableSystemWideOverlappingFileLockCheck 和 sun.locale.formatasdefault 屬性
javax.imageio JPEG外掛不再支援使用alpha的影象
Thread.destroy() 和 Thread.stop(Throwable) 方法
貶值
隨著Java平臺的每個主要版本的釋出,包含和排除都會有一些貶值。JDK 11棄用:
命令列引數 -XX:+UnlockCommericalFeatures 和 -XX:+LogCommercialFeatures
jcmd命令: VM.check_commercial_features 和 VM.unlock_commercial_features
Nashorn JavaScript引擎,相應的API和jjs工具
java.util.jar和pack200以及unpack200工具中的Pack200 API
基於流的GSSContext方法,其中包括 acceptSecContext, getMIC, initSecContext, unwrap, verifyMIC,和 wrap
ThreadPoolExecutor,關閉執行緒池的finalize方法什麼都不做
VM選項-XX:+ AggressiveOpts
請檢視此內容,以獲取有關JDK 11中新增,刪除和棄用的詳細資訊。
那麼什麼時候Java 11將Java 8替換為預設Java?
最簡單的答案是:不是很快!我們已經討論過,一些組織和個人仍然依賴於Java 8之前的版本來繼續運營。對於Java 8也是如此。此外,它是一個LTS版本,這意味著它將超過快速釋出版本。
支援這一想法的另一個論點是Java 11相對較新。因此,需要一些時間來獲得牽引力。大多數已經開始使用Java 8部署的企業將繼續從中獲益。
無法決定使用哪一個來使用Java 11?OpenJDK或Oracle JDK。嗯,這是兩者之間的對比,以幫助您做出選擇。
OpenJDK比。Oracle JDK
嘗試使OpenJDK和Oracle JDK二進位制檔案儘可能相似的嘗試正在進行中。儘管如此,在Java的第11個主要版本中,兩者之間仍有幾個不同之處。一些最重要的是:
API,如javafx和資源管理,不包含在OpenJDK二進位制檔案中,而是包含在Oracle JDK二進位制檔案中
OpenJDK允許使用未簽名的第三方加密提供程式,而Oracle JDK要求使用Oracle提供的證書對這些提供程式進行簽名
OpenJDK僅提供Java Development Kit,而Oracle JDK另外提供Java Runtime Environment
OpenJDK可用作壓縮存檔(tar.gz或.zip)。相反,Oracle JDK可用作安裝程式(deb,msi,deb等)
OpenJDK在GPLv2wCP許可下可用,而Oracle JDK在OTN許可下發布
java -version的輸出在OpenJDK中與在Oracle JDK中不同
\ legal \ java.desktop \ freetype.md的內容對於OpenJDK和Oracle JDK都是不同的
使用日誌記錄是Oracle JDK獨有的
使用-XX:+ UnlockCommercialFeatures標誌將導致OpenJDK丟擲錯誤並暫停。相反,在Oracle JDK中使用相同的內容將列印警告,但執行將繼續
雖然OpenJDK提供Alpine Linux,但Oracle JDK提供Solaris
希望這有助於您進行JDK選擇!
推薦一個Java進階架構學習交流:952124565,群內有分散式架構、高效能、高併發、效能優化、Spring boot、Redis、ActiveMQ、Nginx、Netty、Jvm等視訊資料提供學習參考