2020年3月17日,Oracle公司正式發(fā)布了JDK14席舍。共新增了16項(xiàng)新特性。
新的語言特性
新的語言特性有7項(xiàng)哮笆,包括3項(xiàng)正式特性與4項(xiàng)非正式特性来颤。
switch表達(dá)式(JEP361)
友好的空指針異常(JEP358)
早期的JDK運(yùn)行后提示空指針異常:java.lang.NullPointerException at Test02NullPointerException .main( Test02NullPointerException .java:7)
無法確定是到底car為空還是engine為空
在JDK14版本中,開啟參數(shù)
-XX:ShowCodeDetailsInExceptionMessages
可以更好的指定哪個(gè)底放出現(xiàn)異常
非易失性映射字節(jié)緩沖區(qū)(JEP352)
在JDK14中稠肘,新增了特地給JDK的文件映射模式福铅,可以使用FileChannel創(chuàng)建引用非易失性存儲(chǔ)器的MappedByteBuffer。
record(JEP359)
record提供了一種緊湊的語法來聲明類项阴,這是Preview預(yù)覽功能滑黔。
record可以看作是一種新的類型,類似于枚舉环揽,只需要使用record定義名稱及它的屬性即可略荡,如:
record Person(String name,int age){}
系統(tǒng)會(huì)自動(dòng)生成Person的標(biāo)準(zhǔn)的成員:
Person 中每個(gè)屬性都定義為private final 修飾的字段。
每個(gè)屬性都提供公共的getter方法歉胶。
有一個(gè)公共構(gòu)造方法撞芍,構(gòu)造方法簽名與聲明相同,即 Person(String name,int age)
會(huì)生成equals()/hashCode()方法的實(shí)現(xiàn)
會(huì)生成toString()方法的重寫
注意:record 不能繼承跨扮,record類隱含是final類即也不能被繼承序无。
編譯:java -enable-preview -source 14 類名.java
運(yùn)行:java -enable-preview 類名
instanceof模式匹配(JEP305)
在JDK14中,通過對(duì)instanceof運(yùn)算符進(jìn)行模式匹配來增強(qiáng)java語言衡创,這是Preview預(yù)覽功能帝嗡。
文本塊(JEP368)
在JDK13中引入了文本塊的預(yù)覽,在JDK14中進(jìn)行二次預(yù)覽璃氢,為了更方便的對(duì)HTML哟玷,XML,JSON一也,SQL這些字符串進(jìn)行更好的閱讀和維護(hù)巢寡。
外部存儲(chǔ)器API(JEP370)
外部存儲(chǔ)器API主要包含三個(gè)類:
MemorySegment
MemoryAddress
MemoryLayout
該功能是作為孵化器模塊引入的,為了讓更多的Java社區(qū)的人員參與測(cè)試與反饋椰苟。
垃圾回收修改
G1的NUMA內(nèi)存分配優(yōu)化(JEP345)
non-uniform memory access 非統(tǒng)一的內(nèi)存訪問
JFR事件流(JEP349)
JDK flight Recorder
移除CMS垃圾收集器(JEP363)
棄用Parallel Scavenge和Serial Old垃圾收集算法(JEP366)
MacOS系統(tǒng)上的ZGC實(shí)驗(yàn)(JEP364)
Windows系統(tǒng)上的ZGC實(shí)驗(yàn)(JEP365)
移除包和功能
棄用Solaris和SPARC端口(JEP362)
移除Pack200(JEP367)
添加了一些工具
打包工具(JEP343)
想創(chuàng)建一個(gè)用于打包的獨(dú)立的java工具抑月,處于孵化階段。