放弃鸿蒙升级,也要搞懂Java的这个问题!

编码之外

共 4337字,需浏览 9分钟

 ·

2021-06-08 12:14


庆哥

读完需要

12
分钟

速读仅需 4 分钟

昨天的鸿蒙发布直播看了嘛?今天你的手机升级了嘛?我都没,为啥,我被一个Java中超简单的问题弄得晕头转向,啥问题呢?听庆哥给你慢慢道来……

告诉庆哥,你对 Java 的版本号以及 JDK 的命名真正清楚嘛?比如:

  1. Java8

  2. Java SE 8.0

  3. JDK1.8

  4. ……

知道这些是怎么回事嘛?知道还有个 Java 2 的说法嘛?知道还有以下说法嘛?

  1. J2SE1.3

  2. J2SE1.4

  3. ……

现在已经 6 月份了,到了 9 月份,一个新的长期支持版本,Java17 就要发布了,啥?Java 版本都到 17 了?不不不,我一直在用 JDK1.8 啊,咦,JDK1.8?Java17?

这是怎么回事呢?别着急,今天庆哥带你彻底搞懂这些蜜汁操作!

/ Java 版本和 JDK 版本 /

要搞懂这些令人疑惑的人命名,那理解的一个关键就是 Java 版本和 JDK 版本了,首先啊,咱们常说 Java 有三个版本,对吧,分别是:

  1. JavaSE(Java Platform,Standard Edition)Java 标准版

  2. JavaME(Java Platform,Micro Edition)Java 微型版

  3. JavaEE(Java Platform,Enterprise Edition) JAVA 企业版

其实啊,你只要关注 JavaSE 就行,这个是 Java 的标准版本,像 ME 忽视就行,至于 JavaEE 是在 JavaSE 的基础上升级而来的一套规范,我们平常做 Java 开发,你想下,是不是就是需要个 JDK,这个 JDK 是与 JavaSE 相对应的。

完了,我知道你们又懵了……

1


   

JavaEE 到底是个啥

那我就再详细点给大家说说这个 JavaEE,其实我们平常听到最多的,用到最多的就是 JavaSE,因为人家是 Java 的标准版本,但是这个 JavaSE 提供的是 Java 的核心功能,一般是用来开发桌面应用的,但是企业级开发,我们做的项目啥的就不简简单单是个桌面级应用了,一般是 web 应用,动态网站这些!

那么问题来了,面对企业级的比较大的项目开发,JavaSE 提供的一些核心基础功能用倒是可以用,但是用起来太费劲了,很多东西都得自己从头造轮子,一步步的用代码从最基础的开始写,费劲啊。

于是乎,在 JavaSE 的基础上整理出一套规范,其目的就是用来解决企业级开发中遇到的一些问题,这些问题就是单独用 JavaSE 去整比较费劲的东西!

那啥又是规范呢?说白了,就是规定你该怎样怎样去做,比如面对常见的 web 请求处理,我们知道有 servlet,那 JavaEE 就对 servlet 做了规范,也就是说你如果要用 servlet 去处理一个 web 请求,首先嘞,你必须得实现一个 HttpServlet 类,这还没完,你这个类还得继承 Servlet 接口,而且你还得实现它的接口方法,哪些呢?就是 doGet 和 doPost 这些,咋样,熟悉吧,再比如你这个 doGet 方法还必须得接收两个参数……

你看,JavaEE 就给你规定了 Servlet 得按照这个规定去使用,于时一些其他厂商就围绕 JavaEE 的这些规范去做一些具体的实现,比如我们常见的 tomcat,它被成为 servlet 容器,其中的 servlet 实现就是给予 JavaEE 对 servlet 做出的规范!

说的再简单点,JavaEE 规定了 servlet 如何去处理 web 请求,然后具体的厂商根据这个规定去做具体的实现和增强,然后就搞出了 tomcat……

那 Spring 是啥呢?最开始的 Spring 就是为了解决 JavaEE 在使用中遇到的一些问题,比如 JavaEE 中规定的 servlet,那 spring 中的 spring-mvc 就是对这个 servlet 的进一步封装,从而让其变得更加好用!

实际上,spring 中大量使用了或者实现了 JavaEE 的一些规范标准!说的再直白点,你 JavaEE 不是一组规范嘛,规定了啥啥啥该怎么用,那我 spring 就这样做,你规范中确实比较好用的我就直接拿来用,不好用的我就在加工处理封装成更好用的,可以简单的理解成 spring 就是 JavaEE 的升级版,或者超强实现版!

随着时间的发展,JavaEE 的更新太慢了,而 Spring 就非常迅速,而且人家超级好用,因此,慢慢的 JavaEE 早就落后十万八千里了。

你像我们平常做开发,就下载配置个 JDK,其实就是对应的 JavaSE,然后我们使用的一般就是以 Spring 为主的框架了,那 JavaEE 体现在哪里,Spring 框架中大量使用和实现了 JavaEE 规范,而 JavaEE 又是在 JavaSE 基础上升级而来的一组规范,那可不就是一个 JDK 就行了!

