科普文:国内外JDK汇总

345 篇文章 1 订阅
264 篇文章 0 订阅

1.简介

JDK 有多个构建版本,而实际只有一组源代码,即 OpenJDK,使用分布式版本控制系统 Mercurial 托管在 OpenJDK。Sun Microsystems公司在2006年的JavaOne大会上称将对Java开放源代码,于2009年4月15日正式发布OpenJDK。任何人都可以获取这些源码,并用其构建一个变种版本进行发布。当然需要一个独有的认证程序来确保构建的变种版本是有效的,这个认证程序是由 JCP(Java Community Process)组织审核的,该组织会提供一套技术兼容性工具包 TCK(Technology Conformance Kit)。如果你构建了一个 OpenJDK 的变种版本,并通过了 TCK 的兼容性测试,则可以将该变种版本称为“Java SE Compatible”(兼容 Java SE 的 JDK)。

New Relic2022调研 大部分开发人员还是会从Oracle获得JDK,而OpenJDK项目中的开源内容已经产生了丰富的选择

image.png

2.国外JDK介绍

2.1 OpenJDK

OpenJDK是Java的开发环境(JDK)的开源版本,完全自由,开放源码。基于 GPL 协议开源,基于 GPL 协议开源。Sun Microsystems公司在2006年的JavaOne大会上称将对Java开放源代码,于2009年4月15日正式发布OpenJDK。甲骨文在2010年收购Sun Microsystem之后接管了这个项目。Oracle 提交的源代码衍生出 Oracle JDK 和 Oracle OpenJDK 不同的编译版本,从 Java 11 开始,两者的特性差异已经最小化,差异部分大多是 Oracle 的商业特性。但 Oracle OpenJDK 大版本发布后,Oracle 对其最多会有两次安全补丁的升级(发布后的六个月内),之后不再负责该大版本维护,如果用户想持续获得安全升级,需要及时更新到新的大版本。由于 Oracle OpenJDK 是开源的,因此可以直接基于源码编译出社区版 JDK,甚至可以加入自定义特性并商业化。值得一提的是,在安全补丁级别相同的情况下,Oracle JDK 并不比 OpenJDK 更好。如果不需要商业支持或企业管理工具,可以选择使用 Oracle OpenJDK 构建版本。

2016年8月22日,Google在Android 7.0 Nougat中,将专利的JDK替换成开源方案的OpenJDK,以彻底解决Java的专利问题。

image.png

2.2 Oracle JDK

Oracle JDK 是Java官方Oracle公司基于OpenJDK构建,收费。就是之前的 Sun JDK,被 Oracle 收购后命名为 Oracle JDK,由 Oracle 的团队维护。从 Java 11 开始提供付费的商业支持,当然个人或非商业用途仍然可以享受免费支持。但现阶段还没有单独针对 Oracle JDK 的付费策略,基本是和 Oracle 的其它商业产品绑定,Oracle 计划在 2026 年后提供全额付费的服务支持。Oracle JDK 在8u212 版本之后是收费的。

image.png

2.3 其他国外JDK

Amazon Corretto

Amazon Corretto 是亚马逊云基于OpenJDK构建,收费。

Eclipse Temurin

Eclipse Temurin(曾用名:AdoptOpenJDK) 是Eclipse基金会基于OpenJDK的构建,支持Oracle公司的HotSpot虚拟机和Eclipse基金会的OpenJ9虚拟机,免费。

Azul Zulu OpenJDK

Azul Zulu OpenJDK 是总部位于加州桑尼维尔的Azul公司基于OpenJDK的构建,免费。

Red Hat build of OpenJDK

Red Hat build of OpenJDK 是Red Hat(红帽子)公司基于OpenJDK的构建,免费。它通常被集成在 Red Hat 的操作系统中(RHEL, Red Hat Enterprise Linux)。提供商业付费支持。

BellSoft Liberica JDK

BellSoft Liberica JDK 是由OpenJDK的贡献者之一BellSoft基于OpenJDK的构建,免费。

SAP SapMachine

SAP SapMachine 是OpenJDK 项目的贡献者之一SAP公司基于OpenJDK的构建,免费。

Microsoft Build of OpenJDK

Microsoft Build of OpenJDK 是微软公司基于OpenJDK的构建,免费。

3. 国内JDK介绍

3.1 阿里巴巴Dragonwell JDK

Alibaba Dragonwell 是阿里巴巴公司基于OpenJDK的构建,免费。阿里巴巴Dragonwell没有通过TCK测试

