我应该使用哪个版本的 JDK?

news2024/11/27 19:55:07

本文在写作过程中参考了whichJDK

要构建和运行 Java 应用程序,就需要安装 JDK 环境。

OpenJDK 是 Java SE 规范的开源软件,但它只是源代码。二进制发行版由不同的供应商提供,适用于许多受支持的平台,这些发行版在许可证、商业支持、支持的平台和更新频率方面有所不同。

先说结论:

✅ 建议使用 Adoptium Eclipse Temurin 17 并确保您的本地版本与 CI 和生产版本匹配。


首先介绍不同版本的JDK

当前,JDK 计划每六个月(即每年的三月和九月)发布一个具有新版本。第三年的9 月发布一个长期支持 (LTS) 版本,承诺最少更新三年。

JDK版本类型发布日期主要更新推荐
8长期支持03/2014lambda先前发布模型下的最后一个 LTS 版本。Oracle 的免费更新已结束,但仍由其他人维护。在接下来的几个月内升级到 11 或 17!
9特征09/2017模块引入了新的发布模型。停产。现在升级到 11 或 17!
10特征03/2018var停产。现在升级到 11 或 17!
11长期支持09/2018新的 HTTP 客户端广泛使用的 LTS 版本。计划在未来几个月内升级到版本 17。
12特征03/2019停产。现在升级到17!
13特征09/2019停产。现在升级到17!
14特征03/2020新的Switch表达式停产。现在升级到17!
15特征09/2020文本块停产。现在升级到17!
16特征03/2021记录停产。现在升级到17!
17长期支持09/2021密封类当前的 LTS 版本。立即更新至 17.0.3+!
18特征03/2022默认为 UTF-8坚持17!
这是一个没有重要功能的短期版本。-Dfile.encoding=UTF-8您可能想通过在当前的 JDK 中进行设置来检查是否遇到“默认 UTF-8”的任何问题。
19特征09/2022仅预览和孵化器功能坚持17!
如果您之前升级到 18,请立即升级到 19。

您必须决定是要坚持使用最新的 LTS 版本,还是要使用最新的功能版本并每六个月升级一次。两种选择都可以,但如果您不确定,请坚持使用最新的 LTS 版本。

OpenJDK 项目本身在openjdk.java.net上进行管理,您可以在其中找到规范、源代码和邮件列表,但没有可供下载的构建版本。您需要选择一个发行版。


不同的厂商版本:

Oracle OpenJDK 

Oracle 以压缩存档格式为 Linux、macOS 和 Windows 提供 OpenJDK 构建。

这些构建只会更新 6 个月。在此短时间后将无法获得更新和安全补丁。这也适用于 LTS 版本!例如,最新的 OpenJDK 11 版本是11.0.2+9而当前的 OpenJDK 版本是11.0.12+7。

Oracle Java SE Development Kit (JDK)

Oracle 提供了 OpenJDK 的商业版本,它基于与 OpenJDK 完全相同的来源:Oracle Java SE Development Kit (JDK)。Oracle 为这些构建提供更新定期更新和安全补丁。

Adoptium Eclipse Temurin

Eclipse Adoptium是Eclipse Foundation旗下的顶级项目,为开源软件提供资源和专业的治理模型。Adoptium 工作组由对 Java 技术有战略兴趣的主要公司和组织组成,包括 Red Hat、IBM、Microsoft、Azul 和 iJUG。之前的 AdoptOpenJDK 项目已经迁移到 Eclipse Adoptium。

Adoptium OpenJDK 构建称为Eclipse Temurin,以区分项目和构建。

Eclipse Temurin 构建是高质量的、供应商中立的,并且在宽松许可下经过了 TCK 测试。

Adoptium 表示,只要积极维护相应的上游源代码,它将继续为 LTS 版本构建二进制文件。

AdoptOpenJDK

AdoptOpenJDK 项目是 Eclipse Adoptium 的前身,为默认的 HotSpot 和 OpenJ9 虚拟机提供高质量的 OpenJDK 构建。

