看了這張圖,慶哥決定放棄Java了?
慶哥
讀完需要
速讀僅需 4 分鐘
唉,最近慶哥發(fā)現,Java 真的是最熟悉的陌生人啊,一張圖讓我覺得自己真的不懂 Java!
今天,我就要用這張圖去證明,你,也真的不懂 Java!不信你就看看吧!
圖在哪里?

就是這張圖,有人要說了,什么啊,這不就是個介紹 Java 版本歷史的圖嗎?這有啥,還敢說我不懂 Java?別著急,聽慶哥慢慢給你說,保準你懷疑自我!
/ LTS 是啥? /
首先第一個問題,這張圖中有標有 LTS 的版本,比如以下這幾個:
Java SE 8(LTS)
Java SE 11(LTS)
Java SE 17(LTS)
那這個是啥意思呢?這還不簡單,這是 Java 的長期支持版本,沒錯,LTS 代表長期支持版本,目前 Java 中已經發(fā)布的 Java8 和 11 是長期支持版本,那么,你可知道長期支持版本的發(fā)布周期呢?
我們來看,目前三個出現的長期支持版本的發(fā)布時間:
Java 8 是 2014 年發(fā)布
Java 11 是 2018 年發(fā)布
Java 17 是即將在今年 2021 發(fā)布
那么你說 Java 長期支持版本的發(fā)布周期是多少呢?四年還是三年?我告訴你吧,是三年,何以證明,我們可以從官方網站上找到說明:看圖

以上描述出現在 oracle 官網中的“oracle Java SE 支持路線圖”中,也就是這里:
地址是:https://www.oracle.com/java/technologies/java-se-support-roadmap.html ( https://www.oracle.com/java/technologies/java-se-support-roadmap.html )
ok,那么現在我們了解到 Java 的長期支持版本是每三年發(fā)布一次,在今年,也就是 2021 年 9 月即將發(fā)布的 Java17 就是一個新的長期支持版本!
/ Java 的版本發(fā)布 /
知道了長期支持版本的發(fā)布周期,那其他的呢?其實 Java 的版本還有這樣的分類:
特性版本,比如 Java 8u20
功能版本,比如 Java 8u40
主要版本,比如 LTS
那么對于主要版本 LTS 我們很清楚是啥,主要就是這個特性版本和功能版本,其實一句話就可以理解:
功能版本就是最終發(fā)布的 Java8,Java9,Java10……
另外你也需要知道,對于功能版本,我們可以將其稱為非 LTS 版本,這里有張圖:

可以看出非 LTS 版本是每半年也就是每隔 6 個月發(fā)布一次,但是是在 Java9 之后才開始的,為啥,還看我們原來的圖,你看這里:

看到沒,從 J2SE 1.2 開始,sun 公司基本是每隔兩年發(fā)布一次 Java 的新版本,但是為什么 Java6 發(fā)布之后卻隔了近五年時間呢?
維基百科上有句話值的推敲;
Java 7 發(fā)布后,Oracle 承諾回到以前每兩年發(fā)布一次的發(fā)布周期。
咋回事,這里面是有故事的,看我整理的一張圖:

