简介

在本文中,我们将探讨Oracle Java Development Kit和OpenJDK之间的差异并进行比较。

Oracle JDK

Oracle JDK由Oracle公司开发,该公司是Sun许可证,基于Java标准版规范实现。它以二进制产品的形式发布。它支持多种操作系统,如Windows,Linux,Solaris,MacOS等。它支持不同的平台,如Intel 32位和64位架构,ARM架构和SPARC。它完全基于Java编程语言。之后,该许可证宣布将根据GPL(通用公共许可证)许可证发布。Oracle JDK包含许多组件作为库形式的编程工具集合。

我们来看看Java SE的历史:

  • JDK Beta - 1995
  • JDK 1.0 - 1996年1月
  • JDK 1.1 - 1997年2月
  • J2SE 1.2 - 1998年12月
  • J2SE 1.3 - 2000年5月
  • J2SE 1.4 - 2002年2月
  • J2SE 5.0 - 2004年9月
  • Java SE 6 - 2006年12月
  • Java SE 7 - 2011年7月
  • Java SE 8(LTS) - 2014年3月
  • Java SE 9 - 2017年9月
  • Java SE 10(18.3) - 2018年3月
  • Java SE 11(18.9 LTS) - 2018年9月
  • Java SE 12(19.3) - 2019年3月

注意:不再支持斜体版本。

我们可以看到Java SE的主要版本大约每两年发布一次,直到Java SE 7.从Java SE 6开始花了五年时间,之后又花了三年时间到达Java SE 8。

自Java SE 10以来,我们可以期待每六个月发布一次新版本。但是,并非所有版本都是长期支持(LTS)版本。由于Oracle的发布计划,LTS产品发布仅每三年发布一次。

OpenJDK

OpenJDK是Java SE平台版的开源和免费实现,它是Sun Corporation(现在的Oracle Corporation)于2006年开始的开发结果。它是根据GNU GPL许可证授权的。它最初于2007年发布。它由Oracle Corporation,Red Hat,IBM,Apple Inc.,OpenJDK和Java Community等开发。它是使用C ++和Java编程语言编写的。它支持不同的操作系统,如FreeBSD,Linux,Microsoft Windows,Mac OS X. OpenJDK是Java SE Platform Edition的官方参考实现。

现在让我们看看OpenJDK版本:

  • OpenJDK 6项目 - 基于JDK 7,但经过修改后提供了Java 6的开源版本
  • OpenJDK 7项目 - 2011年7月28日
  • OpenJDK 7u项目 - 该项目开发Java Development Kit 7的更新
  • OpenJDK 8项目 - 2014年3月18日
  • OpenJDK 8u项目 - 该项目开发Java Development Kit 8的更新
  • OpenJDK 9项目 - 2017年9月21日
  • JDK项目于2018年3月10日至20日发布
  • JDK项目于2018年9月11日至25日发布
  • JDK项目发布12 - 稳定阶段

Oracle与OpenJDK之间的比较(信息图表)

Oracle与OpenJDK之间的主要区别

