1. JDK 版本历史 和 大事记
1.1 版本历史
版本 | 发布时间 | LTS |
---|---|---|
JDK1.0 | 1996年1月 | |
JDK1.1 | 1997年2月18日 | |
JDK1.3 | 2000年5月8日 | |
JDK1.4 | 2000年5月29日 | |
JDK1.5 | 2004年9月30日 | |
JDK1.6 | 2006年12月 | |
Java SE 7 | 2011年7月28日 | |
Java SE 8 | 2014年3月18日 | LTS |
Java SE 9 | 2017年9月21日 | |
Java SE 10 | 2018年3月21日 | |
Java SE 11 | 2018年9月25日 | LTS |
Java SE 12 | 2019年3月20日 |
目前最新的是:Java SE 15
1.2 大事记
时间 | 事件 |
---|---|
1990年 | 在 Sun 计算机公司,由 Patrick Naughton、MikeSheridan 及 James Gosling 领导的小组 Green Team,开发出了全新的程序语言,命名为 Oak,就是后来的 Java |
1995年 | Sun 正式发布 Java 和 HotJava 产品, Java语言正式亮相 |
1997年 | Java 社区成员超过十万 |
1998年 | JDK 1.2 发布,同时,Sun 发布了 JSP/Servlet、EJB规范;同时 Sun 决定将 JDK 分为 J2EE、J2SE和J2ME,这表明 Java 将同时向企业应用、桌面应用和移动设备应用三大领域挺进 |
2000年 | JDK 1.3 发布,Hotsport JVM成为了默认的 Java 虚拟机 |
2002年 | JDK 1.4 发布,Classic虚拟机退出历史舞台 |
2003年 | Java平台的Scala正式发布,同年Groovy也加入了Java阵营 |
2004年 | JDK 1.5 发布,同时更名为 JavaSE 5.0 |
2006年 | JDK 1.6 发布,同年,Java 开源,并建立了 OpenJDK,Hotspot 也顺理成章的成为了 OpenJDK 的默认虚拟机 |
2008年 | Oracle 收购 BEA,得到了 JRockit 虚拟机 |
2009年 | Twitter 宣布把后台大部分程序,从Ruby迁移到Scala,这是Java平台的又一次大规模应用 |
2010年 | Oracle 收购 Sun,获得 Java 商标和最具价值的 Hotspot 虚拟机,此时,Oracle 成功获得了市场占有率最高的两款 Java 虚拟机,并计划后续对其进行整合 |
2011年 | JDK 1.7发布 |
2018年 | Android的Java侵权案判决,Google赔偿Oracle计88亿美元。同年,Oracle宣告JavagE成为历史名词JDBC、JMS、Servlet赠予Eclipse基金会。同年,JDK11发布,LTS版本的JDK,发布革命性的ZGC,调整JDK授权许可 |
2. Linux 安装
2.1 第一步:卸载系统自带的JDK
用 rpm -qa|grep java 命令查询系统自带的 OpenJDK,然后依次使用 rpm -e 命令进行卸载:
$ rpm -qa|grep java
libvirt-java-devel-0.4.9-4.el7.noarch
tzdata-java-2017b-1.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.131-3.b12.el7_3.x86_64
java-1.7.0-openjdk-1.7.0.141-2.6.10.1.el7_3.x86_64
libvirt-java-0.4.9-4.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.141-2.6.10.1.el7_3.x86_64
java-1.8.0-openjdk-1.8.0.131-3.b12.el7_3.x86_64
python-javapackages-3.4.1-11.el7.noarch
$ rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.141-2.6.10.1.el7_3.x86_64
2.2 RPM 安装JDK1.8
$ rpm -ivh jdk-8u172-linux-x64.rpm
2.3 压缩包安装
$
2.4 配置环境变量
$ vim /etc/profile
# 末尾追加以下内容
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
3. Windows 安装
3.1 exe安装包安装
- 启动安装包,安装完成即可,复制安装路径,后续配置环境变量使用
3.2 压缩包解压安装
- 将压缩包解压到任意目录,复制安装路径,后续配置环境变量使用
3.3 配置环境变量
在环境变量管理器中,添加如下内容:
| 环境变量名 | 值 |
|---|---|
| JAVA_HOME | /path/to/Java(C:\java1_8) |
| CLASSPATH | .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar |
| Path| %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; |
注意:Path环境变量系统自带,只需要将值在最前加入保存即可
5. 验证
$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
能正常打印出 Java 版本号,说明安装成功
6. Q & A
6.1 为什么现在很大一部分程序还是在用 JDK 1.8?
调查结果显示,绝大多数开发人员的主要应用程序中使用的还是 Java 8
那么,什么现在很大一部分程序还是在用 JDK 1.8?这其中的原因是多方面的,主要还是Java8之后的版本,Oracle 更改了更新节奏,改变了LTS版本支持的策略,导致企业在升级方面存在顾虑,在安全和稳定性方面优先的情况下,对升级比较慎重;
另外一个重要方面,Oracle在2017年发布声明,之后所有的LTS版本都是有偿使用,这打击了很大一部分中小企业的升级积极性,虽然Oracle同时提供了商业版JDK 和 OpenJDK两种选择,但是对用户来说也比较鸡肋;
最后可能就是JDK 8不管是在语法层面,还是在生态层面,都经过了长期的实战考验,比较成熟和稳定,而之后的 JDK 并没有太大的突破性创新,所以也没有特别大的吸引力促使用户升级。
6.2 OpenJDK 和 OracleJDK是什么关系?
首先,OpenJDK 是 Sun在开源Java 之后就已经存在
之后的JDK 版本,都是在OpenJDK基础上进行开发和发布的
在2017年,Oracle 宣布修改Java版本策略后,同时提供两种SDK:商业版和OpenJDK,商业版付费使用,Oracle提供技术支持;OpenJDK由社区提供支持。
从技术上看,两者的差别很小,OpenJDK和Oracle JDK的代码几乎相同,但是Oracle JDK有更多的类和一些bug修复,但是虚拟机本身的代码实际上是不同的,而对于库,OpenJDK倾向于使用开放库,而Oracle则倾向于使用封闭库。
这也是为什么目前为止,大部分企业和程序员,都还在使用 JDK8 的原因。