您当前的位置:首页 > 电脑百科 > 数据库 > 百科

Oralce JDK和Open JDK的区别与联系

时间:2023-05-16 15:44:50  来源:今日头条  作者:码世界

这篇文章中,将会展示Oracle JDK和Open JDK的区别,首先会各自介绍下它们,然后再对比一下它们的区别,最后给大家列举一下其它实现JDK的开源组织或公司

Oracle JDK和JAVA SE的历史

JDK(Java Development Kit)是一种用于Java平台编程的软件开发环境。它包含一个完整的Java运行时环境,即所谓的独立运行环境。之所以这样构成,是因为它比独立的 JRE 包含更多的工具,以及开发 Java 应用程序所需的其他组件。

oracle java


jdk文件目录

Oracle强烈推荐使用JDK这个术语来指代Java SE Development Kit。

Java SE 版本历史:

  • JDK Beta – 1995
  • JDK 1.0 – January 1996
  • JDK 1.1 – February 1997
  • J2SE 1.2 – December 1998
  • J2SE 1.3 – May 2000
  • J2SE 1.4 – February 2002
  • J2SE 5.0 – September 2004
  • Java SE 6 – December 2006
  • Java SE 7 – July 2011
  • Java SE 8 (LTS) – March 2014
  • Java SE 9 – September 2017
  • Java SE 10 (18.3) – March 2018
  • Java SE 11 (18.9 LTS) – September 2018
  • Java SE 12 (19.3) – March 2019
  • Java SE 13 – September 2019
  • Java SE 14 – March 2020
  • Java SE 15 – September 2020
  • Java SE 16 – March 2021
  • Java SE 17 (LTS) – September 2021
  • Java SE 18 – March 2022
  • Java SE 19 – September 2022
  • Java SE 20 – March 2023
  • Java SE 21 (LTS) – September 2023

注意:斜体部分的版本不再接受支持,LTS代表是长期支持版本

我们可以看到,在 Java SE 7之前,Java SE 的主要版本大约每两年发布一次。Java SE 6到Java SE 7用了5年时间,到Java SE 8又用了3年时间。从JavaSE 10开始,大概是每6个月发布一次,可以看到一年有两个版本发布。但是并不是每个版本都是LTS(Long-Term-Support)版本。Oracle宣称将每三年将会发布一个LTS版本。

目前Java SE 17是最新的LTS版本,JavaSE8在2020年12月前接受免费公开更新,以供非商业使用。

目前Oracle已经收购了Sun(2010年),所以现在所说的JDK一般都是指Oracle JDK,之前被称为SUN JDK,目前Oralce JDK也是Java 编程语言的官方实现。

OpenJDK

OpenJDK 是 JavaSE 平台版的免费开源实现,并在2007年首次发布。

OpenJDK 是自 SE 7版本以来 Java 标准版的官方参考实现。

 

最初它是基于JDK 7,但是自从Java10以来具体由JDK Project负责开源实现。类似Oracle的更新机制,JDK Project也是每6个月发布新特性。

值得注意的是,在这个长期运行的项目之前,有一些 JDK 发布项目发布了一个特性,然后就停止了。

让我们看下OpenJDK版本:

  • OpenJDK 6 project – based on JDK 7
  • OpenJDK 7 project – 2011/07/28
  • OpenJDK 7u project – JDK7的更新版本
  • OpenJDK 8 project – 2014/03/18
  • OpenJDK 8u project –JDK8的更新版本
  • OpenJDK 9 project – 2017/09/21
  • JDK project release 10 – 2018/03/20
  • JDK project release 11 – 2018/09/25
  • JDK project release 12 – 2019/03/19
  • JDK project release 13 – 2019/09/17
  • JDK project release 14 – 2020/03/17
  • JDK project release 15 – 2020/09/15
  • JDK project release 16 – 2021/03/16
  • JDK project release 17 – 2021/09/14
  • JDK project release 18 – 2022/03/22
  • JDK project release 19 – 2022/09/20
  • JDK project release 20 – 2023/03/21
  • JDK project release 21 – 开发中

具体可查看JDK Project

JDK GA Releases

Oracle JDK与OpenJDK的区别

主要从发布周期,许可,性能,特性,发展这几方面来对比

  • 发布周期不同

根据前面的版本对比,Oracle一般三年会发布一个release版本,而OpenJDK每6个月发布一次。

只有release版本Oralce才会提供长期的支持。但是OpenJDK仅仅在下个版本发布之前进行支持。

  • 许可不同

Oracle JDK 是根据 Oracle 二进制代码许可协议授权的,OpenJDK则是基于开源GUN GPL V2许可。

