什麼時候Java 11將Java 8替換爲默認Java?

Java Development Kit的最新版本Java 11 已經發布。自從JDK Beta於1995年首次亮相以來,這種高級通用編程語言的平臺不斷髮展。java

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,其中包含的支持也已被刪除。app

儘管組織在商業基礎上仍然支持Java 8以前的JDK版本,但強烈建議卸載pre-Java 8,尤爲是從Windows計算機上卸載。在回答這個問題以前:「Java 11什麼時候將Java 8替換爲Java的默認版本?」,讓咱們首先更好地瞭解Java 11。編程語言

Java 11中的新功能ide

每一個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選擇!

相關文章
相關標籤/搜索