Java11的新功能有哪些
阿波羅的戰(zhàn)車
2018-07-10 11:01:40
TA貢獻2016條經(jīng)驗 獲得超9個贊
Java 11 JDK中已計劃的新功能 目前來看,JDK 11已有九個已經(jīng)確認的新功能,而且還有更多新功能仍在考慮之中。計劃的新功能包括: HTTP客戶端(標準),這個功能于JDK 9中引入并在JDK 10中得到了更新,現(xiàn)在終于轉(zhuǎn)正了。該API通過CompleteableFutures提供非阻塞請求和響應(yīng)語義,可以聯(lián)合使用以觸發(fā)相應(yīng)的動作。自從JDK 9和10中引入該功能后,JDK 11完全重寫了該功能,現(xiàn)在其實現(xiàn)完全是異步的。RX Flow的概念也得到了實現(xiàn),這樣就無需為了支持HTTP/2而創(chuàng)造許多概念了?,F(xiàn)在,在用戶層請求發(fā)布者和響應(yīng)發(fā)布者與底層套接字之間追蹤數(shù)據(jù)流更容易了。這降低了復(fù)雜性,并最大程度上提高了HTTP/1和HTTP/2之間的重用的可能性。Epsilon垃圾回收器,被稱為“no-op”回收器,它僅負責(zé)內(nèi)存分配,卻沒有實現(xiàn)任何實際的內(nèi)存回收機制。Epsilon回收器可以用于性能測試、內(nèi)存壓力測試和虛擬機接口。它還可以用于短生命周期的任務(wù)。lambda參數(shù)的局部變量語法,可以消除隱含類型表達式中正式參數(shù)定義的語法與局部變量定義語法的不一致。這樣就能在隱含類型的lambda表達式中定義正式參數(shù)時使用var了。Java的類文件格式將被擴展,以支持新的常量池,CONSTANT_Dynamic。其目標是降低開發(fā)新形式的可實現(xiàn)類文件約束帶來的成本和干擾。采用Curve25519和Curve448加密的密鑰交換比現(xiàn)有的Diffie-Hellman橢圓曲線密鑰交換方式更有效、更安全。根據(jù)IETF的資料,Curve25519和Curve448兩種橢圓曲線采用常量時間的實現(xiàn)方式,以及不會發(fā)生異常的數(shù)乘實現(xiàn),能更好地抵抗各種旁路攻擊,包括時序攻擊、緩存攻擊等。該提案的目標是為密鑰交換方法提供一個API和實現(xiàn),同時開發(fā)一個平臺無關(guān)、純Java的的實現(xiàn)。由于該提案采用了復(fù)雜且精密的模算數(shù),因此還是有風(fēng)險的。飛行記錄儀(Flight Recorder)將提供低開銷的數(shù)據(jù)收集框架,用來調(diào)試Java應(yīng)用程序和HotSpot JVM。飛行記錄儀是Oracle的商業(yè)版JDK的功能,但在JDK 11中,其代碼將移動到公開代碼庫中,這樣所有人都能使用該功能了。Iclouded將作為API,以事件的形式產(chǎn)生或消耗數(shù)據(jù),同時提供緩存機制、二進制數(shù)據(jù)工具,同時支持配置和事件過濾。該提案還提議為OS、HotSpot和JDK庫提供事件。更新platform API以支持Unicode版本10.0,從而使Java跟上潮流。預(yù)計以下的類將支持:lang包中的Character和Stringawt.font包中的NumericShapertext包中的Bidi、BreakIterator和Normalizer實現(xiàn)ChaCha20和Poly1305加密算法。ChaCha20是種相對較新的流加密算法,能代替舊的、不安全的R4流加密。ChaCha20將與Poly1305認證算法配對使用。ChaCha20和ChaCha20-Poly1305加密實現(xiàn)將通過crypto.CipherSpi API于SunJCE(Java加密擴展)中提供。增強Java啟動器,使之能夠運行單一文件的Java源代碼,使得應(yīng)用程序可以直接從源代碼運行。單文件程序常見于小型工具,或開發(fā)者初學(xué)Java時使用。而且,單一源代碼文件有可能會編譯成多個類文件,這會增加打包開銷。由于這些原因,在運行程序之前進行編譯,已成為了不必要的步驟。Java JDK 11仍在開發(fā)中的新功能 Java 11的創(chuàng)建者們還在考慮幾個對JDK 11的變更或新功能的提案: 給Java添加raw字符串字面值。這樣可以更容易地以人類可閱讀的形式書寫字符序列,而無需特殊的Java標記。這樣也能更容易地將非Java語法的字符串提供給Java使用,還能支持多行字符串,而無需使用特殊的標記。擴展switch語句,使之能作為語句或表達式使用。這樣還能改進switch處理null值的方式。這些改動可以簡化編程,同時為switch支持模式匹配做準備。嵌套的訪問控制,對應(yīng)于Java當(dāng)前的嵌套類型。嵌套可以讓邏輯上屬于同一代碼實體但被編譯到不同的類文件中的類互相訪問對方的私有成員,而無需讓編譯器插入擴大訪問權(quán)限的方法。JDK 11刪除的功能 Java EE和CORBA模塊從Java SE9就成了不推薦使用(deprecated),并計劃在未來的版本中刪除。這個未來版本就是JDK 11。 Java SE 6于2006年12越發(fā)布,它為Java EE平臺提供了整套的Web服務(wù)技術(shù)棧:JAX-WS(Java API for XML-based Web Services),JAXB(Java Architecture for XML Binding),JAF(JavaBeans Activation Framework),以及Common Annotations for Java。這些年來,Java EE版本在不斷進化,這給Java SE造成了許多麻煩,例如加入與Java SE無關(guān)的技術(shù),以及同時維護兩個Java版本的困難變得更大。由于獨立的Java EE版本由第三方網(wǎng)站提供,Oracle說Java SE或JDK中已經(jīng)沒有必要提供Java EE了。 當(dāng)然,一些依賴于JDK中的Java EE API及工具的應(yīng)用程序?qū)o法編譯或運行。將JDK 6、7或8移植到新版本時將會產(chǎn)生二進制不兼容和源代碼不兼容。Oracle說,受到這些影響的開發(fā)者可以部署相應(yīng)的Java EE版本。 CORBA來自于二十世紀九十年代,Oracle說,現(xiàn)在用CORBA開發(fā)現(xiàn)代Java應(yīng)用程序已經(jīng)沒有意義了,維護CORBA的成本已經(jīng)超過了保留它帶來的好處。 但是刪除CORBA將使得那些依賴于JDK提供部分CORBA API的CORBA實現(xiàn)無法運行。目前還沒有第三方CORBA版本,也不確定是否會有第三方愿意接手CORBA API的維護工作。 JavaFX已經(jīng)被移除,因此已經(jīng)與Java JDK每年兩次的更新無關(guān)
舉報