在使用 Oracle JDK时,存在一些许可方面的问题。在没有商业许可证的情况下,Java SE 8在2019年1月发布后的公开更新是不能用于商业和生产环境的。但是OpenJDK是完全开源和免费的。

  • 性能差异

这两者之间没有真正的技术区别,因为 Oracle JDK 的构建过程是基于 OpenJDK 的。

但是说到性能这块,Oracle JDK具有更好的响应性和JVM性能。因为要服务于一些商业客户,所以Oralce在稳定性这块应该下了不少功夫。

相比之下,OpenJDK由于经常频繁发版,也许会遇到一些不稳定的问题。这一点我们可以在社区的留言上看到用户反馈了一些性能问题。

  • 功能特性对比

相比于Oralce具有的Flight Recorder, Java Mission Control, and Application Class-Data Sharing等功能,而OpenJDK仅仅拥有Font Renderer。

同时,Oracle拥有更多的GC(垃圾回收器)参数选项和更出色的渲染器

  • 发展与普及

Oracle JDK完全由Oracle公司开发,而OpenJDK由Oracle,OpenJDK和Java社区开发。然而,顶尖的公司,如红帽,IBM,苹果公司和 SAP 公司也积极参与其开发。

就目前的来说,顶级公司在开发工具(Android和IntelliJ IDEA)里边使用JDK时之前通常更倾向于选择Oracle JDK,但是这两家公司已经转向了基于JetBrAIns构建的OpenJDK。

此外,主要的linux发行商(Fedora, Ubuntu, Red Hat Enterprise Linux)也将OpenJDK作为默认的Java 标准版本实现。

Java11开始的变化

在Oracle的Blog中可以看到从Java11开始有很多重要的改变(有兴趣的可以参考:
https://blogs.oracle.com/java/post/oracle-jdk-releases-for-java-11-and-later)。

首先,Oracle将推出基于开源GNU General Public License v2, with the Classpath Exception (GPLv2+CPE)的JDK版本,同时也会有基于商业许可的OracleJDK,用来满足需要使用的客户,这部分客户往往不太愿意使用开源软件。相当于一个联合玩法,满足多方面需求,毕竟是商业公司,要兼顾竞争和收益,不得不说这方面Sun如果好好学习,不至于被收购。

这样一来之前的Flight Recorder, Java Mission Control, and Application Class-Data Sharing在OpenJDK里边也会出现了。所以从 Java11开始,Oracle JDK 和 OpenJDK 构建基本上是相同的。但是还是会有一些区别的。

下面我们来列举下:

  • Oracle Java11在使用-XX:+UnlockCommercialFeatures选项时会发出警告,而在OpenJDK中直接会导致错误
  • OracleJDK 提供了一种配置,为“Advanced Management Console”工具提供使用日志数据
  • java --version的输出不一样

Oracle JDK11

java 11 2018-09-25

Java(TM) SE Runtime Environment 18.9 (build 11+28)

Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11+28, mixed mode)

Open JDK11

openjdk version "11" 2018-09-25

OpenJDK Runtime Environment 18.9 (build 11+28)

OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
  • Oracle JDK 一直要求第三方加密提供已知的证书签名。 OpenJDK 中的加密框架具有开放的加密接口,这意味着它不限制可以使用哪些加密程序的实现。 Oracle JDK 11 将继续需要有效签名,而 Oracle OpenJDK 构建将继续允许使用有效签名或未签名的第三方加密提供商

其它JDK实现

免费和开源实现

  • AdoptOpenJDK
  • Amazon Corretto
  • Azul Zulu
  • Bck2Brwsr
  • CACAO
  • Codename One
  • DoppioJVM
  • Eclipse OpenJ9
  • GraalVM CE
  • HaikuVM
  • HotSpot
  • Jamiga
  • JamVM
  • Jelatine JVM
  • Jikes RVM (Jikes Research Virtual machine)
  • JVM.go
  • Liberica JDK
  • leJOS
  • Maxine
  • Multi-OS Engine
  • RopeVM
  • uJVM

专有实现

  • Azul Zing JVM
  • CEE-J
  • Excelsior JET
  • GraalVM EE
  • Imsys AB
  • JamaicaVM (aicas)
  • JBlend (Aplix)
  • MicroJvm (IS2T – Industrial Smart Software Technology)
  • OJVM
  • PTC Perc
  • SAP JVM
  • Waratek CloudVM for Java

如何选择