Azul Zulu

Azul Systems, Inc. 专注于专业的 Java 技术和 JDK 的商业支持。Azul 在业界享有很高的声誉,并参与了各种工作组来发展 Java 平台。

Azul为许多操作系统和架构提供名为Azul Zulu的开源 OpenJDK 构建。此外,Azul 还提供满足特殊要求的构建,例如精简的 JRE 和包含 OpenJFX 的构建。

这些构建的缺点是依赖于一家公司,这可能会突然更改其许可或更新政策。

Azul Zing

Azul Zing 是一个商业 JDK,目前作为Azul Platform Prime销售。它需要与 Azul Systems 签订商业合同才能用于生产。

Zing 基于 OpenJDK,并添加了获得专利的“C4 无间断垃圾收集器”、“Falcon JIT 编译器”(以更高的 CPU 使用率和更长的启动和预热时间为代价优化吞吐量)和一些功能加快编译器预热时间(通过分析和存储文件中训练运行的优化来减轻 Falcon JIT 编译器较慢的预热时间)。

Azul Zing 在金融交易应用程序中有一些用例,其中 GC 暂停是一个问题。除此之外,常规 OpenJDK 包含免费的低暂停时间 GC Shenandoah和ZGC,它们可能是替代方案。

BellSoft Liberica JDK

与Azul类似,BellSoft专注于专业的Java技术和对JDK的商业支持。此外,BellSoft 在业界享有很高的声誉,并参与了各种工作组来发展 Java 平台。

BellSoft为几乎所有操作系统和架构提供名为Liberica JDK的开源 OpenJDK 构建。

流行的 Spring Boot 框架选择 Liberica JDK 作为其buildpack的运行时。

这些构建的缺点是依赖于一家公司,这可能会突然更改其许可或更新政策。

IBM Semeru Runtime

IBM 开发了自己的 Java 虚拟机版本,称为 J9,并作为Eclipse OpenJ9 开源。它是默认 HotSpot Java 虚拟机的替代品,但它从未获得太多人气。

IBM 现在提供基于 Eclipse OpenJ9 Java 虚拟机和一些 OpenJDK 类库的名为Semeru Runtime的构建。OpenJ9内存占用低,使用共享类启动速度快,但与 Hotspot 虚拟机相比吞吐量较低。

Amazon Corretto 

由于 Oracle 改变了对其 OpenJDK 构建的支持和许可政策,主要的云提供商决定建立自己的托管 OpenJDK 构建并提供长期更新。显然,这是为了规避风险,尤其是对甲骨文的诉讼。

2018 年,AWS 发布了Corretto,这是另一个 OpenJDK 构建。

AWS 包括来自较新 OpenJDK 版本的错误修复的反向端口,并声称他们将添加可能尚未集成到 OpenJDK 项目中的补丁。亚马逊已经实施了一个替代加密提供商,该提供商已针对其服务进行了优化。它计划用作 Corretto 中的默认加密实现。

Amazon 为主要开发平台提供发行版,并为其自己的 Amazon Linux 2 提供优化版本。

Microsoft  OpenJDK 

2021 年,微软发布了 OpenJDK 的 Microsoft Build,这是另一个 OpenJDK 构建。

Microsoft 可能会包含来自较新 OpenJDK 版本的错误修复的反向端口,并声称他们将添加可能尚未集成到 OpenJDK 项目中的补丁。

Microsoft 为主要开发平台提供版本。

Alibaba Dragonwell

阿里巴巴提供了一个 OpenJDK 构建,其中包括后台端口和一些额外的功能

SapMachine

SapMachine 是另一个 OpenJDK Build,由 SAP 维护。

Red Hat OpenJDK

Red Hat 为 LTS 版本提供 OpenJDK 构建。

OJDK

