Java小史:JDK现状

简介: 简单说一下现在主流的JDK

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月前
|
安全 Oracle Java
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
188 0
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
|
2月前
|
Oracle Java 关系型数据库
新手必看:Java 开发环境搭建之 JDK 与 Maven
本文分享了 Java 学习中 JDK 安装配置与 Maven 使用的入门知识,涵盖 JDK 下载安装、环境变量设置、Maven 安装配置及本地仓库与镜像设置,帮助新手快速搭建 Java 开发环境。
217 0
|
2月前
|
安全 Java 微服务
Java 最新技术和框架实操:涵盖 JDK 21 新特性与 Spring Security 6.x 安全框架搭建
本文系统整理了Java最新技术与主流框架实操内容,涵盖Java 17+新特性(如模式匹配、文本块、记录类)、Spring Boot 3微服务开发、响应式编程(WebFlux)、容器化部署(Docker+K8s)、测试与CI/CD实践,附完整代码示例和学习资源推荐,助你构建现代Java全栈开发能力。
367 0
|
3月前
|
安全 Java API
Java最新技术(JDK 11+) 及以上 Java 最新技术之集合框架实操应用详解
本示例基于Java最新技术(JDK 11+),涵盖集合框架的核心功能,结合Java 8+特性(如Stream API、Lambda表达式)与并发编程最佳实践。内容包括:List操作(初始化、Lambda过滤、Stream处理)、Map操作(流式过滤、ConcurrentHashMap原子操作、并行流)、Set操作(TreeSet排序、CopyOnWriteArraySet并发安全)、Queue/Deque操作(优先队列、双端队列)以及高级聚合操作(集合转换、分组统计、平均值计算)。 [代码下载](https://pan.quark.cn/s/14fcf913bae6)
77 4
|
7月前
|
Java API 数据安全/隐私保护
探索Java动态代理的奥秘:JDK vs CGLIB
动态代理是一种在 运行时动态生成代理类的技术,无需手动编写代理类代码。它通过拦截目标方法的调用,实现对核心逻辑的 无侵入式增强(如日志、事务、权限控制等)。
195 0
探索Java动态代理的奥秘:JDK vs CGLIB
|
8月前
|
算法 Java 编译器
深入理解 Java JDK —— 让我们从基础到进阶
JDK(Java Development Kit)是 Java 开发的核心工具包,包含编译、运行和调试 Java 程序所需的所有工具和库。它主要由 JVM(Java 虚拟机)、JRE(Java 运行时环境)和 Java 核心类库组成。JVM 是跨平台运行的基础,负责字节码的加载、执行和内存管理;JRE 提供运行 Java 应用的环境;核心类库则提供了丰富的 API 支持。通过编写、编译和运行一个简单的 Java 程序,可以深入理解 JDK 的工作原理。此外,JDK 还提供了 JIT 编译、垃圾回收优化和并发工具包等高级功能,帮助开发者提高程序性能和稳定性。
792 10
|
10月前
|
Oracle 安全 Java
深入理解Java生态:JDK与JVM的区分与协作
Java作为一种广泛使用的编程语言,其生态中有两个核心组件:JDK(Java Development Kit)和JVM(Java Virtual Machine)。本文将深入探讨这两个组件的区别、联系以及它们在Java开发和运行中的作用。
365 1
|
10月前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
420 2
|
10月前
|
安全 Java 编译器
JDK 10中的局部变量类型推断:Java编程的简化与革新
JDK 10引入的局部变量类型推断通过`var`关键字简化了代码编写,提高了可读性。编译器根据初始化表达式自动推断变量类型,减少了冗长的类型声明。虽然带来了诸多优点,但也有一些限制,如只能用于局部变量声明,并需立即初始化。这一特性使Java更接近动态类型语言,增强了灵活性和易用性。
205 53