1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00

Update java-basic-questions-01.md: Oracle JDK vs OpenJDK

This commit is contained in:
sam 2022-04-13 03:37:22 +08:00
parent ddc687b568
commit 87d348fc1e
2 changed files with 24 additions and 5 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

View File

@ -87,15 +87,34 @@ JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有
> >
> 答:非常接近 - 我们的 Oracle JDK 版本构建过程基于 OpenJDK 7 构建,只添加了几个部分,例如部署代码,其中包括 Oracle 的 Java 插件和 Java WebStart 的实现,以及一些闭源的第三方组件,如图形光栅化器,一些开源的第三方组件,如 Rhino以及一些零碎的东西如附加文档或第三方字体。展望未来我们的目的是开源 Oracle JDK 的所有部分,除了我们考虑商业功能的部分。 > 答:非常接近 - 我们的 Oracle JDK 版本构建过程基于 OpenJDK 7 构建,只添加了几个部分,例如部署代码,其中包括 Oracle 的 Java 插件和 Java WebStart 的实现,以及一些闭源的第三方组件,如图形光栅化器,一些开源的第三方组件,如 Rhino以及一些零碎的东西如附加文档或第三方字体。展望未来我们的目的是开源 Oracle JDK 的所有部分,除了我们考虑商业功能的部分。
**总结:** **总结:**(提示:下面括号内的内容是基于原文补充说明的,因为原文太过于晦涩难懂,用人话重新解释了下,如果你看得懂里面的术语,可以忽略括号解释的内容)
1. Oracle JDK 大概每 6 个月发一次主要版本(从 2014 年 3 月 JDK 8 LTS 发布到 2017 年 9 月 JDK 9 发布经历了长达 3 年多的时间,所以并不总是 6 个月),而 OpenJDK 版本大概每三个月发布一次。但这不是固定的,我觉得了解这个没啥用处。详情参见:[https://blogs.oracle.com/java-platform-group/update-and-faq-on-the-java-se-release-cadence](https://blogs.oracle.com/java-platform-group/update-and-faq-on-the-java-se-release-cadence) 。
2. OpenJDK 是一个参考模型并且是完全开源的,而 Oracle JDK 是 OpenJDK 的一个实现并不是完全开源的个人观点众所周知JDK 原来是 SUN 公司开发的,后来 SUN 公司又卖给了 Oracle 公司Oracle 公司以 Oracle 数据库而著名,而 Oracle 数据库又是闭源的,这个时候 Oracle 公司就不想完全开源了,但是原来的 SUN 公司又把 JDK 给开源了,如果这个时候 Oracle 收购回来之后就把他给闭源,必然会引其很多 Java 开发者的不满,导致大家对 Java 失去信心,那 Oracle 公司收购回来不就把 Java 烂在手里了吗然后Oracle 公司就想了个骚操作,这样吧,我把一部分核心代码开源出来给你们玩,并且我要和你们自己搞的 JDK 区分下,你们叫 OpenJDK我叫 Oracle JDK我发布我的你们继续玩你们的要是你们搞出来什么好玩的东西我后续发布 Oracle JDK 也会拿来用一下一举两得OpenJDK 开源项目:[https://github.com/openjdk/jdk](https://github.com/openjdk/jdk)
3. Oracle JDK 比 OpenJDK 更稳定肯定啦Oracle JDK 由 Oracle 内部团队进行单独研发的,而且发布时间不 OpenJDK 更长质量更有保障。OpenJDK 和 Oracle JDK 的代码几乎相同OpenJDK 的代码是从 Oracle JDK 代码派生出来的,可以理解为在 Oracle JDK 分支上拉了一条新的分支叫 OpenJDK所以大部分代码相同但 Oracle JDK 有更多的类和一些错误修复。因此,如果您想开发企业/商业软件,我建议您选择 Oracle JDK因为它经过了彻底的测试和稳定。某些情况下有些人提到在使用 OpenJDK 可能会遇到了许多应用程序崩溃的问题,但是,只需切换到 Oracle JDK 就可以解决问题;
1. Oracle JDK 大概每 6 个月发一次主要版本,而 OpenJDK 版本大概每三个月发布一次。但这不是固定的,我觉得了解这个没啥用处。详情参见:[https://blogs.oracle.com/java-platform-group/update-and-faq-on-the-java-se-release-cadence](https://blogs.oracle.com/java-platform-group/update-and-faq-on-the-java-se-release-cadence) 。
2. OpenJDK 是一个参考模型并且是完全开源的,而 Oracle JDK 是 OpenJDK 的一个实现,并不是完全开源的;
3. Oracle JDK 比 OpenJDK 更稳定。OpenJDK 和 Oracle JDK 的代码几乎相同,但 Oracle JDK 有更多的类和一些错误修复。因此,如果您想开发企业/商业软件,我建议您选择 Oracle JDK因为它经过了彻底的测试和稳定。某些情况下有些人提到在使用 OpenJDK 可能会遇到了许多应用程序崩溃的问题,但是,只需切换到 Oracle JDK 就可以解决问题;
4. 在响应性和 JVM 性能方面Oracle JDK 与 OpenJDK 相比提供了更好的性能; 4. 在响应性和 JVM 性能方面Oracle JDK 与 OpenJDK 相比提供了更好的性能;
5. Oracle JDK 不会为即将发布的版本提供长期支持,用户每次都必须通过更新到最新版本获得支持来获取最新版本;
5. Oracle JDK 不会为即将发布的版本提供长期支持(如果是 LTS 长期支持版本的话也会,比如 JDK 8但并不是每个版本都是 LTS 版本),用户每次都必须通过更新到最新版本获得支持来获取最新版本;
6. Oracle JDK 使用 BCL/OTN 协议获得许可,而 OpenJDK 根据 GPL v2 许可获得许可。 6. Oracle JDK 使用 BCL/OTN 协议获得许可,而 OpenJDK 根据 GPL v2 许可获得许可。
>既然 Oracle JDK 这么好,那为什么还要有 OpenJDK
>
>答:
>
>1. OpenJDK 是开源的,开源意味着你可以对它根据你自己的需要进行修改、优化,比如 Alibaba 基于 OpenJDK 开发了 Dragonwell8[https://github.com/alibaba/dragonwell8](https://github.com/alibaba/dragonwell8)
>
>2. OpenJDK 是商业免费的(这也是为什么通过 yum 包管理器上默认安装的 JDK 是 OpenJDK 而不是 Oracle JDK。虽然 Oracle JDK 也是商业免费(比如 JDK 8但并不是所有版本都是免费的。
>
>3. OpenJDK 更新频率更快。Oracle JDK 一般是每 6 个月发布一个新版本,而 OpenJDK 一般是每 3 个月发布一个新版本。(现在你知道为啥 Oracle JDK 更稳定了吧,先在 OpenJDK 试试水,把大部分问题都解决掉了才在 Oracle JDK 上发布)
>
> 基于以上这些原因OpenJDK 还是有存在的必要的!
![oracle-jdk-release-cadence.jpg](./images/oracle-jdk-release-cadence.jpg)
🌈 拓展一下: 🌈 拓展一下:
- BCL 协议Oracle Binary Code License Agreement 可以使用 JDK支持商用但是不能进行修改。 - BCL 协议Oracle Binary Code License Agreement 可以使用 JDK支持商用但是不能进行修改。