这篇文章是要聊 Java 的发展史吗?可以说是也可以说不是,说是,是因为我们学习一个东西必须要了解其历史,就好像一个老外要想了解中国人首先要了解中国的历史是一个道理。说不是,是因为我们需要从整个发展进程中理出相对来说比较重要的几个时间节点,而在这些时间节点上产生的版本也是我们需要重点关注和学习的版本,同时对于后期我做代码的向下兼容也可以做到心里有谱。
时光荏苒,从第一个Java版本诞生到现在已经有25年的时间了。沧海桑田一瞬间啊,转眼25年就过去了,下图为Java技术发展的时间线:
比较重要的版本
1996年1月23日,JDK 1.0发布,Java语言有了第 1 个正式版本的运行环境。 JDK 1.0提供了一个纯解释执行的Java虚拟机实现(Sun Cassic VM). JDK 1.0版本的代表技术包括,Java虚拟机、Applet. AWT等。我前面提到说 Java 25 年的话也是从1996年开始计算的
1998年12月4日, JDK 迎来了一个里程碑式的版本JDK1.2,工程代号为Playground
JDK的第一个里程碑式的版本。同时也是在这个版本中 Java 被正式的拆分成了面向桌面应用开发的J2SE(Java 2 Platform,Standard Edition),面向企业级开发的 J2EE (Java 2 Platform,Enterprise Edition)和面向手机等移动终端开发的 J2ME (Java 2 Platform,Micro Edition)
在JDK1.2版本出来以后一直到2004之前语法上都没有什么新的变化,但是2004年9月30日,JDK 1.5发布,工程代号Tiger (老虎)。这也是语法变化最大的一次版本迭代。
2006年12月11日,JDK 1.6发布,工程代号Mustang ( 野马 )
在这个版本中,Sun终结了从JDK 1.2开始已经有8年历史的J2EE、J2SE、 J2ME的命名方式,启用 Java SE 。JavaEE6. Java ME 6的命名方式。同时也是这个版本Sun在遵循GPL v2(GNU General Public License v2)协议下公开了源码,并建立了OpenJDK组织对这些源码进行独立管理。
比较蛋疼的是国内很多公司(如 阿里 、 腾讯 )都号称有自己的 JDK,其实这些所谓的JDK都是基于 OpenJDK 的基础上进行的修改。
2009年4月20日,Oracle 公司宣布正式以74亿美元的价格收购 Sun公司 ,Java商标从此正式归 Oracle 所有。遥记当年正式因为没有上述知识的储备,在听说Sun被Oracle收购之后慌的一批,甚至一度以为 Java 开发的工作已经到头了。
Oracle 公司在收购 Sun 发布的第一个版本即为 JDK1.8 ,代号Spider(蜘蛛)。其实这个版本是提供了在JDK 1.7中规划过,但最终未能在JDK 1.7 中发布的特性。也就是我们现在所熟知的 Lambda表达式 等等特性
两个问题
商用收费
2019年4月16日,Oracle发布了新的JDK 8的更新,版本号为8u211和8u212。新版本的许可协议从 BCL 换成了OTN,这就意味着,你不能在生产环境使用这个版本了。如果你想继续使用8u211/8u212,或者之后发布的新版本,就需要给Oracle交钱了
更新频次
原来的时候 JDK 版本的发布一般都伴随这新的功能(也可以理解为新语法),原来的 Sun 公司基本上维持在两年一次的版本迭代。但是 Oracle 在接手以后不再以功能驱动版本更新了,而是变为了 6 个月更新一次版本。就在刚才我看了一下最新版已经到 JDK17 。你的学习速度再快能追上它的更新速度么?至于为什么这样甲骨文或者说 Oracle 在一篇文章中进行了描述
文章地址:
我们学习的版本
Oracle 虽然在频繁的更新 JDK 的版本,但是它将版本划分成了两种,一种为功能性版本另一种为长期支持版。而我们在学习的时候很明显只需要学习最新的长期支持版即可。下图是 Oracle 对版本支持的起止年份
来源地址:
聊到这里我们需要说一下企业的现状,虽然 Oracle 官方建议企业升级到 JDK11 但是大部分企业都不是那么痛快的答应。为了跟 Oracle 解绑他们有一部分企业则选择了死守老版本不更新,称为了传说中的钉子户。而另一部分选择了 OpenJDK ,在 JDK1.7 时期 OpenJDK 甚至宣称对当时 Sun 的 JDK 源码 仅仅是删除对应的注释和版权信息。而且最近几年 OpenJDK 一直在跟进 Oracle JDK 所以说他们的差别并不是太大。
为什么一定要选择 Java,这其实和 Java 的生态密不可分。现在放眼市场的服务器端开发语言貌似并没有什么语言的生态能和Java媲美。所以死磕Java也是没有办法的事情,至于未来这个不太好说,即使是衰落也需要时间。。。