OpenJDK 是JDK的开放源码版本。 在服务器上更新了新的 jdk,也在 /etc/profile 中设置了新的 JAVA_HOME,并且 source /etc/profile 然后使用java -version 和 javac -version 发现版本还是老版本,死活没有使用我新指定的。 中间各种排查,这里就不废话了,下面是文件的根源和解决方法: 使用which java 和 which javac 分别可以看到 [root@localhost ~]# which java /usr/bin/java [root@localhost ~]# which javac /usr/bin/javac 简单说一下,就是把这2个文件ln -s 到我们新的jdk 下的 java 和 javac 上,命令如下: rm -rf /usr/bin/java rm -rf /usr/bin/javac ln -s $JAVA_HOME/bin/javac /usr/bin/javac ln -s $JAVA_HOME/bin/java /usr/bin/java ## Java 版本号 安装文件: jdk-8u131-windows-x64.exe 安装后的版本显示: ``` 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 版本历史 * SE 标准 * LTS 长期支持 * JDK Beta - 1995 * JDK 1.0 - 1996年1月 * JDK 1.1 - 1997年2月 * J2SE 1.2 - 1998年12月 * J2SE 1.3 - 2000年5月 * J2SE 1.4 - 2002年2月 * J2SE 5.0 - 2004年9月 * Java SE 6 - 2006年12月 * Java SE 7 - 2011年7月 * Java SE 8(LTS) - 2014年3月 * Java SE 9 - 2017年9月 * Java SE 10(18.3) - 2018年3月 * Java SE 11(18.9 LTS) - 2018年9月 * Java SE 12(19.3) - 2019年3月 Oracle 发布计划, 自Java SE 10以来,每6个月发布一次新版本。长期支持(LTS)版本的产品每3年发布一次。 OpenJDK是Java SE Platform Edition的免费开源实现。它最初于2007年发布,是Sun Microsystems于2006年开始开发的结果。 OpenJDK是自SE 7版以来Java标准版的官方参考实现。 Open JDK 历史: * OpenJDK 6项目 - 基于JDK 7,但经过修改后提供了Java 6的开源版本 * OpenJDK 7项目 - 2011年7月28日 * OpenJDK 7u项目 - 该项目开发Java Development Kit 7的更新 * OpenJDK 8项目 - 2014年3月18日 * OpenJDK 8u项目 - 该项目开发Java Development Kit 8的更新 * OpenJDK 9项目 - 2017年9月21日 * OpenJDK 10项目 - 2018年3月10日至20日 * OpenJDK 11项目 - 2018年9月11日至25日 Java 10开始,OpenJDK项目也将每六个月发布一次新功能。但是,OpenJDK不存在STL版本,仅支持对发布的更改,直到下一个版本发布。例如,当OpenJDK 11发布6个月后,OpenJDK 12发布时,OpenJDK 11也就不再进行支持版本更新。 ## JDK收费 免费使用的最新版本: 8u201/202 * 在2019年1月之后发布的Oracle JDK 8版本不再免费用于商业用途 * Oracle发布的新的JDK 8的版本更新8u211和8u212,其许可协议从BCL换成了OTN。 * JDK11及之后新发布的JDK,都是使用OTN协议。 Oracle JDK 8 u191 是2019年1月前发布的最新版本,所以只要一直使用 JDK 8 u191 以及更早的版本,就不需付费。 从2019年1月份开始,Oracle JDK 开始对 Java SE 8 之后的版本开始进行商用收费,确切的说是 8u201/202 之后的版本。如果你用 Java 开发的功能如果是用作商业用途的,如果还不想花钱购买的话,能免费使用的最新版本是 8u201/202 2019年4月16日当天,Oracle发布了Oracle JDK的8u211和8u212两个版本(属于JDK8系列),并从这两个版本开始将JDK的授权许可从BCL换成了OTN!也就是从这两个版本开始商用收费了。 对于PC, 每用户每月是2.5美元,对于服务器/云部署,每个processor 每月是25美元 OpenJDK https://openjdk.java.net/install/ ## JDK 免费使用方式 1. 继续使用BCL许可协议的Oracle JDK版本,即JDK8 8u211之前的版本 2. 使用OpenJDK 3. 其他免费开源JDK实现,比如 Zulu,AdoptOpenJDK,Amazon的Corretto和阿里巴巴的dragonwell等等 ## OpenJDK VS Oracle JDK OpenJDK由Oracle,OpenJDK和Java Community开发。然而,红帽,Azul Systems,IBM,Apple Inc.,SAP AG等顶级公司也积极参与其开发。 OpenJDK具有GNU通用公共许可证(GNU GPL)是完全开源的,可以自由使用。 Oracle JDK 在响应能力和JVM性能方面要好得多。更加稳定。 * BCL协议,即Oracle Binary Code License Agreement,可以使用JDK,但是不能进行修改。私用和商用都可以,但是JDK中的某些商业特性,是需要付费才可以使用。 * OTN协议,即Oracle Technology Network License Agreement,可以私用,商用需要付费。 ## 更新的问题 * JDK8无法更新,存在安全性等风险 * OpenJDK 没有TLS版本, 也存在没有更新的风险 为什么要更新。可能h会爆出一些漏洞风险。 解决方法: * 一直使用OpenJDK 最新版 * 从其他地方获取OpenJDK的更新支持,比如Red Hat声明:RHEL支持OpenJDK7,8,11,支持至少6年。