来源:

http://www.flammulina.com/2018/10/28/%E9%83%A8%E5%88%86%E6%94%B6%E8%B4%B9%E7%9A%84oracle-jdk-vs-%E5%AE%8C%E5%85%A8%E5%85%8D%E8%B4%B9%E7%9A%84openjdk/

本文将讨论Oracle JDKOpenJDK之间的区别。注意目前 OpenJDK 和 Oracle JDK 仅由Oracle创建和维护。在详细介绍之前,让我们回顾一下JDK是什么,在开始对比Oracle JDKOpenJDK之间的差异。

什么是JDK?

Java Development Kit(JDK)包含Java Runtime Environment(JRE)以及用于编译和调试用于开发Java应用程序的Java代码的工具。JRE由库,Java虚拟机(JVM),Java Pluging和Java Web Start组成,用于运行Java应用程序。JRE作为独立版本不包含编译器和调试工具。

Oracle JDK  VS  OpenJDK

  1. Oracle JDK部分版本收费 ,如果要获得商业Oracle JDK许可证,我们需要直接联系Oracle销售人员。
  2. OpenJDK是完全免费的,可以按照GPL v2许可证使用。
  3. Oracle JDK 之前被称为SUN JDK,这是在Oracle收购之前。早些时候,它是Java语言的官方专有实现。收购后,它被命名为Oracle JDK  ,Oracle的团队维护着JDK。
  4. OpenJDK 是Java标准版平台的开源实现,由Oracle和开放Java社区提供。
  5. OpenJDK 是Java SE 7中Java Standard Edition的官方参考实现。
  6. OpenJDK 根据许可证GPL v2发布,其中Oracle JDK根据Oracle二进制代码许可协议获得许可。
  7. 实际上,Oracle JDK的构建过程是从OpenJDK源代码构建的。因此,Oracle JDK和OpenJDK之间没有重大的技术差异。
  8. 除基本代码外,Oracle JDK还包括Oracle Java插件和Java WebStart的实现。还包括第三方封闭源代码和开源组件。
  9. OpenJDK Font Renderer 和Oracle JDK Flight Recorder是Oracle JDK和OpenJDK之间显着的主要区别。
  10. Oracle JDK 的商业组件与可免费下载的Oracle JDK捆绑在一起,并且我们需要使用显式标志来运行它们。
  11. JRockit 是Oracle的JVM,从Java SE 7开始,H​​otSpot和JRockit合并为一个JVM。所以现在我们只有合并的HotSpot JVM可用。
  12. 有些情况下,人们声称他们在运行OpenJDK时遇到了问题,并且在切换到Oracle JDK时得到了解决。考虑到Oracle JDK从OpenJDK获取其来源这一事实很难证明。
  13. 主要的Linux发行版(如Ubuntu,Fedora和Red Hat Enterprise Linux)提供OpenJDK或其变体作为其默认的Java SE实现。
  14. OpenJDK 6是一个尝试与Oracle JDK 6兼容的后端。它取自OpenJDK 7 b20并删除了Java 7功能,使其与Java SE 6兼容。
  15. OpenJDK 8源代码托管在http://hg.openjdk.java.net/jdk8
  16. OpenJDK 8和OpenJDK 9的目标并没有从OpenJDK 7改变。它们看起来是一样的,即为Java Standard Edition提供开源参考实现。
  17. OpenJDK是Ubuntu使用的Java的默认版本,最容易安装,而Oracle Java 7/8是Oracle自己的Java 7/8版本。

发布时间 

OpenJDK

OpenJDK将每6个月发布一次功能,只有在下一个功能发布时才会支持。它本质上是针对开发人员的连续发布流。

Oracle JDK

Oracle JDK的目标更多是针对重视稳定性的企业用户。它基于OpenJDK的一个版本,但随后获得了长期支持(LTS)。Oracle JDK每3年发布一次。

发展历程

OpenJDK

2008年5月,Fedora 9及Ubuntu 8.04于发行版中发布OpenJDK,完整地基于自由及开放源代码的OpenJDK。

2008年6月,IcedTea 6(Fedora 9上的一个包版本的OpenJDK)宣布已通过Technology Compatibility Kit测试,可以称得上是一个完全兼容的Java 6的运行环境。

2008年7月12日,Debian接受了OpenJDK-6的不稳定版本,但目前情况已经稳定。OpenJDK也可以在openSUSE、Red Hat Enterprise Linux及其派生系统,如CentOS中找到。

2008年7月,OpenJDK 7可以运行在Mac OS X和其他的BSD发行版。

2009年7月,Ubuntu 9.04中的二进制版本OpenJDK在Java SE 6 JCK中通过了所有的兼容性测试。

2016年8月22日,Google在Android 7.0 Nougat中,将专利的JDK替换成开源方案的OpenJDK,以彻底解决Java的专利问题。

Oracle JDK

Java EE,Java平台企业版(Java Platform Enterprise Edition),之前称为Java 2 Platform, Enterprise Edition (J2EE),2018年3月更名为Jakarta EE。是Sun公司为企业级应用推出的标准平台。Java平台共分为三个主要版本Java EE、Java SE和Java ME。

Sun公司在1998年发表JDK1.2版本的时候,使用了新名称Java 2 Platform,即“Java2平台”,修改后的JDK称为Java 2 Platform Software Developing Kit,即J2SDK。并分为标准版(Standard Edition,J2SE),企业版(Enterprise Edition,J2EE),微型版(MicroEdition,J2ME)。J2EE便由此诞生。

