【方向盘】Oracle Java SE Support Roadmap:支持JDK 8到2030年

简介: Java的发展史,也伴随着JVM的变迁史

在这里插入图片描述

本文已被https://yourbatman.cn收录;女娲Knife-Initializr工程可公开访问啦;程序员专用网盘https://wangpan.yourbatman.cn;技术专栏源代码大本营:https://github.com/yourbatman/tech-column-learning;公号后台回复“专栏列表”获取全部小而美的原创技术专栏

你好,这里是Java方向盘,我是方向盘(YourBatman),坐稳扶好,开始发车。

Title Link
所属专栏 【方向盘】-资讯/新特性
源代码 https://github.com/yourbatman/FXP-java-ee
程序员专用网盘公益上线啦,注册送1G超小容量,帮你实践做减法 https://wangpan.yourbatman.cn
Java开发软件包(Mac) https://wangpan.yourbatman.cn/s/rEH0 提取码:javakit
女娲工程 http://152.136.106.14:8761
版本约定 [2022 Oracle Java SE支持路线图]

✍前言

通过这篇文章【方向盘】2021年JVM生态报告:Java 11使用率超Java 8 了解到,Oracle JDK正在逐渐失去其市场份额,OpenJDK正在崛起。

作为Java领域从业者,Oracle的一举一动关系着这个江湖,特备是在不平静的当下,Oracle定会采取行动试图保住江山。这不,前不久Oracle公布了其最新的Java SE支持Roamap,本文咱就一起来了解下。

✍正文

几十年来,Java 生态系统已经成功地经历了多个过程,经历了十次主要的平台修订。开发者比较关注LTS版的JDK,现在更新到哪个版本了,后续的支持情况是什么样的,这里借助Oracle官方来解答这些疑问,把握JDK的发展动向。

Oracle Java SE支持路线图

2022年3月底,Oracle更新了最新版的Java SE支持线路图,以帮助了解维护和支持选项以及相关时间表。

✌Oracle客户分类解释说明

个人用户、开发用户和其他用户:指根据Java SE的Oracle技术网络许可协议免费使用 Java SE的用户。包括在个人台式机或笔记本电脑上免费使用Java SE 的个人,或将Java SE用于开发用途的个人

所有用户:都是根据Oracle免费条款和条件许可条款(NFTC协议)免费使用 Java SE 17 及更高版本的用户

Tips:所有用户给出了解释,Oracle怕是对所有二字有什么误解吧。套路太深了

✌Oracle产品支持的三个策略

任何产品都有自己的支持策略,一个产品不可能无期限的给予最高优先级的支持。比如我们习以为常的iOS系统,也不可能将10年前的iPhone一直支持下去。

Oracle也不例外,对自家产品进行分级支持。不同的产品、在不同的时期,支持的强度也不一样。强度分为:

  • Premier Support(高优支持)
    • 一般为5年,可以得到技术支持、更新、bug修复、安全警报、数据修复、关键补丁更新
  • Extended Support(扩展支持)
    • 额外3年支持,服务基本同上,但优先级低,更新频率变低
  • Sustaining Support(持续支持)
    • 它的特点是支持的时间长,但支持的项目较少,响应慢

      ✌Oracle Java SE产品版本

      Oracle作为Java SE的官方,提供标准支持。对于Java SE 8之后的产品版本,Oracle 将仅将某些版本指定为长期支持 (LTS) 版本,给与比较长时间的支持。Oracle计划每两年发布一次LTS 版本(每年9月份),这意味着下一个LTS 版本是2023 年9月的Java 21。

下面这张表展示了Java SE各个版本的支持日期:
在这里插入图片描述

✌Java SE 8公共更新结束

从上面表格可以看到,Java SE 8的支持时间(扩展支持)异常坚挺,直接超过了11和17这两个LTS版本,支持到2030年12月。

Oracle 将继续通过java.com为个人、开发和其他用户无限期地提供Java SE 8的免费公共更新和自动更新。开发者可以在这里找到Oracle Java SE的更新。

