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 | 无,但是有社区编译的其他支持 |
对语法的支持 | 一致 | 一致 |
性能 | 最佳 | 接近,几乎无差 |
其他的可选 JDK发行版
名称 | 支持团队/公司 | 说明 |
OpenJDK | Sun->甲骨文 | 原是Sun Microsystems公司为Java平台构建的Java开发环境(JDK)的开源版本,,完全自由,,开放源码 |
Zulu | Azul Systems | 需要为其面向网络的客 户提供基于服务器的Java应 用程序的公司提供服务,,或者为嵌入式和物联网用例提 供基于Java的系统 |
Liberica | BellSoft | 100% 开源Java实现。它是由BellSoft贡献的OpenJDK构建的 |
Temurin | eclipse | Adoptopenjdk自2020年7月交给eclipse,,现在改名Temurin(Adoptium.net) |
openJ9 | IBM | IBM打包的openJ9 JVM的JDK, 有区别于 Oracle HotSpot JVM , 极省内存 |
Microsoft JDK | Microsoft微软 | |
SapMachine | SAP | 是OpenJDK 项目的下游版本。它用于为希望使用OpenJDK运行其应用程序的SAP客户和合作伙 伴构建和维护支持SAP的OpenJDK版本 |
RedHat OpenJDK | RedHat | 免费的 、多平台的、面向生产的开放Java开发工具包(OpenJDK) 发行版 |
Amazon Corretto | Amazon | 阿里巴巴内部 OpenJDK 定制版AJDK 的开源版本 |
Dragonwell | 阿里巴巴 | 阿里巴巴内部 OpenJDK 定制版AJDK 的开源版本,,AJDK 为在线电商、金融、物流做了结合业务场景的优化,,运行在超大规模的,,100,000+ 服务器的阿里巴巴数据中心 |
Kona | 腾讯 | 腾讯云内部的默认 JDK,,用于云计算和其他 Java 应用程序 |
毕昇JDK | 华为 | 毕昇JDK基于OpenJDK开发,,是一个高性能、可用于生产环境的OpenJDK发行版 |
商业收费问题
什么时候又开始免费了
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) 版本号采用 偶数编号!
所以,一般情况下我们只要下载 奇数编号 的最新版本更新就行了!记住:商业收费版本的不要用于商业用途,这不是小事情,严重起来会让你的公司倒闭
如果你真的很烦这些收费授权的Oracle JDK (主要应该是想节约成本) ,但又想尽量跟上或用上最新的JDK功能特性,那么Oracle官方其实还提供了一个完全免费开源的JDK版本——OpenJDK
Oracle在 GPL许可下提供了开源的 OpenJDK 发行版,最新版的OpenJDK一般都会紧跟对应版本的Oracle JDK,功能特性基本没有差异!
版本发布时间
版本 | 名称 | 发行日期 |
JDK 1.0 | Oak(橡树) | 1996-01-23 |
JDK 1.1 | Coffce(咖啡) | 1997-02-19 |
J2SE 1.2 | Playground (运动场) | 1998-12-04 |
J2SE 1.3 | Kestrel (美洲红隼) | 2000-05-08 |
J2SE 1.4 | Merlin (灰背隼) | 2002-02-13 |
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)(LTS) | Dolphin (海豚) | 2011-07-28 |
Java SE 8.0 (1.8.0)(LTS) | Spider (蜘蛛) | 2014-03-18 |
Java SE 9.0 | 从Java 8开始开发代号已经弃用了 | 2017-09-21 |
Java SE 10.0 | 2018-03-21 | |
Java SE 11.0(LTS) | 2018-09-25 | |
Java SE 12.0 | 2019-02-07 | |
Java SE 13.0 | 2019-09-26 | |
Java SE 14.0 | 2020-03-17 | |
Java SE 15.0 | 2020-09-15 | |
Java SE 16.0 | 2021-03-16 | |
Java SE 17.0(LTS) | 2021-09-14 | |
Java SE 18.0 | 2022-03-22 | |
Java SE 19.0 | 2022-09-20 |
LTS生命周期
版本 | 开始日期 | 结束日期 | 延期结束日期 | 主要特性 |
7(LTS) | 2011年7月 | 2019年7月 | 2022年7月 | |
8(LTS) | 2014年3月 | 2022年3月 | 2030年12月 | 1. Stream API 流 2. 新的日期和时间API,LocalDate、LocalDateTime3. 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月 |
知识点
区别
Java 技术 = Java 语言 + Java 平台
Java 平台 = JVM + JDK
Java SE = JDK 根基
Java EE,JavaME,JavaFX 是 Java SE 的扩展
简单点说
Java SE 是标准版本 用于开发和部署桌面、服务器以及嵌入设备和实时环境中的Java应用程序。如 Java应用程序开发平台Eclipse
Java EE 是网站开发方向的 主要针对企业应用的开发 如电子商务网站、ERP系统
Java ME 是手机方向的 主要针对消费类电子设备的 如: 蜂窝电话和可视电话、数字机顶盒、汽车导航系统 手机游戏,电视机顶盒和打印机相关的嵌入式设备软件
Java SE: Java Platform,Standard Edition 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序,包含了支持 Java Web 服务开发的类,为(Java EE)提供基础。
Java EE: Java Platform,Enterprise Edition 这个版本以前称为 J2EE。企业版帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。
Java ME: Java Platform,Micro Edition 这个版本以前称为 J2ME。为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。
JavaFX: JavaFX Script 编程语言 是一种declarative, statically typed(声明性的、静态类型)脚本语言
Java EE 与 Java SE 有什么区别?
Java EE 相比于Java SE 来说,除了多出包(Package)以外,还多了若干 Java 容器,如 Tomcat、GlassFish、IBM WebSphere 等。
那么什么是 JAVA 容器呢?
以 Java EE 的子集 Servlet 为例,我们现在用 Servlet 可以相对轻松的写出一个动态 Web 站点。
JDK8与JDK1.8的区别
JDK8或者JDK1.8是由于自从JDK1.5/JDK5命名方式改变后遗留的新旧命令方式问题。所以 Java 8, JDK8或者JDK1.8也是同一个东西。
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 插件。
老版本的JDK包括了JRE,但JDK8之后的版本不再包括JRE. 从JDK 6 到 JDK 10: JRE, server JRE 可以单独下载, 从JDK11 开始不再单独下载
来源地址:https://blog.csdn.net/weixin_44496870/article/details/129533914