新版任你發(fā),我用Java 8!
最近,新版本的JDK又雙叒叕發(fā)布了,目前已經(jīng)JDK 14 了,從2017年8月份開(kāi)始,JDK的更新頻率變成了每半年一次,將固定在每年的3月份和9月份發(fā)布新版本。
按照這個(gè)頻率,過(guò)不了多久,JDK 20 就要推出了…
最早的JDK發(fā)布于1996年,相信比很多讀者的年齡都要小,其發(fā)布頻次如下:
Java 8 與 Java 11 為當(dāng)前提供支持的LTS(長(zhǎng)期支持)版本;
2018年9月,隨著 Java 11 的發(fā)布,Java 10 自當(dāng)日起不再被支持。
Oracle 于 2019 年 1 月前為商業(yè)用途中的 Java 8 長(zhǎng)期支持,而針對(duì)非商用的更新將繼續(xù)提供,直至 2020 年 12 月;
此外,AdoptOpenJDK 也為 Java 8 提供免費(fèi)更新。
針對(duì) Java 11 的長(zhǎng)期支持將不再由 Oracle 提供,而是改由 OpenJDK 社區(qū)的 AdoptOpenJDK 提供。
各版本重大更新內(nèi)容
從Java第一個(gè)版本發(fā)布到現(xiàn)在,已經(jīng)有24年了,24年中共發(fā)布了14個(gè)版本,那么,。讓我們細(xì)數(shù)一下各個(gè)版本中增加的主要特性有哪些。
JDK 1.0
第一個(gè)版本于1996年1月23日發(fā)布,叫做為Oak。而真正第一個(gè)穩(wěn)定的版本JDK 1.0.2,被稱作Java 1。
JDK 1.1
- 內(nèi)部類
- JDBC
- JavaBeans
J2SE 1.2
- Java集合框架
- Swing圖像化API
- JIT編譯器
J2SE 1.3
- HotSpot JVM
- JNDI
- JPDA
- 用于實(shí)現(xiàn)動(dòng)態(tài)代理的類
J2SE 1.4
- assert 關(guān)鍵字
- 異常鏈
- NIO
J2SE 5.0
- 泛型
- 元數(shù)據(jù)
- 自動(dòng)封箱、自動(dòng)拆箱
- 枚舉
- 可變參數(shù)函數(shù)
- 強(qiáng)化for each循環(huán)
- Swing
- java.util.concurrent包
Java SE 6
- 支持JDBC 4.0
Java SE 7
- 在switch中使用字符串類型
- try-with-resources
- 新的invokedynamic字節(jié)碼指令
- 允許在數(shù)值字面值中加入下劃線
Java SE 8
- Lambda表達(dá)式
- Nashorn
- 移除了虛擬機(jī)內(nèi)存管理中的永久代
- 新的日期和時(shí)間 API
Java SE 9
- Jigsaw項(xiàng)目中將JDK模塊化
- jshell
- jlink
Java SE 10
- 局部變量類型推斷
- 適用于G1的多線程完全垃圾回收
Java SE 11
- ZGC
- Epsilon
Java SE 12
- Shenandoah
- Switch 表達(dá)式(預(yù)覽)
Java SE 13
- Text Blocks(預(yù)覽階段)
- 動(dòng)態(tài) CDS 歸檔
Java SE 14
- Records
- Switch 表達(dá)式
- 友好的空指針異常
- 打包工具
新版任你發(fā),我用Java 8
從Java 8推出至今,已經(jīng)很快的發(fā)展到了Java 14了,很多人做過(guò)調(diào)查,最終結(jié)果顯示都是Java 8的使用者最多。隨便放兩個(gè)統(tǒng)計(jì)結(jié)果大家感受下:
從這些統(tǒng)計(jì)中,可以看到使用的最多的還是Java 8,其次就是Java 11。之所以大多數(shù)人選擇Java 8和Java 11 ,是因?yàn)檫@兩個(gè)版本都是目前官方宣布長(zhǎng)期支持的版本。目前的Java 8和 Java 11 在2023年之前都會(huì)得到官方的持續(xù)支持。而剛剛在3月份發(fā)布的JDK 14,在今年的九月份之后就不再維護(hù)更新了。其他在JDK 8 之后發(fā)布的非LTS的版本的更新維護(hù)時(shí)間就是本年左右。在JDK的官網(wǎng)上可以看到JDK 8的更新記錄,最近一次是2020年1月14日。
另外,在兩個(gè)長(zhǎng)期支持的版本 JDK 8 和 JDK 11中,相比之下肯定是JDK 11 的新特性更多一些,但是并沒(méi)有真的非升不可的新特性。
一方面在JDK 8 是在JDK 7 推出三年后才推出,其中包含了很多重要的語(yǔ)言特性和技術(shù)升級(jí),比如函數(shù)式編程,還有一些小改動(dòng)如HashMap引入紅黑樹(shù)等。、
所以JDK 8使用者比較多,另外一方面,JDK 的升級(jí)是一項(xiàng)耗時(shí)耗 力的大工程,如果沒(méi)有足夠多的好處,很多公司和組織是不愿意大范圍升級(jí)的。
所以,可以預(yù)見(jiàn),在接下來(lái)的很長(zhǎng)一段時(shí)間中,JDK 8 將仍然是主流版本。不過(guò)值得一提的是,本次發(fā)布的JDK 14 確實(shí)增加了幾個(gè)可圈可點(diǎn)的新特性。
最后,新版本層出不窮,到底要不要升級(jí)?
作者認(rèn)為,如果生產(chǎn)環(huán)境中使用的是Java 8,目前完全沒(méi)必要升級(jí),如果要升級(jí)的話,首選Java 11;但是,作為開(kāi)發(fā)者,倒是自己可以本機(jī)安裝新版的JDK,學(xué)習(xí)并了解下新特性。
SO,新版任你發(fā),我用Java 8。
所以你正在使用的是哪個(gè)版本的JDK呢?