Oracle 不打算通过自动更新功能将桌面从 Java SE 8 迁移到更高版本。这包括 Java 插件和 Java Web Start。

✌Oracle JDK和Oracle OpenJDK

自2017年9月份依赖,Oracle就在开源许可协议(GPL v2)下提供JDK版本,也叫Oracle OpenJDK。Oracle 提供的 OpenJDK 版本的可用性和社区支持在jdk.java.net上单独列出。

自 2021 年 9 月起,Oracle为Java 17及更高版本提供适用于所有用户的免费使用许可(NFTC)的 Oracle JDK。

Tips:NFTC协议需要仔细阅读,警防上了Oracle套

✌Web部署技术和JavaFX

这两项技术可谓是比较古老的技术了,和JRE绑定在一起。Web部署技术由Java PluginJava Web Start组成,具有很短的支持生命周期。

在Java SE 9和Java SE 10 中,Deployment Stack被标记为已弃用并标记为删除。Java SE 11及更高版本不再包括部署堆栈。因此,Java SE 8作为最后一个具有Deployment Stack的LTS版本,Oracle将会支持到Java SE 8结束。

JavaFX 已开源并经过重新设计,可作为独立库使用,而不是包含在 JDK 中。从 Java SE 11 开始,JavaFX 不包含在 Oracle JDK中。Java SE 8 上对JavaFX 的支持将持续到 2025 年 3 月。
在这里插入图片描述
下面是知识点,对这几个夕阳红技术做简要说明。

什么是Deployment Stack?

Java的Deployment Stack技术在JDK 9中标记为弃用,在JDK 11中已删除。 它是JRE的工具类库(deploy.jar), 为Java Web Start、Applets技术提供支持。

什么是Java Web Start?

Java Web Start是基于Java 技术的应用程序的一种部署解决方案。从Java 5.0发布版本开始,Java 运行时环境 (JRE) 中就包含Java Web Start。这意味着安装 Java 时,将自动安装 Java Web Start。

Java Web Start支持多种方式来启动应用程序:

  • 单击Web页中的链接启动
  • 通过创建快捷方式,点击桌面图标启动
  • 通过Application Cache Viewer,从Java控制面板中启动
    • 以Windows为例:开始 > 设置 > 控制面板,双击Java图标打开Java控制面板
  • 通过命令行方式启动:javaws url_of_jnlp

什么是JavaFX?

在JDK 11以前,JavaFX是包含在JDK里的,可以直接使用。JDK11之后,JavaFX就从JDK中分离出来,必须单独下载;或者从IDEA里直接构建:
在这里插入图片描述
(独立后的)JavaFX是一个开源的下一代客户端应用平台,适用于基于Java构建的桌面、移动端和嵌入式系统。 它是许多个人和公司的共同努力的成果,目的是为开发丰富的客户端应用提供一个现代、高效、功能齐全的工具包。

这是它的官方中文网站:https://openjfx.cn

有些言论说从Java 8开始就没有JavaFX了,为了验证这个问题,我特意看了看,辟谣了:
在这里插入图片描述

OpenJDK的Java SE支持路线图

看完Oracle的JDK/Java SE支持线路图,回头再看看OpenJDK的。
在这里插入图片描述
由于OpenJDK发行版众多,这里再介绍两个发行版:Microsoft OpenJDKAlibaba Dragonwell

✌Microsoft OpenJDK

官方地址:https://docs.microsoft.com/zh-cn/java/openjdk

支持策略

Microsoft Build of OpenJDK 的 LTS 版本将收到免费季度更新,可在上面官方地址获得。

Microsoft Build of OpenJDK二进制文件可能包含修补程序增强功能,我们认为对客户很重要但尚未合并到上游 OpenJDK 项目中。 在发行说明中,尚未正式上游的修补程序和增强功能将在我们的发行说明中清楚地标出,其中包含可用的源代码。

Azure客户支持

具有在线提工单的商业支持

社区支持

github提issue

Roadmap

OpenJDK的节奏非常快,6个月发布一个版本。但是Microsoft只会对LTS版本提供长期支持,对应时间表为:
在这里插入图片描述