该项目已停止。ojdkbuild 项目的目标是提供 OpenJDK 的 Windows x86_64 二进制文件,这些二进制文件在行为上尽可能接近 Linux OpenJDK 包,例如,通过使用系统库而不是 zlib 或 OpenSSL 的打包版本。它使用了 CentOS 中包含的软件包。这些构建的一个用例是在 Windows 机器上开发 Java 软件并将它们部署到生产环境中的 Linux 服务器。

GraalVM

GraalVM 是一个完全兼容的 JDK,但与所有其他构建有很大不同。

GraalVM 由 Oracle 开发。它基于 OpenJDK,但包括一个新的高性能编译器和一个新的多语言虚拟机(可以执行用不同编程语言编写的代码)。还可以创建高度优化且启动速度极快的特定于平台的本机可执行文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/180504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式 - 创建型模式_7种单例模式实现

文章目录创建型模式概述Case7种单例模式实现静态类使⽤懒汉模式(线程不安全)懒汉模式(线程安全)饿汉模式(线程安全)使⽤类的内部类(线程安全)双重锁校验(线程安全)CAS「AtomicReference」(线程安全)Effective Java作者推荐的枚举单例(线程安全)小结创建型模式 创建型模式提供创…

MySQL约束详解

目录 概念 作用 分类 MySQL约束——主键约束 概念 操作 操作——添加单列主键 操作——添加多列主键(联合主键) 操作——删除主键约束 MySQL约束-自增长约束(auto_increment) 概念 语法 操作 特点 指定自增字段初始值 delete和truncate在删…

零基础学JavaWeb开发(二十六)之 nginx(2)

5、基于Nginx解决跨域问题 5.1、什么是网站跨域问题 前端部署 html.mayikt.com /index.html 后端部署 api.mayikt.com/ 接口 java 浏览器访问:http://html.mayikt.com/user.html 页面里面 ajax 请求:http://api.mayikt.com/getUser 浏览器访问&#…

力扣刷题记录——697. 数组的度、728. 自除数 、821. 字符的最短距离

本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《力扣刷题记录——697. 数组的度、728. 自除数 、821. 字…

腾讯云开发者2022年度热文盘点

01十亿人都在用的健康码运维体系如何设计?随着疫情防控模式的迭代,健康码访问DAU逐渐趋于下跌,意味着健康码将逐步完成历史使命,见证着疫情的结束。本文特邀腾讯研发工程师李雄政将从技术架构、可观测体系、运营保障体系等运维体系…

星德胜冲刺上交所上市:计划募资约10亿元,朱云舫为实际控制人

近日,星德胜科技(苏州)股份有限公司(下称“星德胜”)预披露更新招股书,准备在上海证券交易所主板上市。据贝多财经了解,星德胜于2022年7月1日递交上市申请,海通证券为其保荐机构。 …

java ssm学生成绩查询考务系统

1 绪论 1 1.1 项目背景 1 1.2 项目研究的目的和方法 1 1.2.1 项目的研究目的 1 1.2.2 开发方法及步骤 1 1.3 本章小结 2 2. 开发平台介绍 3 2.1 系统开发环境 3 2.1.1 Eclipse 3 2.2 相关技术 4 2.2.1 JSP技术 …

Web Spider 常见混淆EVAL、AA、JJ、JSFUCK

文章目录一、EVAL & constructor二、AA混淆三、JJ混淆四、JSFUCK五、针对混淆的方法简单hook总结混淆的原理:就是把原本清晰的代码故意搞得花里胡哨,让局外人看不懂; 混淆的目的:让逆向者很难理解代码的意图,无法读…

随笔集1.24

秋夜独坐经常性会出现啥都不想干的情况,似那黄鹤一去不复返,只留下脑海的白云千载空悠,对任何事情,读书、研究、游戏都提不起兴趣,每当此时静坐于窗下灯前,想起王摩诘所谓雨中山果落,灯下草虫鸣…

第二章-计算机网络物理层

