今天,我要用一張圖證明,你,真的不懂Java!不信你就看看吧!
圖在哪里?

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

以上描述出現在oracle官網中的“oracle Java SE支持路線圖”中,也就是這里:

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

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

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

直到Java6,都是sun公司在主導的,之所以Java7是在2011年發布那是因為這其中由于sun公司的經營不利被oracle給收購了,也就是在2009年的時候被oracle給收購了,被收購之后,Java7才得以在2011年發布,當然,這個時候其實主導的就是oracle不再是sun公司了!
oracle接受Java
sun被oracle收購之后,在2011年發布了Java7,這一年,Oracle承諾回到以前每兩年發布一次的發布周期,但是,就要到了2013年的時候,oracle卻宣布Java延期發布,說是有漏洞,在修復,于是最終Java8是在2014年發布的,
也就是Java7到Java8是隔了三年,那到了發布Java9的時候也是隔了三年,是在2017年發布的,這是不是意味著oracle不再遵循sun之前的每兩年發布一次,而是三年發布一次呢?
事情有了轉機,在2017年Java9發布之后,Java平臺的主架構師 Mark Reinhold 發出提議,要求將Java的功能更新周期從之前的每兩年一個新版本縮減到每六個月一個新版本,該提議獲得了通過,并在提出后不久生效,
于是從Java9開始就是每6個月發布一次新版本了,但是此前oracle想要每三年發布一次版本的念頭還沒有打消,于是乎,你猜的沒錯,就是LTS版本的發布周期……
OpenJDK
在這個程序中,誕生了一個很重要的社區組織,那就是OpenJDK,這是啥呢?
繼續看這張圖:

早在sun公司被oracle收購之前,sun公司在2006年的JavaOne大會上就決定對Java開放源代碼,于是在2009年4月15日正式發布OpenJDK,甲骨文在收購sun公司之后也接管了這個專案,
這就是我們熟知的OpenJDK了,那么相信你們也一定有這樣的疑問?
JDK和OpenJDK有啥區別
我們一般說的JDK自從sun被oracle收購之后,指的就是oracle JDK了,那這個與OpenJDK有啥區別呢?
Java Development Kit(JDK)是sun公司搞出來的,在2006年sun公司決定將其開源,但是在JDK中的原始碼有一部分是商業原始碼,就是JDK中的原始碼不全是sun公司的,那這塊代碼sun公司是無權將其開源的,這些代碼被稱為閉源的一些特性,但是sun還是講這部分閉源特性給去掉將JDK原始碼開源了,
但是由于開源后的代碼少了一些閉源特性,也就是少了一些商業代碼所提供的功能怎么辦呢?采取的辦法則是找尋具有相同功能的開源代碼做了替代,于是就成就了OpenJDK,
后來oracle不是收購了sun嘛,這個OpenJDK自然也就屬于oracle的了,于是oracle在OpenJDK的基礎之上,又增加了一些額外的功能特性,于是就成就了oracle JDK,也就是我們今天普遍說的JDK,實際上oracle JDK和OpenJDK沒啥重大的技術差別,只不過oracle JDK針對性的增加了一些功能,但是OpenJDK是包含sun公司之前創造的JDK的全部核心功能的,而且由于oracle的這一操作,oracle JDK就成了商業版本,在生產環境使用,還好是要規避一些風險的,而OpenJDK則是免費試用,原始碼開放!
那說到這里,你知道oracle JDK(簡稱JDK)和OpenJDK之間的差別了嗎?
OpenJDK只包含JDK中最核心的功能,JDK中的一些非核心功能OpenJDK是不包含的,比如oracle自行添加的一些商用功能以及額外特性,
可以說,OpenJDK是JDK的極簡版本,另外還有一個重要知識點:
我們一般說的JDK指的就是oracle的JDK,每次JDK的新版本發布,都是把OpenJDK中的更新拿過來加上自己的私有部分,也就形成了最終的新版本JDK,
比如說即將發布的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
- 清華AdoptOpenJDK鏡像:https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/
- 華為java-jdk鏡像:https://repo.huaweicloud.com/java/jdk/
- 各種JAVA JDK的鏡像分發:https://www.injdk.cn/
ok,今天的分享就到這里了,那么,看完本篇文章,你漲知識了嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/286275.html
標籤:java
