认知篇 | 理解OpenJDK和国内外的JDK有哪些,有啥关系?

【JAVA基础知识】-过往笔记搬运存档 大一的笔记,当时是记在word里的,给搬过来了 阅读详情

本文主要讲解OpenJDK、JDK以及众多发行版之间的关系确实是Java开发者的一项必备知识。

图片

OpenJDK 与 JDK 的关系

通常所说的“JDK”是一个广义的概念,而OpenJDK 是它的“官方开源参考实现” 。可把OpenJDK想象成一份标准的“蓝图”,各厂商和机构基于这份蓝图,加入自己优化和特性,制做出各自的JDK产品(发行版)。

OpenJDK和其他JDK主要区别:

对比维度

OpenJDK (官方开源蓝图)

其他JDK发行版 (如Oracle JDK)

性质与授权

开源项目,采用 GPLv2 许可,允许商业使用。

多数基于OpenJDK,但可能使用其他许可(如Oracle JDK的付费商业许可)。

功能完整性

核心实现,不包含浏览器插件、Java Web Start等部署功能。

通常功能更完整,或提供额外的商业特性与集成支持。

性能与优化

提供基础性能。

厂商会针对特定场景(如云环境、特定硬件)进行深度优化。

支持与服务

社区支持。

通常提供商业支持、长期维护(LTS)和安全更新服务。

如何选择?

在选择版本时,最关键的原则是优先选择长期支持(LTS)版本,能提供长达数年的稳定更新,非常适合生产环境。对于生产环境,通常不建议使用非LTS版本。

目前主流的LTS版本包括:

Java 8:依然非常稳定,拥有最广泛的生态兼容性,是老牌和遗留系统的常见选择。

Java 11:生态成熟,是许多现代应用和框架的基准线,迁移成本相对较低。

Java 17:新项目的首选。它在性能、垃圾回收器(如ZGC)和语言特性上都带来了重要改进,容器友好性也更佳。

Java 21:最新的LTS版本,引入了虚拟线程(Project Loom)等革命性特性,代表了未来发展方向。

国内外主流JDK发行版

1.国外主流产品

发行版

主要特点

Oracle JDK

官方发行版,功能齐全。自JDK 11起,生产环境商用可能需要付费订阅,需仔细阅读许可条款。

Eclipse Temurin (原AdoptOpenJDK)

由Eclipse基金会管理,提供高质量、完全免费、经过TCK认证的OpenJDK构建,是社区中最受信赖的发行版之一。

Amazon Corretto

亚马逊提供的免费LTS发行版,在其内部经历了大规模生产环境验证,在AWS云服务和容器环境中表现优异。

Azul Zulu

Azul Systems提供的免费发行版,同时也提供商业版(Zulu Enterprise)和具有颠覆性低延迟GC的Zing JDK。

Microsoft JDK

微软为Azure环境优化的JDK,深度集成于其云服务生态中。

国产JDK产品有哪些?

国产JDK近年来发展迅速,为特定架构和国内生态提供了更多选择。

产品名称

主要支持/提供商

特点与适用场景

毕昇JDK

华为

基于OpenJDK,在ARM架构(特别是鲲鹏处理器)上进行了大量性能优化和稳定性增强,适用于大数据、云计算等场景。支持Java 8, 11, 17, 21等LTS版本。

阿里巴巴 Dragonwell

阿里巴巴

在搜索结果中被列为全球JDK发行商之一,通常面向大规模云原生应用进行优化。

Kunpeng Devkit

同样在报告中出现,应与鲲鹏计算产业生态相关。

如何选择JDK?

没有绝对的“最佳”,只有最合适的;通常可参考以下建议:

企业级应用

  • 追求极致稳定与官方支持:若预算允许且依赖其特定功能,可考虑Oracle JDK(注意许可成本)。
  • 运行在鲲鹏ARM服务器:使用国产华为毕昇JDK; 
  • 深度集成国内技术生态:使用阿里巴巴Dragonwell。
  • 部署在微软Azure云:Microsoft JDK 能带来更好的体验。
  • 全新项目:建议从Java 17 或 Java 21 开始。传统或遗留系统:如果框架依赖难以升级,继续使用Java 8 并选择一个仍提供更新的JDK发行版(如Temurin、Corretto的JDK 8版本)是稳妥之举。

文章小结:

本文解析了OpenJDK与JDK的关系,指出OpenJDK是官方开源参考实现,各厂商基于此开发不同JDK发行版。对比了OpenJDK与其他JDK在授权、功能、性能等方面的差异,建议优先选择LTS版本(如Java8/11/17/21)。介绍了国内外主流JDK发行版特点,包括OracleJDK、Temurin、Corretto等国外产品,以及华为毕昇JDK、阿里Dragonwell等国产JDK。最后给出选型建议:根据项目需求选择合适版本,新项目推荐Java17/21,传统系统可选Java8,并考虑云环境适配性。

文章至此。