所以,现在你看一些关于 JavaEE 开发框架的书,其实都是在介绍 SSM 这些框架的,说白了,JavaEE 慢慢也就成了各种给予其规范实现的一些框架了,为首的就是老大哥 Spring 了!

2


   

Java 版本的蜜汁操作

以上花了较多篇幅去介绍到底啥是 JavaEE 以及和 Spring 的一些关系,你就记住:

用 Spring 就对了


那我们再来看 Java 版本号的这些神奇操作,之前也说了,理解的关键就是 Java 版本和 JDK 版本,重点理解如下:

我们无论说 Java 版本还是 JDK 版本都是对于 JavaSE 这个标准版本而言,最终的则是要知道,每个 Java 版本其实是对应一个具体的 JDK 版本,也就是说 Java 是语言,JDK 是 Java 这门语言的开发工具包,所以 Java 的版本可以说是抽象上的宏观上的一个概念,有其自己的版本名称,对应的具体的实实在在存在的则是 JDK 了


记住啦,一个 Java 版本对应着一个 JDK 版本!

我这里画了一个图,大家一起来看下:

也就是最开始啊,Java 的早期版本是在 1995 年发布的,那个时候是叫做 Oak,但是这个商标被注册了,于时在 1996 年的时候更改为 Java,那这个时候 Java 的第一个正式版本 Java1.0 就发布了,于此同时对应的开发工具包 jdk 的版本就是 JDK1.0 了。

3


   

J2SE 是个啥

那随着时间的发展,Java 的版本不是一直叫做 Java1.X 这种形式,在到了 1998 年的时候,Java 的平台更名为 J2SE,所以从那个时候,Java 的版本命名就成了 J2SE 1.2 这种形式,也就是这里:

那与之对应的 JDK 的版本就是 JDK1.2 和 JDK1.3 这种形式了!

4


   

JDK1.5 的重大变化

那到了 2004 年的时候,Java 版本变化比较大,此时对应的 JDK1.5 升级比较大,那为了表明该版本的重要性,于时将 Java 版本从原来的 J2SE 1.5 更名为 Java SE 5.0(内部版本号 1.5.0),于是后续的 Java 版本号都是 Java SE X 的这种形式,也就是这样:

这里需要注意的是,直到 2017 年 JavaSE 9 的发布,此时对应的 JDK 版本都是 JDK1.X 这种形式,但是到了 2018 年 JavaSE 10 的发布就变了!

5


   

JDK 命名的变化

到了 2018 年发布 JavaSE 10 的时候,此时对应的 JDK 版本不再是 JDK1.10 这种形式,而是变成了 JDK10 这种形式,其实这个也是比较好理解的!

那后续的版本就是这个样子了:

直到现在一直就稳定这样的命名了,比如最新的 JavaSE 16 对应的 JDK16,那到了这里,又有个蜜汁操作了,我们看下 Oracle 的官网上的 JDK 变化:

看到没,这里有 JDK7,JDK8 还有 JDK9,按照我们之前说的不应该是这样的嘛:

所以说啊,关于 Java 的版本和 JDK 版本命名真的挺乱的,在 2018 年更新 JavaSE 10 之后,对应的 JDK 版本叫做 JDK10,后续为了方便统一,之前的 JDK1.8 也可以叫做 JDK8 了!

不过到了现在,Java 的版本号比较稳定了,也就是 Java SE XX 这种形式,比如即将发布的 Java SE 17,这是一个长期受支持的版本!那对应的 JDK 版本就是 JDK17 了。

6


   

查看 JDK 版本的更新内容

作为一个 Java 程序员,你要随时关注着 Java 的版本更新,以及 JDK 的升级带来了哪些新特性,那该如何关注这些呢?

其实就是这个:

比如我们点击最新的 JDK16:

不知道的赶紧收藏这个地址吧:https://docs.oracle.com/en/java/javase/index.html ( https://docs.oracle.com/en/java/javase/index.html )

7


   

查看 Javav 版本变化

另外这里再提供一个随时查看 Java 版本变化的地址,可以看到一个比较直观的图片,就是这样的:

是不是很直观呢?

赶紧收藏地址吧:https://zh.wikipedia.org/wiki/Java%E7%89%88%E6%9C%AC%E6%AD%B7%E5%8F%B2 ( https://zh.wikipedia.org/wiki/Java%E7%89%88%E6%9C%AC%E6%AD%B7%E5%8F%B2 )

/ 小结 /

以上内容是我根据自己的经验以及查找相关资料所得,当然,其中的内容也有可能存在一些错误,比如关于 JavaEE 那块的理解,我理解的可能不够准确,因此,如果你在阅读本文中发现描述不够准确或有误的地方,还请给予我一定的反馈,非常感谢!

大家一起学习,一起进步!


请马上卸载Notepad++...!


WOC!挑战全网Java自学路线,B站找不到的那种!


公司能不能监控到大家的微信聊天内容?


那些学计算机的女生后来都怎么样了?


计算机应届生工资到底有多高?



喜欢就点个在看再走吧

浏览 41
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报