本文将讨论Oracle JDK和OpenJDK之间的区别。在详细介绍之前,让我们回顾一下什么是JDK?
什么是JDK?
Java开发工具包(JDK)包含Java运行时环境(JRE)以及用于编译和调试Java代码以开发Java应用程序的工具。JRE由库,Java虚拟机(JVM),Java插件和Java Web Start组成,以运行Java应用程序。JRE作为独立版本不包含编译器和调试工具。
Oracle JDK与OpenJDK
- Oracle JDK以前称为SUN JDK,在Oracle接管之前。此前,它是Java语言的官方专有实现。收购之后,它被命名为Oracle JDK,Oracle的团队维护了JDK。
- OpenJDK是Java Standard Edition平台的开源实现,由Oracle和开放Java社区贡献。
- OpenJDK是根据GPL v2许可发行的,其中Oracle JDK是根据Oracle Binary Code许可协议获得许可的。实际上,Oracle JDK的构建过程是从OpenJDK源代码构建的。因此,Oracle JDK和OpenJDK之间没有主要的技术差异。
- 除基本代码外,Oracle JDK还包括Oracle的Java Plugin和Java WebStart的实现。还分别包括第三方封闭源和开放源组件,例如图形光栅化器和Rhino。
- OpenJDK Font Renderer和Oracle JDK Flight Recorder是Oracle JDK和OpenJDK之间明显的主要区别。
- Oracle JDK的商业组件与可免费下载的Oracle JDK捆绑在一起,并且使我们需要使用显式标志运行它们。
- 没有关于Oracle商业JDK许可证价格多少的官方信息。要获得Oracle JDK的商业许可,我们需要直接与Oracle销售人员联系。
- OpenJDK是完全免费的,可以根据GPL v2许可证使用。
- 主要的Linux发行版(例如Ubuntu,Fedora和Red Hat Enterprise Linux)提供OpenJDK或其变体作为其默认Java SE实现。
Oracle JDK和OpenJDK如何保持同步?
对于如此庞大的代码库,它绝对应该是一个复杂的过程。所有开发和错误修复都在OpenJDK中进行,然后将其传播到Oracle JDK。与常规修补程序不同,安全修补程序发生在没有公共代码审阅的私有林中,然后被推送到Oracle JDK,然后推送到OpenJDK。