2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名以取消其中的数字“2”:J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME。

随着Java技术的发展,J2EE平台得到了迅速的发展,成为Java语言中最活跃的体系之一。现如今,J2EE不仅仅是指一种标准平台,它更多的表达着一种软件架构和设计思想。

 

[转帖] 部分收费的Oracle JDK VS 完全免费的OpenJDK的更多相关文章

  1. Oracle JDK与OpenJDK到底有什么不同?

    ​不知道各位developer平时是否有过疑问,Oracle JDK是什么,OpenJDK又是什么? Oracle JDK便是平常我们在windows系统上做开发使用的JDK,又称作SUN JDK.O ...

  2. 在 Linux 中安装 Oracle JDK 8 以及 JVM 的类加载机制

    参考资料 该文中的内容来源于 Oracle 的官方文档 Java SE Tools Reference .Oracle 在 Java 方面的文档是非常完善的.对 Java 8 感兴趣的朋友,可以直接找 ...

  3. Oracle JDK究竟从哪个版本开始商用收费?

    经常被问到Oracle JDK是不是要钱了?收费了?从哪个版本开始商用收费? 木有错,Oracle JDK从2019年4月16号开始商用商用商用收费了!有图有真像: 2019年4月16日当天,Orac ...

  4. [转帖] Oracle JDK 11 正式发布.. 版本号真快

    Java 11 / JDK 11 正式发布! oschina 发布于 2018年09月26日 收藏 19 评论 38   在您的既有IT基础设施上按需构建人工智能更高效>>>   美 ...

  5. [转帖]SUN/Oracle JDK还是OpenJDK?

    你安装的是 https://www.cnblogs.com/shoufeng/p/9719995.html 目录 1 如何查看你安装的JDK版本 1.1 要用到的命令行工具 1.2 查看JDK的版本 ...

  6. Java 11 将至,不妨了解一下 Oracle JDK 之外的版本

    Java 11 计划于本月,即 9 月 25 日发布.与 Java 10 不同,Java 11 不仅提供了长期支持,还将作为 Java 平台的参考实现.新的长期支持版本每三年发布一次,根据后续的发布计 ...

  7. OpenJDK,Oracle's OpenJDK,Oracle JDK的区别与选择

    OpenJDK 单纯的OpenJDK指的是JDK的源码,以GPL协议开源,由企业和社区开发者共同维护和开发. Oracle's OpenJDK Oracle started providing ope ...

  8. JDK下载地址 Oracle JDK下载 地址 (已解决)

    现在JDK开始收费了 Oracle官方对JDK的管理也变得严格了,现在想要在官网下载jdk需要先注册Oracle账号,这倒是小事但是网页反应慢注册填写内容复杂导致很多人不想注册. 不过有的人提供了公开 ...

  9. 在Ubuntu和Linux Mint上安装Oracle JDK

    在Ubuntu和Linux Mint上安装Oracle JDK 使用下面的命令安装,只需一些时间,它就会下载许多的文件,所及你要确保你的网络环境良好: sudo add-apt-repository ...

随机推荐

  1. 先进先出算法(FIFO)——页面置换

    原创 最近操作系统实习,写了先进先出算法(FIFO)的代码来实现页面置换. 题目阐述如下: 设计四:页面置换 设计目的: 加深对请求页式存储管理实现原理的理解,掌握页面置换算法. 设计内容: 设计一个 ...

  2. 20155203 实验四《 Android程序设计》实验报告

    一.实验内容 实验项目一:Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>第二十 ...

  3. 20155339 2017-2018-1《信息安全系统设计》第四周课堂测试、Makefile以及myod

    20155339 2017-2018-1<信息安全系统设计>第四周课堂测试.Makefile以及myod 测试1-vi 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号 用Vi ...

  4. DIRECT3D状态详解

    Microsoft® Direct3D®设备是一个状态机.应用程序设置光照.渲染和变换模块的状态,然后在渲染时传递数据给它们. 本节描述图形流水线用到的所有不同类型的状态. 渲染状态 取样器状态 纹理 ...

  5. day 8 递归

    版本1)  求5!while # 5! = 5*4*3*2*1 # 4!= 4*3*2*1 i = 1 result = 1 while i <= 5: result = result * i ...

  6. svn 冲突处理

    C:\workspace\test>svn upConflict discovered in 'test.txt'.Select: (p) postpone, (df) diff-full, ( ...

  7. Yii2 模块module笔记

    包含内容: 使用GII新建module 建立子模块 在其他控制器中调用模块的操作(action) 1. 使用Gii工具新建module 注意模块的路径,我们没有写backend\modules\Art ...

  8. 存一下emacs配置

    (global-set-key [f9] 'compile-file)(global-set-key [f10] 'gud-gdb)(global-set-key (kbd "C-z&quo ...

  9. XAF-如何修改内置的编辑器(Property Editor)

    本示例演示在web/win中给 日期选择控制显示出一个时钟及修改时间的控件.效果如下: 如果你装了XAF在这个路径中已经有了这个示例: %PUBLIC%\Documents\DevExpress De ...

  10. Linux环境配置备忘

    1.Ubuntu服务器版本装scipy 预装版本可能fortran包版本过旧或者不全,安装scipy之前需要更新环境. sudo apt-get install gfortran libopenbla ...