Java程序员必须看的一张图,建议偷偷看!解锁一大波新姿势了!
Posted 程序员庆哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java程序员必须看的一张图,建议偷偷看!解锁一大波新姿势了!相关的知识,希望对你有一定的参考价值。
今天,我要用一张图证明,你,真的不懂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,今天的分享就到这里了,那么,看完本篇文章,你涨知识了吗?
以上是关于Java程序员必须看的一张图,建议偷偷看!解锁一大波新姿势了!的主要内容,如果未能解决你的问题,请参考以下文章
冒着被开除的风险也要给你们看的 Spring Cloud 入门总结