文章目录计算机网络一、物理层1.1、物理层的基本概念1.2、数据通信的基本知识编码与调制编码调制混合调制信道的极限容量传输方式1.3、物理层下面的传输媒体导引型传输媒体非导引型传输媒体1.4、互联网接入技术电话网拨号接入数字用户线接入光纤同轴混合网接入光纤接入无线接入…

用友BIP对接外部旺店通企业版奇门系统

用友BIP对接外部旺店通企业奇门系统源系统:旺店通企业奇门慧策最先以旺店通ERP切入商家核心管理痛点——订单管理,之后围绕电商经营管理中的核心管理诉求,先后布局流量获取、会员管理、仓库管理等其他重要经营模块。慧策的产品线从旺店通ERP起步&#xf…

Jetpack架构组件库:Lifecycle、LiveData、ViewModel

Lifecycle 添加依赖 dependencies {def lifecycle_version "2.5.1" // ViewModelimplementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"// ViewModel utilities for Composeimplementation "androidx.lifecycle:lifecy…

解决nes_py在pip安装报错的问题

目录 项目场景: 问题描述 原因分析: 解决方案: 解决结果: 项目场景: 想跟随油管某视频复现强化学习方法玩超级马里奥的过程,结果在在Anaconda3虚拟环境中用pip安装nes_py时一直报错,报错信…

基于Python实现的图像文字识别OCR工具,包含GUI界面附完整版代码可直接运行

引言 最近在技术交流群里聊到一个关于图像文字识别的需求,在工作、生活中常常会用到,比如票据、漫画、扫描件、照片的文本提取。 博主基于 PyQt + labelme + PaddleOCR 写了一个桌面端的 OCR 工具,用于快速实现图片中文本区域自动检测 + 文本自动识别。 识别效果如下图所示:…

总结JDK中的时间日期类

在学习SpringMVC时,遇到了接收时间日期类型的参数的案例。 回顾JDK中与时间日期相关的API。 来系统地学习一下日期时间相关的API。 前置知识 在世界上有统一的时间标准 格林尼治时间,简称GMT(以伦敦的本初子午线为标准)&#x…

【BTC】数据结构

BTC 中对交易数据的存储主要涉及到了两种数据结构,一种是区块链,一种是 Merkle Tree。这两种数据结构组成了 BTC 中完整的区块链结构(如下图所示),共同完成对数据的存储和验证,确保交易的有效性。 一、区块…

常见的反爬手段和解决思路

常见的反爬手段和解决思路 学习目标 了解 服务器反爬的原因了解 服务器常反什么样的爬虫了解 反爬虫领域常见的一些概念了解 反爬的三个方向了解 常见基于身份识别进行反爬了解 常见基于爬虫行为进行反爬了解 常见基于数据加密进行反爬 1 服务器反爬的原因 爬虫占总PV(PV是指…

基于nodejs+vue的中国古诗词的设计与实现

目 录 摘要 I Abstract II 1 绪论 1 1.1 选题背景 1 1.2 选题意义 1 1.3 研究内容 2 2 相关技术介绍 3 3 系统分析 5 3.1可行性分析 5 3.1.1 操作可行性 5 3.1.2 经济可行性 5 3.1.3 技术可行性 5 3.2 需求分析 5 3.2.1非功能性需求 …

Python学习——(数据类型及其常用函数)

目录 一、数据类型 判断数据类型type() 二、数据类型的转换 三、运算符 (一)算数运算符 (二)赋值运算符 (三)复合赋值运算符 (四)比较运算符 (五)逻辑运算符 四、输入输出 (一)输出 (二)输入 五、各数据类型常用函数 (一)数值函数 1.绝对值abs(x) 2.最大值max(…

Git + Jenkins 自动化 NGINX 发布简易实现

概述 之前基于 GitLab Jenkins 实现了简单的 NGINX 的自动化发布。 具体包含如下的组件: GitLab包括 GItLab 的 WebHook; Jenkins 及其插件:Generic Webhook TriggerPublish Over SSH 🧠疑问: 为什么不用 Ansible&…