直到 Java6,都是 sun 公司在主導的,之所以 Java7 是在 2011 年發(fā)布那是因為這其中由于 sun 公司的經營不利被 oracle 給收購了,也就是在 2009 年的時候被 oracle 給收購了,被收購之后,Java7 才得以在 2011 年發(fā)布,當然,這個時候其實主導的就是 oracle 不再是 sun 公司了!
/ oracle 接受 Java /
sun 被 oracle 收購之后,在 2011 年發(fā)布了 Java7,這一年,Oracle 承諾回到以前每兩年發(fā)布一次的發(fā)布周期。但是,就要到了 2013 年的時候,oracle 卻宣布 Java 延期發(fā)布,說是有漏洞,在修復,于是最終 Java8 是在 2014 年發(fā)布的。
也就是 Java7 到 Java8 是隔了三年,那到了發(fā)布 Java9 的時候也是隔了三年,是在 2017 年發(fā)布的,這是不是意味著 oracle 不再遵循 sun 之前的每兩年發(fā)布一次,而是三年發(fā)布一次呢?
事情有了轉機,在 2017 年 Java9 發(fā)布之后,Java 平臺的主架構師 Mark Reinhold 發(fā)出提議,要求將 Java 的功能更新周期從之前的每兩年一個新版本縮減到每六個月一個新版本。該提議獲得了通過,并在提出后不久生效。
于是從 Java9 開始就是每 6 個月發(fā)布一次新版本了,但是此前 oracle 想要每三年發(fā)布一次版本的念頭還沒有打消,于是乎,你猜的沒錯,就是 LTS 版本的發(fā)布周期……
/ OpenJDK /
在這個過程中,誕生了一個很重要的社區(qū)組織,那就是 OpenJDK,這是啥呢?
繼續(xù)看這張圖:
早在 sun 公司被 oracle 收購之前,sun 公司在 2006 年的 JavaOne 大會上就決定對 Java 開放源代碼,于是在 2009 年 4 月 15 日正式發(fā)布 OpenJDK。甲骨文在收購 sun 公司之后也接管了這個項目。
這就是我們熟知的 OpenJDK 了。那么相信你們也一定有這樣的疑問?
1
JDK 和 OpenJDK 有啥區(qū)別
我們一般說的 JDK 自從 sun 被 oracle 收購之后,指的就是 oracle JDK 了,那這個與 OpenJDK 有啥區(qū)別呢?
Java Development Kit(JDK)是 sun 公司搞出來的,在 2006 年 sun 公司決定將其開源,但是在JDK 中的源碼有一部分是商業(yè)源碼,就是 JDK 中的源碼不全是 sun 公司的,那這塊代碼 sun 公司是無權將其開源的,這些代碼被稱為閉源的一些特性,但是 sun 還是講這部分閉源特性給去掉將 JDK 源碼開源了。
但是由于開源后的代碼少了一些閉源特性,也就是少了一些商業(yè)代碼所提供的功能怎么辦呢?采取的辦法則是找尋具有相同功能的開源代碼做了替代,于是就成就了 OpenJDK。
后來 oracle 不是收購了 sun 嘛,這個 OpenJDK 自然也就屬于 oracle 的了,于是 oracle 在 OpenJDK 的基礎之上,又增加了一些額外的功能特性,于是就成就了 oracle JDK,也就是我們今天普遍說的 JDK,實際上 oracle JDK 和 OpenJDK 沒啥重大的技術差別,只不過 oracle JDK 針對性的增加了一些功能,但是 OpenJDK 是包含 sun 公司之前創(chuàng)造的 JDK 的全部核心功能的,而且由于 oracle 的這一操作,oracle JDK 就成了商業(yè)版本,在生產環(huán)境使用,還好是要規(guī)避一些風險的,而 OpenJDK 則是免費試用,源碼開放!
那說到這里,你知道 oracle JDK(簡稱 JDK)和 OpenJDK 之間的差別了嗎?
OpenJDK 只包含 JDK 中最核心的功能,JDK 中的一些非核心功能 OpenJDK 是不包含的,比如 oracle 自行添加的一些商用功能以及額外特性。
可以說,OpenJDK 是 JDK 的極簡版本,另外還有一個重要知識點:
我們一般說的 JDK 指的就是 oracle 的 JDK,每次 JDK 的新版本發(fā)布,都是把 OpenJDK 中的更新拿過來加上自己的私有部分,也就形成了最終的新版本 JDK。
比如說即將發(fā)布的 Java17,目前 oracle 上是找不到的,最新的 Java17 相關信息是在 OpenJDK 上的,你看:

/ JDK 的不同廠商 /
通過上述描述,我們知道 OpenJDK 就是包含大部分原有 JDK 的核心,而現在說的 JDK 指的是 oracle 在 OpenJDK 之上加上私有特性形成的 oracle JDK,因為現在 OpenJDK 是被 oracle 主導的,那么 oracle JDK 也就享有特權直接叫 JDK。
可是不管怎么說,OpenJDK 是開源的,不僅你 oracle 可以拿過來加上私有特性形成你的 oracle JDK,其他廠商也可以這么做,比如有如下這些:
AdoptOpenJDK:算是半官方,這個是由 OpenJDK 社群維護的
Amazon(亞馬遜) Corretto JDK
阿里 Dragonwell JDK
騰訊 Kona JDK
華為畢昇 JDK
等等……其本質就是拿 OpenJDK 加上私有特性構建而成!
/ JDK 下載鏡像 /
我們一般下載 JDK 都是去 oracle 的官網上下載,畢竟這是正宮嘛,但是由于 oracle 的一些 S 操作加上一些其他原因下載異常的慢有的時候,為了解決這個問題,國內有很多不錯的 JDK 下載鏡像網站,這里推薦幾個:
嗖嗖下載 java jdk 鏡像:http://www.sousou88.com/spec/java.html ( http://www.sousou88.com/spec/java.html )
清華 AdoptOpenJDK 鏡像:https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/ ( https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/ )
華為 java-jdk 鏡像:https://repo.huaweicloud.com/java/jdk/ ( https://repo.huaweicloud.com/java/jdk/ )
各種 JAVA JDK 的鏡像分發(fā):https://www.injdk.cn/ ( https://www.injdk.cn/ )
ok,今天的分享就到這里了,那么,看完本篇文章,你漲知識了嗎?
順便再說一句,放棄Java,不存在的,畢竟很有錢途!

放棄鴻蒙升級,也要搞懂Java的這個問題!

請馬上卸載Notepad++...!