Tips:*表示Windows x86 32 位上的 OpenJDK 17支持将于2023 年1月10日结束,这里指的64位的系统

值得一提的是,Microsoft JDK并没有JDK 8版本。因为Microsoft认为,现在问题已经不是“应不应该迁移到JDK 11”了,而是“何时”。既然是必然趋势,而Microsoft JDK并无历史包袱,就一步越到11。

操作系统要求

Microsoft JDK支持如下操作系统:
在这里插入图片描述
支持得是非常全面的,Windows、macOS、Linux三大系统都支持,还支持Arch64架构呢。

✌Alibaba Dragonwell

官方地址:https://dragonwell-jdk.io

阿里巴巴承诺“龙井”是长期支持版本,提供8/11/17三大版本支持(仅Linux系统):

承诺按季度更新。阿里云为此也做了背书:
在这里插入图片描述

✍总结

通过本文似乎能读出Oracle意识到了危机,讨好用户的用意:

  • 对Java SE 8的支持一直到了2030年12月,稳定基本盘
  • 对Java SE 17开始给“所有用户”【免费】使用,诚意满满

    虽然Oracle JDK宣布收费,OpenJDK像雨后春笋般成长出来,经历住了市场的考验,大批用户倒戈。作为开发者,你是更看好官方纯正血统的Oracle JDK还是开放自由的OpenJDK呢?

目录
相关文章
|
3月前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
72 2
|
28天前
|
安全 Java 编译器
JDK 10中的局部变量类型推断:Java编程的简化与革新
JDK 10引入的局部变量类型推断通过`var`关键字简化了代码编写,提高了可读性。编译器根据初始化表达式自动推断变量类型,减少了冗长的类型声明。虽然带来了诸多优点,但也有一些限制,如只能用于局部变量声明,并需立即初始化。这一特性使Java更接近动态类型语言,增强了灵活性和易用性。
104 53
|
20天前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
42 1
|
2月前
|
缓存 Java Maven
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
如何解决Java项目中因JDK版本不匹配导致的编译错误,包括修改`pom.xml`文件、调整项目结构、设置Maven和JDK版本,以及清理缓存和重启IDEA。
54 1
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
|
2月前
|
设计模式 Java API
[Java]静态代理与动态代理(基于JDK1.8)
本文介绍了代理模式及其分类,包括静态代理和动态代理。静态代理分为面向接口和面向继承两种形式,分别通过手动创建代理类实现;动态代理则利用反射技术,在运行时动态创建代理对象,分为JDK动态代理和Cglib动态代理。文中通过具体代码示例详细讲解了各种代理模式的实现方式和应用场景。
30 0
[Java]静态代理与动态代理(基于JDK1.8)
|
2月前
|
Java
让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)
本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。
27 1
|
2月前
|
Java
Java基础之 JDK8 HashMap 源码分析(中间写出与JDK7的区别)
这篇文章详细分析了Java中HashMap的源码,包括JDK8与JDK7的区别、构造函数、put和get方法的实现,以及位运算法的应用,并讨论了JDK8中的优化,如链表转红黑树的阈值和扩容机制。
31 1
|
3月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
3月前
|
Java API 开发者
【Java模块化新飞跃】JDK 22模块化增强:构建更灵活、更可维护的应用架构!
【9月更文挑战第9天】JDK 22的模块化增强为开发者构建更灵活、更可维护的应用架构提供了强有力的支持。通过模块化设计、精细的依赖管理和丰富的工具支持,开发者可以更加高效地开发和管理应用,提高应用的性能和可维护性。
95 10
|
3月前
|
监控 IDE Java
【Java性能调优新工具】JDK 22性能分析器:深度剖析,优化无死角!
【9月更文挑战第9天】JDK 22中的性能分析器为Java应用的性能调优提供了强大的支持。通过深度集成、全面监控、精细化分析和灵活报告生成等核心优势,性能分析器帮助开发者实现了对应用性能的全面掌控和深度优化。在未来的Java开发过程中,我们期待性能分析器能够继续发挥重要作用,为Java应用的性能提升贡献更多力量。

推荐镜像

更多