如果你是刚要被 Java 军训的新兵, 可有几时对环境搭建而不知所措? 又如若你是驰骋 Java 战场多年的老将, 可曾拿起陪伴你许久的 82 年的 JDK 回味一番? 今天我们就来道一道 JDK, 重新来认识认识这个既熟悉又陌生的伙伴.
既然要唠唠 JDK, 首先想到的, 肯定是要了解下都是谁来推进 Java 和 JDK 发展的.
Java 发展的会议与组织
说起 Java 的起源必定要提起 Sun 公司, 由其发起了专属于 Java 的 JavaOne 会议. 不过 Sun 公司被 Oracle 收购后, JavaOne 会议同 Oracle 先前的 Oracle OpenWorld 会议并成了 Oracle Code One https://www.oracle.com/code-one/ 会议, 并且会议内容也不再单纯讨论 Java 的发展. 另外还有 JCP(Java Community Process) 是个开放性的国际技术标准组织, 职责是发展和更新 Java 技术规范, 由其推出了大量 Java 相关技术规范 JSR, 具体可点此查看 https://jcp.org/en/home/index .JCP 的运作方式是由个人或者厂商提出 JSR 规范提案, 再有 JCP 委员会的成员投票表决是否采用. 其弊端是 JCP 委员会还是主要由厂商组成, 这些规范可能更偏向于厂商的利益, 而非大众的利益.
JDK 版本
我们要知道 Java 应用开发并不是只有常接触的移动端 , 服务端的应用开发. Sun 公司根据不同业务领域方向分成了四个 JDK 版本:
Java Card, 主要是以具有安全防护性的方式来执行小型的 Java Applet, 广泛运用在 SIM 卡, 提款卡上;
Java SE, 前称 J2SE.Java 的标准版, 为 JavaEE 和 JavaME 提供了基础类库以及能力. 也是我们安装部署 Java 环境最基础的版本;
Java EE, 前称 J2EE. 针对企业级应用的加强版. 主要涉及的技术: JDBC,EJB(被 Spring 遮住了光芒),Servlet,RMI,JNDI,JMS,JPA,JTS 等. Java 10 版本以后被 Oracle 公司放弃, 捐献给了 Eclipse 基金会, 并后成为 Jakarta EE;
Java ME, 前称 J2ME. 主要用于移动设备, 嵌入式设备上的 java 应用程序;
Oracle JDK vs Open JDK
至于它俩的区别, 下面的列表基本列出:
Oracle JDK | Open JDK | |
起源时间 | JDK1.0,1996 年 1 月发行 | OpenJDK 6(基于 Java SE 7),2007 年发行 |
代码协议 | 新的 OTN 协议,2019 年 1 月之后发布的 Oracle JDK 8 更新将无法用于商业 | GPLv2+CE |
发行周期 | JDK6 及之前大约每两年一版本,6 至 7 五年,7 至 8、8 至 9 三年; JDK10 及以后均 6 个月一个大版本;每 3 年一个 LTS 版本; | OpenJDK 9 及之前大约三年一个版本;OpenJDK 10 及以后均 6 个月一个大版本; |
支持时间 | 从 JDK10 起,每 6 个月一个大版本;从 JDK11 起,每 3 年一个 LTS 长期维护的版本; | 从 JDK10 起,每 6 个月一个大版本;不发行 LTS 版本,只维护半年,也就是下个版本发布便不再维护。但是有其他顶级公司继续维护,如 Red Hat OpenJDK,Liberica OpenJDK |
商标 | java 商标拥有者 | 不可使用 java |
性能 | 响应能力、JVM 性能更强 | —— |
功能 | Flight Recorder,Java Mission Control 和 Application Class-Data Sharing | Font Renderer,但 OpenJDK 11 后也包含 Oracle JDK 的功能,还有 Z Garbage Collector |
如果你们公司既想应用新特性, 又没有授权的话, 那就使用 OpenJDK 11 吧! 毕竟 Oracle 的产品总监也说了, Oracle JDK 是基于 OpenJDK 源代码构建的, OracleJDK 和 OpenJDK 在 Java 11 后, 功能基本保持一致. 可见链接: Oracle JDK Releases for Java 11 and Later.
各版本特性及重要事件
- module java.sql {
- requires transitive java.logging;
- requires transitive java.transaction.xa;
- requires transitive java.xml;
- exports java.sql;
- exports javax.sql;
- uses java.sql.Driver;
- }
来源: https://www.cnblogs.com/joruachan/p/13346163.html