Oracle与OpenJDK都是市场上的热门选择; 让我们讨论一下OracleJDK与OpenJDK之间的一些主要差异:

  1. Oracle JDK版本将每三年发布一次,而OpenJDK版本每三个月发布一次。

  2. Oracle JDK将更多地关注稳定性,它重视更多的企业级用户,而OpenJDK经常发布以支持其他性能,这可能会导致不稳定。

  3. Oracle JDK支持长期发布的更改,而Open JDK仅支持计划和完成下一个发行版。

  4. Oracle JDK根据二进制代码许可协议获得许可,而OpenJDK根据GPL v2许可获得许可。 使用Oracle平台时会产生一些许可影响。如Oracle 宣布的那样,在没有商业许可的情况下,在2019年1月之后发布的Oracle Java SE 8的公开更新将无法用于商业,商业或生产用途。但是,OpenJDK是完全开源的,可以自由使用。

  5. Oracle JDK的构建过程基于OpenJDK,因此OpenJDK与Oracle JDK之间没有技术差异。

  6. 顶级公司正在使用Oracle JDK,例如Android Studio,Minecraft和IntelliJ IDEA开发工具,其中Open JDK不太受欢迎。

  7. Oracle JDK具有Flight Recorder,Java Mission Control和Application Class-Data Sharing功能,Open JDK具有Font Renderer功能,这是OpenJDK与Oracle JDK之间的显着差异。

  8. Oracle JDK具有良好的GC选项和更好的渲染器,而OpenJDK具有更少的GC选项,并且由于其包含自己的渲染器的分布,因此具有较慢的图形渲染器选项。

  9. 在响应性和JVM性能方面,Oracle JDK与OpenJDK相比提供了更好的性能。

  10. 与OpenJDK相比,Oracle JDK的开源社区较少,OpenJDK社区用户的表现优于Oracle JDK发布的功能,以提高性能。

  11. 如果使用Oracle JDK会产生许可影响,而OpenJDK没有这样的问题,并且可以以任何方式使用,以满足完全开源和免费使用。

  12. Oracle JDK在运行JDK时不会产生任何问题,而OpenJDK在为某些用户运行JDK时会产生一些问题。

  13. 根据使用方的使用和许可协议,现有应用程序可以从Oracle JDK迁移到Open JDK,反之亦然。

  14. Oracle JDK将从其10.0.X版本将收费,用户必须付费或必须依赖OpenJDK才能使用其免费版本。

  15. Oracle JDK不会为即将发布的版本提供长期支持,用户每次都必须通过更新到最新版本获得支持来获取最新版本。

  16. Oracle JDK以前的1.0版以前的版本是由Sun开发的,后来被Oracle收购并为其他版本维护,而OpenJDK最初只基于Java SDK或JDK版本7。

  17. Oracle JDK发布时大多数功能都是开源的,其中一些功能免于开源,并且根据Sun的许可授权,而OpenJDK发布了所有功能,如开源和免费。

  18. Oracle JDK完全由Oracle公司开发,而Open JDK项目由IBM,Apple,SAP AG,Redhat等顶级公司加入和合作。

Oracle与OpenJDK比较表

以下是Oracle与OpenJDK之间最重要的比较:

Oracle与OpenJDK之间比较 Oracle JDK OpenJDK
执照 它是根据GPL(通用公共许可证)许可证授权的 它是根据GNU GPL(通用公共许可证)许可证授权的
发展 由Sun Microsystems Inc.开发 由Oracle,OpenJDK和Java社区开发
性能 根据Sun JDK的开发和实现提供性能 提供由Oracle JDK之上的一些供应商开发的高性能
可扩展性 根据Sun的实施 可以使用其他库或Oracle JDK进行改进
费用 Sun的官方执行许可证 开源和免费实施可供免费使用
速度 由Sun Microsystems Inc.开发 第三方供应商将通过进行一些调整来提高JVM的速度
操作系统 支持Windows,Linux,Solaris,MacOS FreeBSD,Linux,Microsoft Windows,Mac OS X.
便于使用 可以与任何应用程序开发一起使用 可以与任何应用程序开发和其他开源工具一起使用,以提高开源实现模型的性能。

结论

Oracle JDK可用于开发Java Web应用程序,独立应用程序以及许多其他图形用户界面以及其他开发工具。Oracle JDK执行的所有操作或任务也可以由OpenJDK执行,但只有Oracle与OpenJDK之间的区别在于Open JDK在现有Oracle JDK之上的许可和其他工具集成和实现。使用OpenJDK的优点是可以根据应用程序的要求修改性能,可伸缩性和实现,以根据需要调整Java虚拟机。

OpenJDK的优势更多,Oracle JDK的使用在Oracle JDK实现中使用的标准方面也有一些好处,这将确保应用程序稳定和良好维护。

相关资源:openjdk与Oraclejdk的区别_openjdk-其它代码类资源-CSDN文库

来源:Oracle与OpenJDK之间的区别_weixin_33939843的博客-CSDN博客

