<返回更多

Oralce JDK和Open JDK的区别与联系

2023-05-16  今日头条  码世界
加入收藏

这篇文章中,将会展示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 版本历史:

注意:斜体部分的版本不再接受支持,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版本:

具体可查看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 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)

其它JDK实现

免费和开源实现

专有实现

如何选择

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

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>