Oracle JDK 和 Open JDK
Oracle JDK | Open JDK | |
来源 | Oracle团队维护 | Oracle和Open Java社区 |
授权协议 | Java 17及更高版本 Oracle Java SE 许可证 Java16及更低版本甲骨文免费条款和条件 (NFTC) 许可协议 (oracle.com) | GPL v2许可证 |
关系 | 由Open JDK构建,增加了少许内容 | |
发行周期 | 6个月,每两年一个LTS | 6个月 |
是否收费 | 2021年9月起Java17及更高版本所有用户免费。 16及更低版本,个人用户、开发用户免费。 | 2017年9月起,所有版本免费 |
LTS | 目前7,8,11,17 | 无,但是有社区编译的其他支持 |
对语法的支持 | 一致 | 一致 |
性能 | 最佳 | 接近,几乎无差 |
LTS生命周期
版本 | 开始日期 | 结束日期 | 延期结束日期 |
7(LTS) | 2011年7月 | 2019年7月 | 2022年7月 |
8(LTS) | 2014年3月 | 2022年3月 | 2030年12月 |
主要特性 | 1. Stream API 流 2. 新的日期和时间API,LocalDate、LocalDateTime 3. Lambda语法 4. 函数式接口 5. 接口可以添加非抽象方法,default关键字 6. JVM移除永久代,增加元空间 | ||
11(LTS) | 2018年9月 | 2023年9月 | 2026年9月 |
主要特性 | 1. 模块化 (jdk9) 2. 默认G1垃圾回收器(jdk9) 3. 局部变量类型推断(jdk10) 4. 移除Java EE(jdk11) 5. 合并javac和java命令(jdk11) | ||
17(LTS) | 2021年9月 | 2026年9月 | 2029年9月 |
主要特性 | 1. 试验ZGC,需要在JVM配置()jdk11) 2. 文本块升级(jdk13) 3. switch支持lambda(jdk13预览,jdk14) 4. ZGC 可用于生产环境(jdk15) 5. record(jdk14,15预览,jdk16) 6. Realed class密封类(jdk15,16预览,jdk17) 7. 统一日志支持异步日志刷新(jdk17) | ||
21(LTS) | 2023年9月 | 2028年9月 | 2031年9月 |
其他的可选 Open JDK发行版
名称 | 支持团队 | 官网 |
AdoptOpenJDK (推荐) | Amazon,Microsoft,IBM,Red Hat,Pivotal(EMC和VMware) | |
Alibaba Dragonwell (龙井) | 阿里巴巴 | |
Dragonwell | Dragonwell | |
Microsoft JDK | Microsoft微软 | |
毕昇JDK | 华为 | |
Amazon Corretto | Amazon亚马逊 |
商业收费问题