Oracle与OpenJDK之间的区别相关推荐

  1. Oracle JDK和 OpenJDK 之间的区别

    1. 简介 在本文中,我们将探讨Oracle Java Development Kit和OpenJDK之间的差异.我们先快速浏览一下,然后进行比较.之后,我们将看到其他JDK实现的列表. 2. Ora ...

  2. oracle类型sql转为mysql_Oracle和MySql之间SQL区别(等效转换以及需要注意的问题)...

    >本篇博文是Oracle和MySQL之间的等效SQL转换和不同,目前市面上没有转换两种SQL的工具,小编觉得以后也不一定会有,于是在业余时间整理了一下,如果有什么错误之处请留言告知,小编也是刚 ...

  3. JVM,JDK,JRE和OpenJDK有什么区别?

    本文翻译自:What is the difference between JVM, JDK, JRE & OpenJDK? What is the difference between JVM ...

  4. oracle 和mysql有什么区别_mysql和oracle的区别有哪些

    原标题:mysql和oracle的区别有哪些 MySQL和Oracle都是流行的关系数据库管理系统(RDBMS),在世界各地广泛使用:大多数数据库以类似的方式工作,但MySQL和Oracle的这里和那 ...

  5. oracle jdk什么意思,Oracle JDK和OpenJDK之间的区别是什么?

    Oracle JDK和OpenJDK之间有什么区别?下面本篇文章就来给大家介绍一下Oracle JDK和OpenJDK之间的区别是什么,希望对大家有所帮助.[视频教程推荐:Java教程] Oracle ...

  6. Oracle中用户和架构之间的区别?

    本文翻译自:Difference between a user and a schema in Oracle? Oracle中的用户和架构有什么区别? #1楼 参考:https://stackoom. ...

  7. oracle gbk ebcdic,文件编码 ANSI、GBK、GB2312、MS936、MS932、SJIS、Windows-31 、EUC-JP 、EBCDIC 等等之间的区别与联系...

    ■前言 暂且不谈 UTF-8,Unicode (UTF-8只是Unicode的一种实现方式) https://blog.csdn.net/sxzlc/article/details/106084402 ...

  8. oracle nls_nchar_characterset,Oracle的NLS_NCHAR_CHARACTERSET和NLS_CHARACTERSET之间的区别

    我在这里有一个简单的问题,我想知道oracle中NLS_NCHAR_CHARACTERSET和NLS_CHARACTERSET设置之间的区别? 根据我的理解,NLS_NCHAR_CHARACTERSE ...

  9. oracle join详解,inner join和left join之间的区别详解

    前言 关于inner join 与 left join 之间的区别,以前以为自己搞懂了,今天从前端取参数的时候发现不是预想中的结果,才知道问题出在inner join 上了. 需求是从数据库查数据,在 ...

最新文章

  1. 拉力赛 (Standard IO)
  2. 如果还不懂如何使用 Consumer 接口,就来看这篇!
  3. SAP MM模块-实施顾问岗位-面试手册-面试准备
  4. leetcode —— 235. 二叉搜索树的最近公共祖先
  5. 分布式缓存Redis应用场景解析
  6. linux select 服务器,Linux下用select()实现异步的Echo服务器
  7. 【Codeforces549F】Yura and Developers [单调栈][二分]
  8. Linux的运行级别和chkconfig用法
  9. java日期互转:LocalDateTime、String、Instant、Date
  10. 视频直播的购物平台,网站,app
  11. 市场、运营、销售什么区别?
  12. 1-4 CAD 圆弧(arc)
  13. 超全面的前端切图技巧,读这篇就够了
  14. Quartus II使用说明(Verilog HDL二选一数据选择器 )
  15. python -m详解
  16. 玩游戏提升计算机内存不足,电脑内存不足怎么办?详细解决方案.
  17. 福克斯车钥匙遥控失灵解决办法
  18. echarts引入地图不成功(使用echarts遇到的坑)
  19. pdf文件转图片(java实现)
  20. 计算机毕业设计Node.js+Vue综合型体育场馆管理系统(程序+源码+LW+部署)

热门文章

  1. c语言opencv所用库函数,Py之cv2:cv2库(OpenCV,opencv-python)的简介、安装、使用方法(常见函数、方法等)最强详细攻略...
  2. 「Ubuntu」Ubuntu中的python终端配置(修改终端默认python配置,软连接,不同版本python环境配置)
  3. listener.ora--sqlnet.ora--tnsnames.ora的关系以及手工配置举例(转载:http://blog.chinaunix.net/uid-83572-id-5510.ht)
  4. 4种方法让SpringMVC接收多个对象(转:http://blog.csdn.net/lutinghuan/article/details/46820023)
  5. 5.QT中关于HTTPClient相关的操作,Json数据传输
  6. boost标准库开发环境搭建boost标准库环境搭建以及简单案例介绍
  7. 操作多个表_4_查询不再另外一个表里的记录
  8. bat怎么获取前一天 的日期_bat脚本 得到前一天的日期
  9. [计算机视觉]人脸应用:人脸检测、人脸对比、五官检测、眨眼检测、活体检测、疲劳检测
  10. Mask-RCNN中的ROIAlign, ROIPooling及ROIWarp对比