一篇文章瞭解新發布的Java JDK 11

Java JDK 11刪除了CORBA,Java EE和JavaFX支持,但添加了十幾個主要新功能。javascript

Java Development Kit(JDK)11現已廣泛可用,可供生產使用,提升了工做效率,並提供了實現HTTP/2的HTTP客戶端API。html

Java Standard Edition(SE)11有16個主要功能更改。Java 11還經過刪除CORBA和Java EE(最近改名爲Jakarta EE)模塊以及刪除JavaFX而失去了一些功能 ,JavaFX如今可做爲獨立技術使用。java

在Java 11中,Oracle已將主線存儲庫jdk/jdk分叉到jdk/jdk11穩定存儲庫。推送到jdk/jdkjdk/client的更改如今標記爲JDK 12.穩定存儲庫能夠接受選定的錯誤修復,若是得到批准,則能夠根據JDK發佈過程接受後期加強。算法

Oracle標準Java實現的最新版本是一個長期支持(LTS)版本,它將獲得Oracle至少8年的商業支持。到2026年將提供Bug修復和安全更新。新的LTS版本每三年發佈一次,JDK 17將於2021年發佈,這將是下一個LTS版本。中期版本將每六個月發佈一次。編程

哪裏能夠下載JDK 11

您能夠從Oracle Technology Network 下載JDK 11緩存

Java 11 JDK中的新功能

JDK 11有16個新功能:安全

  • 經過lang.Math在Aarch64處理器上實現sin,cos和log函數的新內在函數,改進Aarch64內在函數。該提案強調專用的CPU體系結構特定的代碼模式,可提升應用程序和基準性能。
  • 基於嵌套的訪問控制引入了嵌套,這是一種與Java語言中嵌套類型概念一致的訪問控制上下文。嵌套容許邏輯上屬於同一代碼實體的類,但編譯爲不一樣的類文件以訪問彼此的私有成員,而無需編譯器插入可訪問性擴展橋接方法。
  • 傳輸層安全性(TLS)1.3,其中TLS協議的這種大修將適用於JDK 11,從而提供顯着的安全性和性能優點。可是,沒有目標支持TLS 1.3的每一個功能。爲了最大限度地下降不兼容的風險,TLS 1.3默認會實現向後兼容模式。應用程序能夠根據須要關閉或打開此模式。
  • Nashorn JavaScript引擎與JJS工具的棄用,旨在未來刪除它們。鑑於ECMAScript語言構建和API的快速調整和修改,Oracle發現Nashorn難以維護。
  • HTTP客戶端(標準),它標準化了JDK 9中引入並在JDK 10中更新的孵化HTTP API客戶端。API提供非阻塞請求和響應語義CompleteableFutures,能夠連接到觸發器依賴操做。在JDK 9和10中孵化以後,如今異步的實現幾乎已經徹底重寫.RX Flow概念已經被推入實現中,消除了支持HTTP / 2所需的許多自定義概念。如今能夠更輕鬆地跟蹤數據流,從用戶級請求發佈者和響應發佈者到底層套接。這下降了複雜性並最大化了HTTP / 1和HTTP / 2之間重用的可能性。
  • 被稱爲「無操做」收集器的Epsilon垃圾收集器將處理內存分配,而不實現任何實際的內存回收機制。Epsilon的用例包括性能測試,內存壓力和虛擬機接口。它也能夠用於短時間工做。
  • lambda參數的局部變量語法應該將隱式類型表達式中的形式參數聲明的語法與局部變量聲明的語法對齊。這將容許var 在聲明隱式類型的lambda表達式的形式參數時使用。
  • 將擴展Java類文件格式以支持新的常量池形式CONSTANT_Dynamic。目標是下降開發新形式的可實現類文件約束的成本和中斷。
  • 與現有的橢圓曲線Diffie-Hellman方案相比,與Curve25519和Curve448密碼學的密切協議應該更加有效和安全。根據IETF的說法,兩條橢圓曲線Curve25510和Curve448能夠實現恆定時間實現和無異常的標量乘法,這種乘法更能抵抗一系列的旁道攻擊,包括定時和緩存攻擊。該提案的目標包括API和密鑰協商方案的實現,以及獨立於平臺的全Java實現的開發。可是,做爲提案的一部分,模塊化算法實現的複雜性和微妙性存在風險。
  • Flight Recorder將提供一個低開銷的數據收集框架,用於對Java應用程序和HotSpot JVM進行故障排除。Flight Recorder已成爲Oracle商業JDK的一項功能,但其源代碼將移至開放式存儲庫以使該功能廣泛可用。Iclouded將是用於生成和使用數據做爲事件的API,提供緩衝機制和二進制數據格式以及啓用事件的配置和過濾。該提案還要求爲OS,HotSpot和JDK庫提供事件。
  • 升級平臺API以支持Unicode版本10.0,從而使Java保持最新。預計將在如下類別中提供支持:oracle

    • Character, String在lang包中
    • NumericShaper在awt.font包中
    • Bidi,BreakIterator和Normalizer在text包
  • 實施ChaCha20和Poly1305加密算法。ChaCha2020是一種相對較新的流密碼,能夠取代舊的,不安全的R4流密碼。ChaCha20將與Poly1305驗證器配對。將提供ChaCha20和ChaCha20-Poly1305密碼實現,使用crypto.CipherSpiAPI 在SunJCE(Java密碼術擴展)提供程序中實現算法。
  • 加強Java啓動程序以運行做爲Java源代碼的單個文件提供的程序,所以這些程序能夠直接從源代碼運行。在學習Java的早期階段編寫小實用程序或開發人員時,單文件程序很常見。此外,單個源文件可能會編譯爲多個類文件,這會增長打包開銷。在這些狀況下,必須在運行以前編譯程序只是基於傳統的沒必要要的步驟。
  • 低開銷堆分析,提供了一種能夠經過JVM工具接口訪問Java堆分配的方法。這項工做的目標是以低開銷的方式獲取有關這些分配的信息,能夠經過編程接口訪問,並能夠對全部分配進行採樣。實施獨立性和提供關於實時和死堆的數據也是目標。糟糕的堆管理可能致使堆耗盡和垃圾收集顛簸。解決此問題的大多數工具都缺乏特定分配的調用站點,這些信息對於調試內存問題相當重要。
  • Pack200和Unpack200工具以及Pack200 API的棄用util.jar。Pack200是.jar文件的壓縮方案,旨在下降應用程序打包,傳輸和交付的磁盤和帶寬要求。項目負責人表示,維護成本和低使用率並不能證實其保留是合理的。
  • Z垃圾收集器(ZGC)是一種實驗性的、低延遲的垃圾收集器,用於處理大小從相對較小的堆到很是大的堆,大小爲許多tb級的堆。經過使用ZGC,暫停時間不該超過10ms,與使用G1收集器相比,應用程序吞吐量減小不該超過15%。ZGC還爲未來的特性和優化打下基礎。Linux/x64將是第一個得到ZGC支持的平臺。
相關文章
相關標籤/搜索