Java方面JDK各版本的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java方面JDK各版本的区别相关的知识,希望对你有一定的参考价值。

一、java的版本区别
常用的 java 程序分为 Java SE、Java EE、Java ME三个版本,介绍如下:

1. Java SE(Java Platform,Standard Edition)
Java SE 以前称为J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE是基础包,但是也包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。

2. Java EE(Java Platform,Enterprise Edition)。
这个版本以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。

3. Java ME(Java Platform,Micro Edition)。
这个版本以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。

说得更简单片面一点:

Java SE 是做电脑上运行的软件。
Java EE 是用来做网站的-(我们常见的JSP技术)
Java ME 是做手机软件的。
二、学习JAVA从哪开始?
或者我们可以说,需要先学习那个java版本?
有道是“万丈高楼平地起”,通过上面的介绍我们就可以知道,学习java编程,无论想从事哪个方面的程序开发,必须要把基础打好,因此,学习java应该从 java se开始学习。
参考技术A 各个版本的区别还是相当大的,主要是:版本越高,增加的功能越多,以前的bug做了下修复,具体的你可以看下java sdk的百度百科吧~ 参考技术B 高版本的功能更多一些,向下兼容。现在最高的是jdk1.8版本。 参考技术C 这问题问的太好了.......

JDK的版本号解惑

做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,下载链接如下,

https://www.oracle.com/java/technologies/javase-downloads.html#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,这几个号,好像和计算规则有些不符,没再深究了,如果谁知道,可以留个言。

近期更新的文章:

小白学习MySQL - mysqldump保证数据一致性的参数差异

理财投资和个人投资的闲聊

新增字段在数据块中的体现

SQL Server的索引碎片

MySQL客户端预读数据的区别

文章分类和索引:

公众号700篇文章分类和索引

以上是关于Java方面JDK各版本的区别的主要内容,如果未能解决你的问题,请参考以下文章

上课要求jdk版本1.8.0而我的版本是jdk11,有啥区别

谁能看出来这是jdk的哪个版本

本次任务要求使用的jdk版本是

java各版本简单对比

Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.

jdk11和jdk1.8区别