? ? ? ? 今天想到上个月无意中听闻到的一句话:JDK8之后收费了,所以大家都用JDK8。当时只觉得这个话说得不对,但因为和说话的人不认识也就过去了。今天想到此事之后,为了不让更多的朋友误解JDK8和Oracle,还是决定写一篇文章说说此事。
? ? ? ? 2021年09月14日,JAVA 17 带来的不仅仅是新功能。更快的 LTS 节奏和免费的 Oracle JDK 使其成为有史以来支持最好的现代版本。Oracle JDK收费为人诟病,此次Oracle推出了Free Java License ,大致摘要:
? ? ? ? 截至到2024年1月14日,Oracle 为客户提供针对 Oracle Java SE 产品的 Oracle 标准支持服务,如?Oracle 终身支持政策中所述。对于 Java SE 8 之后的产品版本,Oracle 将仅将某些版本指定为长期支持 (LTS) 版本。Java SE 8、11、17 和 21 是 LTS 版本。Oracle 打算每两年发布一次未来的 LTS 版本,这意味着下一个计划的 LTS 版本是 2025 年 9 月的 Java 25。就 Oracle 标准支持服务而言,非 LTS 版本被视为最新 LTS 版本的一组累积实施增强功能。一旦新功能版本可用,任何以前的非 LTS 版本都将被视为被取代。例如,Java SE 9 是一个非 LTS 版本,并立即被 Java SE 10(也是非 LTS)取代,而 Java SE 10 又立即被 Java SE 11 取代。但是,Java SE 11 是 LTS 版本,因此即使 Java SE 12 已发布,Oracle 客户也将获得 Oracle 标准支持和定期更新版本。
????????Oracle Java SE 产品的一些关键产品日期示例包括:
Oracle Java SE 支持路线图*? | ||||
---|---|---|---|---|
释放 | GA 日期 | 高级支持截止时间 | 延长支持期限至 | 持续支持 |
8 (LTS)** | 2014 年 3 月 | 2022 年 3 月 | 2030 年 12 月***** | 不定 |
9 - 10(非 LTS) | 2017年9月至2018年3月 | 2018年3月至2018年9月 | 不可用 | 不定 |
11 (LTS) | 2018 年 9 月 | 2023 年 9 月 | 2032 年 1 月***** | 不定 |
12 - 16(非 LTS) | 2019年3月至2021年3月 | 2019年9月至2021年9月 | 不可用 | 不定 |
17 (LTS) | 2021 年 9 月 | 2026 年 9 月**** | 2029 年 9 月**** | 不定 |
18(非 LTS) | 2022 年 3 月 | 2022 年 9 月 | 不可用 | 不定 |
19(非 LTS) | 2022 年 9 月 | 2023 年 3 月 | 不可用 | 不定 |
20(非 LTS) | 2023 年 3 月 | 2023 年 9 月 | 不可用 | 不定 |
21 (LTS) | 2023 年 9 月 | 2028 年 9 月**** | 2031 年 9 月**** | 不定 |
22(非 LTS)*** | 2024 年 3 月 | 2024 年 9 月 | 不可用 | 不定 |
23(非 LTS)*** | 2024 年 9 月 | 2025 年 3 月 | 不可用 | 不定 |
24(非 LTS)*** | 2025 年 3 月 | 2025 年 9 月 | 不可用 | 不定 |
25 (LTS)*** | 2025 年 9 月 | 2030 年 9 月 | 2033 年 9 月 | 不定 |
????????JDK8有很多优点,所以很多人选择使用它。以下是一些常见的原因:
- JDK8版本是长期支持版本,得到了Oracle公司的官方支持,可以获得稳定的技术支持和更新。
- JDK8版本引入了许多新的特性,例如函数式编程、Lambda表达式、流式处理等,这些特性可以使代码更加简洁、易读、易维护,并且可以提高开发效率。
- JDK8版本在之前的版本上在性能优化进行了很多改进,包括在JIT编译器中引入了新的优化技术,提高了代码的执行效率。
- JDK8版本对于开发工具提供了更好的支持,例如新的日期/时间API、新的并发工具等,能够帮助开发人员更加方便地进行开发。
- JDK8版本在安全性方面进行了一些改进,提供了更好的安全保护机制,能够帮助企业防止安全漏洞。
- 技术更新是需要过程的,在市场各产品和服务没有同步达到足够的稳定安全状态的情况下,为了减少风险,企业和个人都会选择相对稳定的老版本坚持使用。
????????Java SE 8 已经完成了旧版的公共更新结束过程。Oracle 将继续通过?java.com?无限期地为个人用户、开发人员用户和其他用户提供免费的 Java SE 8 公共更新和自动更新。如果设置了终止日期,Oracle 将在此页面和其他通信渠道上提供至少 18 个月的通知。
????????Oracle 不打算通过自动更新功能将桌面从 Java SE 8 迁移到更高版本。这包括 Java 插件和 Java Web Start。我们鼓励应用程序开发人员使用 Java SE 9 引入的打包选项,将他们的 Java 应用程序重新打包并交付为包含他们自己的自定义运行时的独立应用程序,而不是依赖于浏览器可访问的系统 JRE。
????????Java SE 8 是推荐的、唯一受支持的部署堆栈版本。Java SE 8 部署堆栈可用于在 Windows 平台上运行 Java SE 7 或 Java SE 8 应用程序。Java SE 8 之后将不再支持 Java 部署技术。有关详细信息,请参见?Oracle 终身支持政策。
????????JavaFX 已开源并重新设计为可作为独立库使用,而不是包含在 JDK 中。从 Java SE 11 开始,JavaFX 不包含在 Oracle JDK 中。Java SE 8 上对 JavaFX 的支持将持续到 2025 年 3 月。
支持部署技术和 JavaFX* | ||||
---|---|---|---|---|
版本 | GA 日期 | Java Web Start 支持直到 | Java 插件(小程序)支持直到 | JavaFX 支持截止 |
6 | 2006年12月 | 2017 年 10 月 | 2017 年 10 月 | 不适用 |
7 | 2011 年 7 月 | 2017 年 10 月 | 2017 年 10 月 | 2019 年 7 月 |
8 | 2014 年 3 月 | 2030 年 12 月 | 2019 年 3 月 | 2025 年 3 月 |
9 及更高版本 | 不适用 | 不适用 | 不适用 |
????????Java SE 11 将在 2023 年 10 月至 2032 年 1 月期间免除扩展支持提升费用。Java SE 8 将在 2022 年 3 月至 2030 年 12 月期间免除扩展支持提升费用。在此期间,您将获得“技术支持策略”的“Oracle 技术支持级别”部分所述的扩展支持。
????????JDK17、JDK19、JDK21版本也是JDK8之后Oracle官方所声明地长期支持版本。当这些LTS产品还需要通过市场的不断检验很升级,未来一定会有新的JDK版本又一次占据JDK主流的。JDK8终将会像曾经的JDK5一样,被当下的人们所淡忘。