JDK 17、OpenJDK 17、Oracle JDK 17 的说明 你的操作你得到的是什么优点JDK 17规范的OpenJDK实现(由系统仓库提供)安装简单、免费、集成度高、更新方便从Oracle官网下载并安装JDK 17规范的Oracle JDK实现可能包含最新的紧急修复(但需注意许可证条款)从Azul官网下载Zulu的DEB包安装JDK 17规范的Azul Zulu实现(基于OpenJDK)经过额外测试,提供多平台支持对于绝大多数用户,在银河麒麟上直接使用就是安装JDK 17的最佳实践。你得到的是一个完全符合标准、免费且易于管理的JDK。 阅读详情

相关推荐

openJDK 与 Hotspot对应关系

<br />链接地址:https://gist.github.com/925323<br /> <br />由于某些原因,我贴在这里,供自己参考。Correspondence between Sun/Oracle JDK, OpenJDK and HotSpot VM versionsbuild dateSun/Oracle JDK VersionOpenJDK VersionHotSpot VM Version2006-11-291.6.0-b1051.6.0-b1052007-03-141.6.0_01

aliveTime的专栏 5685

Java——OpenJDK和JDK的区别

OpenJDK是jdk的开放原始码版本,以GPL协议的形式放出。 在JDK7的时候,openjdk已经成为jdk7的主干开发,sun jdk7是在openjdk7的基础上发布的,其大部分原始码都相同,只有少部分原始码被替换掉。使用JRL(JavaResearch License,Java研究授权协议)发布。 至于openjdk6则更是有其复杂的一面,首先是openjdk6是jdk7的一个分支,并且尽量去除Java SE7的新特性,使其尽量的符合Java6的标准。

Pan_peter的博客 1万+

别再手动挂载NPU了!手把手教你用Ascend-Docker-Runtime一键启动昇腾AI容器

本文详细介绍了如何使用Ascend-Docker-Runtime一键启动昇腾AI容器,大幅简化NPU设备挂载流程。通过环境变量ASCEND_VISIBLE_DEVICES,开发者可以灵活指定NPU设备,提升开发效率。文章还提供了安装配置指南、高级使用技巧和常见问题排查方法,帮助开发者快速掌握这一高效工具。

weixin_42662605的博客 252

OpenJDK和JDK区别

OpenJDK和JDK区别 openJDKJDKOpenJDK和JDK区别 使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的openjdk,那么到底什么是openjdk,它与sun jdk有什么关系和区别呢? 历史上的原因...

1396

Python之美——Python2与Python3多版本共存

Python多版本共存的方法Python2、Python3共存的方法python2下载及环境变量配置第一步、打开Python官网,下载Python2第二步、python2环境变量配置测试结果 Python2、Python3共存的方法 方法如下: 1.先确保不同版本解释器的python.exe所在的路径在环境变量中 2.拷贝各自的python.exe并重命名即可 步骤(理解不了下面有图示): 1、首先你需要将不同的python版本安装,且都已经将跟版本的环境变量配置好了,python3和2的下载方式

chenchen5152的博客 3946

从零部署Stable Diffusion:本地环境搭建完整教程