Alibaba Dragonwell 会针对 Long Term Support(LTS) 提供 Java 8 、Java 11 和Java17版本

Dragonwell随阿里云 VM 镜像发布,免费提供给阿里云客户使用;

龙井 (dragonwell-jdk.io)

image.png

生产和安全

阿里巴巴Dragonwell包括来自上游的最新错误修复和secutiry补丁,并提供了在阿里巴巴生产环境中广泛使用的额外功能。

性能

作为阿里巴巴Java应用的引擎,Dragonwell支持阿里巴巴经济中的所有Java业务,在业务场景中积累了大量的实践和创新。

云原生

在 JWarmup 和 ElasticHeap 的帮助下,您的应用程序将消耗更少的预热时间和内存占用。

工具

集成JFR,Java Mission Control和一系列实用的监控和故障排除工具。

3.2 腾讯Kona JDK

腾讯 Kona(Tencent Kona) 是腾讯公司基于OpenJDK的构建,免费。2019年11月正式开源。腾讯 Kona(Tencent Kona,TK)是完全开源、生产环境就绪的 OpenJDK 发行版,完全兼容开源 OpenJDK8、OpenJDK11 及 OpenJDK17。腾讯 Kona 基于 TencentJDK 开发,支持多种运行平台,同时针对云应用场景定制新的功能及优化, 具备更快的云应用启动速度,更好的性能以及提供更为便捷的分析、诊断工具。此外,腾讯 Kona 服务于腾讯内部大量 Java 应用程序,提供稳定、高效的 Java 运行环境。腾讯Kona连续四次对OpenJDK开源社区贡献全国第一(JDK15~18)

image.png

image.png

低成本

腾讯 Kona 完全开源,企业版提供额外企业级订阅与技术支持服务,满足您的多样性业务需求,并提供极具竞争力的价格。

高性能

结合云计算 Java 场景与特点,腾讯 Kona 进行有针对性的优化,持续改进 GC、JIT 等引擎,指令级别优化,支持腾讯大数据、云等各类业务的 Java 性能提升、latency SLA 提高,稳定支撑内部超百万核级业务。您可以享受到腾讯 Kona 带来的启动速度、性能以及存储方面的提升。

高可靠

腾讯 Kona 全兼容 OpenJDK,经海量生产负载验证,由腾讯专业团队进行长期维护,提供 JDK 层面技术保障,保证 Java 业务平稳运行。

安全性强

腾讯 Kona 团队紧密跟踪 OpenJDK 社区及业界安全漏洞,及时发现及修复安全问题,保障您业务的安全坚固。

支持多平台

多平台支持(64位 ARM 与 X86 平台),经过多项兼容性评测。

支持国密改造

提供国密算法支持,降低国密改造的成本。

定制化适用云场景

腾讯 Kona 专为云而生,针对云业务特点进行定制化功能开发及优化, 在保证稳定安全的同时,为您提供高效的云环境。

丰富的分析工具

腾讯 Kona 具备丰富的线上、线下分析工具、监控工具和调试工具, 为您提供简单高效的故障排查、问题诊断、性能监控机制。

3.3 华为毕昇JDK

华为毕昇JDK 是华为公司基于OpenJDK的构建,免费。毕昇 JDK 是华为基于 OpenJDK 优化后的开源版本,是一款高性能、可用于生产环境的 OpenJDK 发行版。毕昇 JDK 稳定运行在华为内部 500 多个产品上,毕昇 JDK 团队积累了丰富的开发经验,解决了许多实际业务中由原生 OpenJDK 缺陷引起的问题。

毕昇 JDK 致力于为 Java 开发者提供一款稳定可靠、高性能、易调测的 JDK,也为用户在鲲鹏 AArch64 架构上提供一个更好的选择。

快速序列化——提升原生序列化性能

在一些无法使用 Kyro(无法修改代码时),需要使用 OpenJDK 原生序列化特性的场景,OpenJDK 原生的序列化机制会耗时较长,导致性能较低。毕昇 JDK8&11 通过实行快速序列化特性提升其性能

AppCDS——提升 java 应用启动速度

在 Java 程序运行初始阶段,类的加载是一个比较耗时的过程,且在每次程序运行中均需要执行一遍。而 CDS(Class Data Sharing)技术,就是把类加载后的数据保存到文件中,下次运行时,直接将加载后的类数据从文件中恢复到内存中,不需要再重新执行类的加载过程,从而提高性能。

G1GC 堆内存伸缩——及时释放空闲堆内存

