Java 11 正式釋出,告訴你到底應不應該升級
美國當地時間9月25日,Oracle 官方宣佈 Java 11 (18.9 LTS) 正式釋出,可在生產環境中使用!
本文,我們來看一下Java 11到底是什麼、他有什麼特別的、到底要不要升級到Java 11。
本次釋出的Java 11和2017年9月份釋出的Java 9以及 2018年3月份釋出的Java 10相比,其最大的區別就是:在長期支援( Long-Term-Support )方面,Oracle表示會對Java 11提供大力支援,這一支援將會持續至2026年9月。
上圖是一張Oracle 公佈的對於各個版本的JDK的Support Roadmap。途中列舉了Java 6 - Java 12的正式釋出時間以及支援計劃。
從中可以看出,在Java 11之前,Java 9和Java 10是不提供長期支援的,而上一個提供長期支援的版本是Java 8,其將會支援到2025年3月。
長期支援,表示Oracle會對其做長期的補丁、安全等擴充套件支援等。
下一個提供長期支援的版本將會是Java 17,其將於2021年釋出。

新特性
新發布的Java 11在新特性方面,提供了17個JEP(JDK Enhancement Proposal 特性增強提議)
上圖是Oracle公佈的Java 11包含的所有新特性,其中幾個重點的新特性為:
ZGC:可擴充套件的低延遲垃圾收集器
ZGC是一款號稱可以保證每次GC的停頓時間不超過10MS的垃圾回收器,並且和當前的預設垃圾回收起G1相比,吞吐量下降不超過15%。
Epsilon:什麼事也不做的垃圾回收器
Java 11還加入了一個比較特殊的垃圾回收器——Epsilon,該垃圾收集器被稱為“no-op”收集器,將處理記憶體分配而不實施任何實際的記憶體回收機制。 也就是說,這是一款不做垃圾回收的垃圾回收器。這個垃圾回收器看起來並沒什麼用,主要可以用來進行效能測試、記憶體壓力測試等,Epsilon GC可以作為度量其他垃圾回收器效能的對照組。大神Martijn說,Epsilon GC至少能夠幫助理解GC的介面,有助於成就一個更加模組化的JVM。
增強var用法
Java 10中增加了本地變數型別推斷的特性,可以使用var來定義區域性變數。儘管這一特性被很多人詬病,但是並不影響Java繼續增強他的用法,在Java 11中,var可以用來作為Lambda表示式的區域性變數宣告。
移除Java EE和CORBA模組
早在釋出Java SE 9的時候,Java就表示過,會在未來版本中將Java EE和CORBA模組移除,而這樣舉動終於在Java 11中實施。終於去除了Java EE和CORBA模組。
HTTP客戶端進一步升級
JDK 9 中就已對 HTTP Client API 進行標準化,然後通過JEP 110,在 JDK 10 中進行了更新。在本次的Java 11的更新列表中,由以JEP 321進行進一步升級。該API通過CompleteableFutures提供非阻塞請求和響應語義,可以聯合使用以觸發相應的動作。 JDK 11完全重寫了該功能。現在,在使用者層請求釋出者和響應釋出者與底層套接字之間追蹤資料流更容易了,這降低了複雜性,並最大程度上提高了HTTP / 1和HTTP / 2之間的重用的可能性。
到底要不要升級
2017年8月,JCP執行委員會提出將Java的釋出頻率改為每六個月一次。
2017年9月,Java 9釋出。
2018年3月,Java 10釋出。
2018年9月,Java 11釋出。
大部分人使用的JDK版本還是Java 8及以下版本,甚至某些公司的生產環境使用的還是JDK 1.6。
那麼,對於公司和開發者來說,到底要不要在生產及開發環境中升級和學習Java 11呢?
對於企業來說
對於企業來說,生產環境中的JDK版本升級到Java 11還是有必要的。主要有兩個原因:
1、Oracle會對Java 11提供長期支援,企業可以放心使用這一版本。並且下一個長期支援的版本會在三年後釋出,時間比較久遠。
2、Java 11確實提供了一些比較不錯的特性,尤其重要的是提供了ZGC,這是一款具有劃時代意義的垃圾回收器。優點不再贅述。有了ZGC,JVM的效能瓶頸可以被突破。
對於開發者來說
在編碼方面,Java 11並沒有像Java 8那樣變化巨大,畢竟Java 8提供了函數語言程式設計的能力,這也是很多開發者學習Java 8的一個重要原因。
但是,Java 11也並不是完全沒有提升,至少在新版本中,Java開發者終於可以擺脫老舊的HttpURLConnection了。新的HTTP API提供了對HTTOP/2等業界前沿標準的支援,提供了精簡而又友好的API介面。
所以,綜上所述,無論是對於企業還是開發者來說,升級Java 11都是有必要的,至少比Java 9和Java 10的必要性要大很多。至於這個必要性到底有多大呢,作者給一個簡單的說明:
如果你現在時候用的JDK/Java版本低於Java 8,先升級到Java 8。
如果你現在時候用的JDK/Java版本高於Java 7,那麼可以考慮升級到Java 11了。
當然,你可以直接從Java 6跳躍到Java 11。
那麼問題來了,你現在用的JDK/Java哪個版本?你準備學習並使用Java 11嗎?
直面Java第143期:反射的常見用法有哪些?
成神之路第013期:Java集合類—Map。
- MORE | 更多精彩文章 -
-
ofollow,noindex"> 屯書季,噹噹滿減優惠券又來了,還送實體書