本文专为“想自己跑Stable Diffusion但完全没经验”的新手设计,覆盖从硬件准备到生成第一张图的完整流程。不涉及复杂算法原理,但会讲清每个操作的“为什么”(比如为什么需要显卡?为什么要装CUDA?),帮你知其然更知其所以然。先检查硬件是否达标(显卡是核心!安装必要软件(操作系统、Python、CUDA)下载Stable Diffusion核心代码和模型解决常见报错,生成第一张图附赠模型库推荐和性能优化技巧显卡是核心:N卡+足够显存(至少6G)是本地部署的基础。CUDA是翻译。

AI算力网络与通信的博客 1292

java基础篇:JDK 与 OpenJDK 的区别与联系

由 Oracle 主导开发,并由 Java 社区共同维护。它的代码是开放的,遵循 GPL v2 许可证。OpenJDK(Open Java Development Kit)是。JDK(Java Development Kit)是。,用于开发 Java 应用程序。

x² 3865

AutoSAR系列讲解(深入篇)14.7-Mcal Adc配置(上)

详细讲解了ADC的各个配置项的作用

雪云飞星的博客 1万+

docker openjdk版本对照

本地JDK 1.8 对应的openjdk最合适的版本是openjdk14 详情查看docker 操作常用指令_木头没有瓜的博客-优快云博客

weixin_40918145的博客 5553

【点云鸟瞰图BEV】点云鸟瞰图BEV原理与可视化

本节将介绍激光雷达等点云的鸟瞰图生成原理、代码及效果图。 1 BEV视图原理 点云BEV(Bird's Eye View)视图是指点云在垂直于高度方向的平面上的投影。通常,在获得bev视图前,会将空间分割成体素,利用体素对点云进行下采样,然后将每个体素作为一个点进行投影。体素是指将三维空间按照固定尺寸长方体进行划分时的长方体(Δl*Δw*Δh)。 体素投影时可以得到BEV视图的像素点坐标。每个像素点的特征取值则可以通过多种方式得到。 ...

叶子的博客 2万+

[Python图像处理] 十.形态学之图像顶帽运算和黑帽运算

数学形态学(Mathematical morphology)是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:腐蚀和膨胀、开运算和闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换等。本篇文章主要讲解Python调用OpenCV实现图像形态学转化,包括图像顶帽运算和图像黑帽运算,基础性知识希望对您有所帮助。

杨秀璋的专栏 1万+

openJDK和JDK

历史上的原因是,openjdk是jdk的开放原始码版本,以GPL协议的形式放出。在JDK7的时候,openjdk已经成为jdk7的主干开 发,sun jdk7是在openjdk7的基础上发布的,其大部分原始码都相同,只有少部分原始码被替换掉。使用JRL(JavaResearch License,Java研究授权协议)发布。 至于openjdk6则更是有其复杂的一面,首先是openjdk6是j...

裸睡的鱼 2868

Android 11.0 app添加校验锁(输入密码才能进入app)

11.0定制化开发中客户要求给app添加锁,就是点击app 图标时,会弹出Dialog,需要输入密码才能进入app中,就是应用校验锁, 最开始想到在Launcher3中实现,但是如果更换了默认Launcher 又不行了 所以最终还是得拦截app启动Activity 从这里入手了 Launcher与APP是在两个不同的进程中,他们之间的通信是通过Binder完成的,点击Launcher上的某个APP,这时会调用Launcher的startActivitySafely方法。 public boolean sta

安卓兼职framework和app工程师的博客 1952

Oracle JDK 和 OpenJDK 有什么区别?

Oracle JDK 和 OpenJDK 有什么区别?

m0_38048955的博客 7245

软件需求规格说明书(SRS)标准模板

《软件需求规格说明书(SRS)框架解析》摘要: 本文档系统阐述了SRS的标准结构,包含7大核心部分:1)引言(目的、背景和术语);2)总体描述(产品定位与用户特征);3)功能需求(模块化功能说明);4)非功能需求(性能、安全等指标);5)接口需求(用户/硬件/软件接口);6)其他技术要求;7)附录(图表与参考资料)。重点突出了功能需求模块的标准化描述模板(FR-01),以及安全需求中的HTTPS通信、SHA-256加密等关键指标。该框架为软件开发提供了明确的需求基准,涵盖从业务背景到技术实现的完整链条,是确

moton2017的博客 2890

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JDK和OpenJdk的区别

1.授权协议的不同 OpenJDK采用GPL V2协议发布,而JDK则采用JRL协议发布。两个协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。 2.OpenJDK只包含最精简的JDK OpenJDK不包含其他的软件包,比如Rhino Java DB JAXP……,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,你可以自己下载加入。 3.OpenJDK源代码不完整 这个很容易想到,在采用GPL协议的OpenJDK中,SUN J

weixin_45860766的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

OpenJDK与JDK的区别分析

在JDK7的时候,OpenJDK已经成为JDK7的主干开发,Sun JDK7是在OpenJDK7的基础上发布的,其大部分原始码都相同,只有少部分原始码被替换掉。这个很容易理解,在安装OpenJDK的机器上,输入“java -version”显示的是OpenJDK,但是如果是使用Icedtea补丁的OpenJDK,显示的是java。然而最简单直白的理解,也属于个人理解:OpenJDK是JDK的开源代码,也不算全是,因为在JDK部分,有一些是Oracle未开放源代码的,还有就是有一些的历史原因。

daimenglaoshi的博客 8830

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

openjdk和jdk之间的区别与联系

在大多数LINUX发行版本里,内置或者通过软件源安装的JDK,都是安装的OpenJDK,那么到底什么是OpenJDK,它与SUN JDK有什么关系和区别呢? 历史上的原因是,OpenJDK是JDK的开放源码版本,以GPL协议的形式发布。在JDK7的时候,OpenJDK已经成为JDK7的主干开发版,SUN JDK7是在OpenJDK7的基础上发布的,其大部分源码都相同,只有少部分源...

芒果summer小仙女 1223

openjdk和jdk的区别与联系

使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的openjdk,那么到底什么是openjdk,它与sun jdk有什么关系和区别呢? 历史上的原因是,openjdk是jdk的开放原始码版本,以GPL协议的形式放出。在JDK7的时候,openjdk已经成为jdk7的主干开发,sun jdk7是在openjdk7的基础上发布的,其大部分原...

naxsu的专栏 2805

open jdk java_OpenJDK和JDK区别

使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的openjdk,那么到底什么是openjdk,它与sun jdk有什么关系和区别呢?历史上的原因是,openjdk是jdk的开放原始码版本,以GPL协议的形式放出。在JDK7的时候,openjdk已经成为jdk7的主干开发,sunjdk7是在openjdk7的基础上发布的,其大部分原始码都相同...

weixin_30635747的博客 1961
上一篇: 学习篇 | 股本(实收资本)、实缴资本和货币实缴资本的关联关系
下一篇: 认知篇 | 源代码自编译,到底是在编译什么?
db_murphy
博客等级 码龄11年 145粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值