在 OpenJDK 社区的 8u 版本中,即使 G1GC 在空闲堆内存没有被使用时,也不会主动及时归还给 OS,会造成内存资源占用浪费情况。由于 G1 尽可能避免触发 Full GC,因此在许多情况下,除非强制从外部执行 Full GC,否则 G1 不会将空闲的 Java 堆内存释放给操作系统。毕昇 JDK8 通过在 G1 中引入堆内存伸缩特性,在应用程序 CPU 占比不高情况下,定期尝试释放 G1 的空闲堆内存空间给 OS,达到内存资源的最优使用。

KAE Provider——支持鲲鹏硬加速/提升加解密速度

KAE 加解密是鲲鹏加速引擎的加解密模块,鲲鹏硬加速模块实现了 RSA/ SM3/ SM4/ DH/ MD5/ AES等算法,提供了高性能对称加解密、非对称加解密算法能力,兼容 openssl1.1.1a 及其之后版本,支持同步和异步机制。毕昇 JDK 8 通过利用 Provider 机制,实现对鲲鹏服务器 KAE 加解密特性的支持,以帮助用户提升在鲲鹏 AArch64 服务器加解密业务的竞争力

### 回答1: 要拉取 openjdk:11-jdk-stretch docker 镜像,可以按照以下步骤进行: 首先,确保已经安装了 Docker 并且可以正常运行。你可以在终端中输入 docker version 来检查 Docker 版本信息。 接下来,在终端中运行以下命令来拉取 openjdk:11-jdk-stretch 镜像: docker pull openjdk:11-jdk-stretch 这个命令会从 Docker Hub 上下载 openjdk:11-jdk-stretch 镜像,并且自动保存到本地。 拉取过程可能会需要一些时间,具体取决于你的网络速度。 当下载完成后,你可以使用以下命令来查看已下载的镜像列表: docker images 这个命令会列出所有本地已下载的镜像,你可以在其中找到刚刚拉取的 openjdk:11-jdk-stretch 镜像。 接下来,你可以使用以下命令来创建并运行一个基于 openjdk:11-jdk-stretch 镜像的容器: docker run -it openjdk:11-jdk-stretch 这个命令会自动运行 openjdk:11-jdk-stretch 镜像,并通过交互模式(-it 参数)连接到容器的终端。 现在你可以在容器中运行 Java 应用程序或执行其他操作。在容器中进行的更改和操作将不会影响到本地机器。 最后,如果你想停止正在运行的容器,可以按下 Ctrl+C 来退出容器终端,并使用以下命令停止容器: docker stop 容器ID 这里的 "容器ID" 是你要停止的容器的唯一标识符。 以上就是使用 Docker 拉取 openjdk:11-jdk-stretch 镜像的步骤和基本操作。希望对你有所帮助! ### 回答2: 要拉取 OpenJDK 11 的 Docker 镜像,可以使用以下命令: ``` $ docker pull adoptopenjdk/openjdk11:jdk-11.0.12_7-docker-stretch ``` 这个镜像使用了 AdoptOpenJDK 组织提供的 OpenJDK 11 版本,并基于 Debian Stretch 系统构建。 首先,我们使用 `docker pull` 命令指定要拉取的镜像。它会下载镜像的最新版本并保存到本地。在这个命令中,我们使用了 `adoptopenjdk/openjdk11` 作为镜像的仓库名,后面的 `jdk-11.0.12_7-docker-stretch` 是具体的版本标识符,表示要拉取的是 OpenJDK 11 版本。 拉取镜像可能需要一些时间,取决于你的网络速度和镜像的大小。一旦拉取完成,你就可以使用该镜像来创建和运行基于 OpenJDK 11 的应用程序的容器了。 希望这个回答对你有所帮助! ### 回答3: 要拉取OpenJDK 11的JDK镜像,可以使用以下命令: ``` docker pull openjdk:11-jdk-stretch ``` 这个命令会从Docker Hub上拉取OpenJDK 11的JDK镜像,镜像的标签为"stretch",表示基于Debian 9系统。 拉取过程中,Docker会自动下载并解压镜像件。完成后,你就可以在本地使用该镜像来构建和运行Java应用程序。 OpenJDK是一个开源的Java开发工具包,它提供了Java编译器、运行时环境和相关的开发工具。通过使用Docker拉取OpenJDK镜像,你可以快速搭建开发和测试环境,而无需手动安装和配置Java环境。 在拉取完镜像之后,你可以使用以下命令来查看已拉取的镜像列表: ``` docker images ``` 该命令会显示已拉取的OpenJDK 11镜像的详细信息,包括镜像ID、标签、大小和创建时间等。 希望这个回答能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-无-为-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值