那么如何选择一个JDK呢,如果是一个开发者或者具有开发能力的公司,那么可以选择OpenJDK 甚至基于OpenJDK构建属于自己的JDK,比如:国外的AWS JDK,国内阿里的Alibaba Dragonwell。如果更多是B端企业用户需要稳定的运行环境,我建议花点钱选择正版Oracle JDK,一方面性能方面可能要比OpenJDK强劲,最关键的是稳定,一方面也可以得到Oracle官方的技术支持。



Tags:Oralce   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Oralce JDK和Open JDK的区别与联系
这篇文章中,将会展示Oracle JDK和Open JDK的区别,首先会各自介绍下它们,然后再对比一下它们的区别,最后给大家列举一下其它实现JDK的开源组织或公司。Oracle JDK和Java SE的历史...【详细内容】
2023-05-16  Search: Oralce  点击:(365)  评论:(0)  加入收藏
▌简易百科推荐
向量数据库落地实践
本文基于京东内部向量数据库vearch进行实践。Vearch 是对大规模深度学习向量进行高性能相似搜索的弹性分布式系统。详见: https://github.com/vearch/zh_docs/blob/v3.3.X/do...【详细内容】
2024-04-03  京东云开发者    Tags:向量数据库   点击:(5)  评论:(0)  加入收藏
原来 SQL 函数是可以内联的!
介绍在某些情况下,SQL 函数(即指定LANGUAGE SQL)会将其函数体内联到调用它的查询中,而不是直接调用。这可以带来显著的性能提升,因为函数体可以暴露给调用查询的规划器,从而规划器...【详细内容】
2024-04-03  红石PG  微信公众号  Tags:SQL 函数   点击:(4)  评论:(0)  加入收藏
如何正确选择NoSQL数据库
译者 | 陈峻审校 | 重楼Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达...【详细内容】
2024-03-28    51CTO  Tags:NoSQL   点击:(14)  评论:(0)  加入收藏
为什么数据库连接池不采用 IO 多路复用?
这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用DB时,还是经常性采用c3p0,tomcat connection pool等技术来与DB连接,哪怕整个程序已经变成以...【详细内容】
2024-03-27  dbaplus社群    Tags:数据库连接池   点击:(13)  评论:(0)  加入收藏
八个常见的数据可视化错误以及如何避免它们
在当今以数据驱动为主导的世界里,清晰且具有洞察力的数据可视化至关重要。然而,在创建数据可视化时很容易犯错误,这可能导致对数据的错误解读。本文将探讨一些常见的糟糕数据可...【详细内容】
2024-03-26  DeepHub IMBA  微信公众号  Tags:数据可视化   点击:(7)  评论:(0)  加入收藏
到底有没有必要分库分表,如何考量的
关于是否需要进行分库分表,可以根据以下考量因素来决定: 数据量和负载:如果数据量巨大且负载压力较大,单一库单一表可能无法满足性能需求,考虑分库分表。 数据增长:预估数据增长...【详细内容】
2024-03-20  码上遇见你  微信公众号  Tags:分库分表   点击:(15)  评论:(0)  加入收藏
在 SQL 中写了 in 和 not in,技术总监说要炒了我……
WHY?IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢?1、效率低项目中遇到这么个情况:t1表 和 t2表 都是150w条数据,600M的样子,都不算大。但是这样一句查询 ↓select *...【详细内容】
2024-03-18  dbaplus社群    Tags:SQL   点击:(6)  评论:(0)  加入收藏
应对慢SQL的致胜法宝:7大实例剖析+优化原则
大促备战,最大的隐患项之一就是慢SQL,对于服务平稳运行带来的破坏性最大,也是日常工作中经常带来整个应用抖动的最大隐患,在日常开发中如何避免出现慢SQL,出现了慢SQL应该按照什...【详细内容】
2024-03-14  京东云开发者    Tags:慢SQL   点击:(5)  评论:(0)  加入收藏
过去一年,我看到了数据库领域的十大发展趋势
作者 | 朱洁策划 | 李冬梅过去一年,行业信心跌至冰点2022 年中,红衫的一篇《适应与忍耐》的报告,对公司经营提出了预警,让各个公司保持现金流,重整团队,想办法增加盈利。这篇报告...【详细内容】
2024-03-12    InfoQ  Tags:数据库   点击:(27)  评论:(0)  加入收藏
SQL优化的七个方法,你会哪个?
一、插入数据优化 普通插入:在平时我们执行insert语句的时候,可能都是一条一条数据插入进去的,就像下面这样。INSERT INTO `department` VALUES(1, '研发部(RD)', &#39...【详细内容】
2024-03-07  程序员恰恰  微信公众号  Tags:SQL优化   点击:(20)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条