什么时候又开始免费了
2021年9月起 java 17 及更高版本所有用户免费, 16及更低版本,个人用户,开发用户免费
什么时候开始收费
Oracle JDK从2019年4月16号开始商用商用商用收费了
哪个版本开始收费
2019年4月16日当天,Oracle发布了Oracle JDK的8u211和8u212两个版本 (属于JDK8系列) ,并从这两个版本开始将JDK的授权许可从BCL换成了OTN!也就是从这两个版本开始 商用收费了!
啥叫商用收费
商用收费就是当你使用 Oracle JDK 8u211及以上版本进行具有商业用途(盈利目的)的应用或工具的开发时是要收费的,这时是要先向Oracle缴费取得授权的!当然,一开始你没缴费取得授权就直接用了,Oracle也是不知道的啦!但当你的产品应用或工具越做越大,越来越有名气和市场影响力时,说不定哪天就收到了Oracle发来的律师函,会搞得你公司不要不要的,甚至破产!
Oracle JDK的最后一个免费版本是哪个呢?
是2019年1月15日发布的Oracle JDK 8u201和8u202!
说好的 最后一个 免费版本,为什么写了两个版本号 8u201和8u202呢?我到底要用哪一个?
这就涉及到Oracle跟Oracle 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版本号采用 偶数编号!
所以,一般情况下我们只要下载 奇数编号 的最新版本更新就行了
版本发布时间
版本 | 名称 | 发行日期 |
JDK 1.0 | Oak(橡树) | 1996-01-23 |
JDK 1.1 | 1997-02-19 | |
JDK 1.1.4 | Sparkler (宝石) | 1997-09-12 |
JDK 1.1.5 | Pumpkin (南瓜) | 1997-12-13 |
JDK 1.1.6 | Abigail (阿比盖尔–女子名) | 1998-04-24 |
JDK 1.1.7 | Brutus (布鲁图–古罗马政治家和将军) | 1998-09-28 |
JDK 1.1.8 | Chelsea (切尔西–城市名) | 1999-04-08 |
J2SE 1.2 | Playground (运动场) | 1998-12-04 |
J2SE 1.2.1 | none (无) | 1999-03-30 |
J2SE 1.2.2 | Cricket (蟋蟀) | 1999-07-08 |
J2SE 1.3 | Kestrel (美洲红隼) | 2000-05-08 |
J2SE 1.3.1 | Ladybird (瓢虫) | 2001-05-17 |
J2SE 1.4.0 | Merlin (灰背隼) | 2002-02-13 |
J2SE 1.4.1 | grasshopper (蚱蜢) | 2002-09-16 |
J2SE 1.4.2 | Mantis (螳螂) | 2003-06-26 |
Java SE 5.0 (1.5.0) | Tiger (老虎) | 2004-09-30 |
Java SE 6.0 (1.6.0) | Mustang (野马) | 2006-04 |
Java SE 7.0 (1.7.0) | Dolphin (海豚) | 2011-07-28 |
Java SE 8.0 (1.8.0) | Spider (蜘蛛) | 2014-03-18 |
Java SE 9.0 | 2017-09-21 | |
Java SE 10.0 | 2018-03-21 | |
Java SE 11.0 | 2018-09-25 |
名词解释
Java与JDK的区别
JDK是个Java开发的工具包,Java是门编程语言。
JDK8与JDK1.8的区别
JDK8或者JDK1.8是由于自从JDK1.5/JDK5命名方式改变后遗留的新旧命令方式问题。所以 Java 8, JDK8或者JDK1.8也是同一个东西。
JDK与J2SE的区别
JAVA 就是指 JDK 开发工具,所以我们可以理解为 JAVA 等价于 JDK。JAVA 有3个版本:J2SE J2EE J2ME,而J2SE是标准版本,J2ME 是手机方向的,J2EE 是网站开发方向的。
JDK、JRE、ServerJRE
Software Developers: JDK (Java SE Development Kit). For Java Developers. Includes a complete JRE plus tools for developing, debugging, and monitoring Java applications.
Administrators running applications on a server: Server JRE (Server Java Runtime Environment) For deploying Java applications on servers. Includes tools for JVM monitoring and tools commonly required for server applications, but does not include browser integration (the Java plug-in), auto-update, nor an installer.
End user running Java on a desktop: JRE: (Java Runtime Environment). Covers most end-users needs. Contains everything required to run Java applications on your system.
JDK
JDK(Java Development Kit)又称J2SDK(Java2 Software Development Kit),是Java开发工具包,它提供了Java的开发环境(提供了编译器javac等工具,用于将java文件编译为class文件)和运行环境(提供了JVM和Runtime辅助包,用于解析class文件使其得到运行)。如果你下载并安装了JDK,那么你不仅可以开发Java程序,也同时拥有了运 行Java程序的平台。JDK是整个Java的核心,包括一堆Java工具tools.jar和Java标准类库。
JRE
JRE(Java Runtime Enviroment)是Java的运行环境。面向Java程序的使用者,而不是开发者。JRE是运行Java程序所必须环境的集合,包含JVM标准实现及 Java核心类库。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。
Server JRE
Server JRE是专为服务器端程序量身打造的, 只包含JRE/JDK中最常用的那部分功能.。为了做到简单,Server JRE不使用安装包, 而是一个绿色版的压缩文件。
从使用情况来看,服务器部署使用server jre比较好,精简了javafx一些图形界面才用到的东西
Server JRE 包括 JVM 监测工具和服务器应用程序所需的常用的工具。JRE包括浏览器集成 Java 插件。