前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JDK的版本号解惑

JDK的版本号解惑

作者头像
bisal
发布2021-09-06 15:57:57
4.6K0
发布2021-09-06 15:57:57
举报
文章被收录于专栏:bisal的个人杂货铺

做Java开发的时候,经常看到这些所谓的“同义词”,Java8、JDK8、JDK1.8、J2SE8、J2SE1.8,他们之间的区别和关系如下所示,

(1) Java与JDK的区别与关系

这个应该是看问题的角度不同,在用户眼中,Java是Java应用,而在程序员眼中,JDK是Java开发工具,所以Java等价于JDK。

(2) JDK8与JDK1.8的区别与关系

JDK8或者JDK1.8是由于自从JDK1.5/JDK5命名方式改变后遗留的新旧命令方式问题,所以JDK8或者JDK1.8也是同一个东西。

(3) JDK与J2SE的区别与关系

Java有3个版本:J2SE(Java Platform,Standard Edition)、J2EE(Java Platform,Enterprise Edition)、J2ME(Java Platform,Micro Edition),所以J2SE是3个版本中的其中一个,即标准版本。

现在最新的Java版本就是JDK16

但是你可以看到他写了这么一行,意思是如果是个人用途或者开发用途,JDK是免费使用的,但是如果是其他的用途,以前免费的JDK license就不再起作用了,说白了,就是如果是商业用途使用最新的JDK,现在不是免费了,

The new license permits certain uses, such as personal use and development use, at no cost -- but other uses authorized under prior Oracle JDK licenses may no longer be available.

Oracle收购了SUN,他的这种收费策略和标准,自然影响到了MySQL、JDK等技术和产品。你可以随意下载,还可以使用,但是一旦用在了商业领域,以赚钱为目的,你就得注意了,我可以暂时不向你收费,但是等你做大做强了,我就能给你发律师函了,你得赔我的license,甚至能让你赔到倒闭,你说凭什么?就是因为你用了我的产品,我的产品,我说了算。是不是感受到了美帝国主义的色彩?

其实这个也是为什么我们要推动国产化的最重要原因,掐脖子的问题,未雨绸缪,必须解决。

从如下归档链接,我们能找到JDK各版本的地图,

https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html

注意到JDK8这提到了两个8u211和8u202,这其实就是个分水岭,JDK8 8u202及以下是免费的,从JDK8 8u211及以上,就都是收费了,因此我们下载使用的时候,就得有所针对了,如果是商业用途,不要侥幸。

这个最新的免费版本号,其实包括了两个,8u201和8u202,这个就是JDK版本号的命名问题了。从2014年10月发布Java SE 7 Update 71(Java SE 7u71)开始,Oracle在发布Oracle JDK关键补丁更新(CPUs:Critical Patch Updates)的同时一般会发布相应的补丁集更新(PSUs:Patch Set Updates)。其中Oracle JDK关键补丁更新(CPUs)包含安全漏洞修复和重要漏洞修复,Oracle强烈建议所有Oracle JDK用户及时升级到最新的CPU版本,Oracle JDK 关键补丁更新(CPUs)版本号采用奇数编号。Oracle JDK补丁集更新(PSUs)包含相应CPUs中的所有修复以及其他非重要修复,仅当受到Oracle JDK关键补丁更新(CPUs)版本之外的其他漏洞的影响时才应当使用相应的补丁集更新 (PSUs),Oracle JDK补丁集更新(PSUs)版本号采用偶数编号。因此,一般情况下我们只要下载奇数编号的最新版本更新就行了。

简单来讲,Oracle将奇数版本作为BUG修正并全部通过检验的版本,Oracle官方建议用在生产环境最好使用这个版本。Oracle会在奇数版本之后同时发布一个偶数版本,偶数版本包含了奇数版本所有的内容,以及未被验证的BUG修复,Oracle官方建议,除非你受到未验证BUG影响,急需BUG修复才使用这个版本。因此,8u201是CPUs,关键补丁更新。8u202是PSUs,补丁集更新,推荐下载8u201。

网上找到一张图,虽然没更新到最新的版本,但是将大多JDK版本历程介绍清楚了,能了解很多历史,

不得不佩服歪果人的想象力,从JDK1.2.2开始,主要版本(如1.3、1.4、5.0)都是以鸟类或哺乳动物来命名的,而他们的bug修正版本(如1.2.2、1.3.1、1.4.2)都是以昆虫命名的。

其中有几个关键的时间节点,例如JDK1.5升级比较大,那为了表明该版本的重要性,于时将Java版本从原来的J2SE 1.5更名为Java SE 5.0(内部版本号1.5.0),后续的Java版本号都是Java SE X的这种形式。JavaSE 10的时候,此时对应的JDK版本不再是JDK1.10这种形式,而是变成了JDK10这种形式,一直到最新的JavaSE 16对应的JDK16。

这是一张Java各版本的发布和支持时间地图,

另外,自JDK 5.0起,甲骨文改变Java版本号命名方式,Java以两种方式发布更新,Limited Update包含新功能和非安全修正,Critical Patch Updates(CPUs)只包含安全修正。因此,其版本号将有所改变,Limited Update更新使用的版本号将是20的倍数,而CPU更新采用的版本号将是上一个Limited Update版本号加上五的倍数后的奇数。

有点懵了?

举例来说,JDK 7的一个Limited Update版本是7u40,接下来的三个CPU版本号将是7u45(40+5),7u51(40+2x5后的第一个奇数),7u55(40+3x5),随后发布的Limited Update版本号是7u60,三个CPU版本号分别为7u65、7u71和7u75。

Java 8的前两个CPU是8u5、8u11,下一个Limited Update是8u20,8u202最近一个Limited Update是8u60,可以看到,中间推出很多CPU,

8u65 8u66 8u71 8u72 8u73 8u74 8u77 8u91 8u92 8u101 8u102 8u111 8u112 8u121 8u131 8u141 8u144 8u151 8u152 8u161 8u162 8u171 8u172 8u181 8u191 8u192 8u201 8u202

P.S. 8u73、8u74、8u144,这几个号,好像和计算规则有些不符,没再深究了,如果谁知道,可以留个言。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/07/20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (1) Java与JDK的区别与关系
  • (2) JDK8与JDK1.8的区别与关系
  • (3) JDK与J2SE的区别与关系
相关产品与服务
脆弱性检测服务
脆弱性检测服务(Vulnerability detection Service,VDS)在理解客户实际需求的情况下,制定符合企业规模的漏洞扫描方案。通过漏洞扫描器对客户指定的计算机系统、网络组件、应用程序进行全面的漏洞检测服务,由腾讯云安全专家对扫描结果进行解读,为您提供专业的漏洞修复建议和指导服务,有效地降低企业资产安全风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档