Spring和oracle的区别,比较一下 Oracle JDK与openJDK的区别

写在前面

简单记录学习,两者的区别,没有太多技术含量,倒是花了不少心思总结,欢迎关注,点赞哈

这里先贴图历史版本新增特性

83fd09cd99b430031268f835334329ec.png

这里引用参考下,这篇大佬文章,链接在此,Oracle与OpenJDK之间的区别

他是从组织、开源、市场等角度比较的,我这里主要从开源、前景、相关源码底层…等等角度分析,有兴趣的朋友可以一起来建议,学习

一、前景

这里我只能抛出几个疑问点,欢迎大家一起来解决,抛出疑问

1、为什么 Docker 容器的Java环境,几乎都是 openJdk ?

2、其实ORACLE jdk是开放了大部分源码的,openJDK是开放所有源码的,迄今我所想看到的实现,在Oracle JDK中都是开放源码的,Oracle JDK没有开放的部分在哪里?

答:已解决,Oracle JDK 没有开放的源码,在openJDK中的实现,这里先说明一下,OracleJDK只开放了不到7%,后面我会摘录部分,只是部分哈,有兴趣可以安装一个OpenJDK比较一下区别

3、为什么 OpenJDK开源了 OracleJDK不想开源的东西,

二、开源

open-source,开源,这是一种共享,集智的概念

openJDK 是对外开放源码的,Oracle JDK则没有(部分开源)

三、相关底层架构,实现比较

这里就windows版本分析

3.1-1、Oracle JDK架构1

安装包就一个,如图,官网地址

c8c58b07490e56f1c1a94e1f21b46f07.png

3.1-2、Open JDK架构1

链接地址,在此

如下图

a4515daf6705924ecce2aab4e1535592.png

这里比较出 openJDK的JRE和JDK是分开放的

3.2 Oracle JDK 与 Open JDK 目录结构比较

4832089e5d0c9a575a68aaec69baa58e.png

这里看得出 Oracle JDK 是基于 SDK(Jar)进行版本的维护的,部分提供了源码集

OpenJDK 是基于 package 进行版本维护,提供了所有的源码集,目录更清晰,部分实现还变更于与Oracle JDK 不同的包下,后面我摘出部分事例参考

还要注意 IntelliJ IDEA 中也集成了部分的 SDK,注意开发时确保正确的开发环境

3.3 JVM

openJDK已经不显示 JVM了

fb428fc052093d5070e02e209cbd9987.png

3.4 不同的命令行操作

c41374e302625e3b5b0ce46a2a4a47f7.png

四、常用对象的不同的实现(OracleJDK源码在OpenJDK中的不同实现)

摘录部分,常用对象,这里总结会有点乱(我还没仔细地观察真正的源码区别)

4.1、Object

4e36aca781dd1ee5c4b5e5a151d5a5ac.png

4.2、ArrayList

oracleJDK

package java.util;

import java.util.function.Consumer;

import java.util.function.Predicate;

import java.util.function.UnaryOperator;

import sun.misc.SharedSecrets;

/** * * Java Collections Framework. * * @author Josh Bloch * @author Neal Gafter * @see Collection * @see List * @see LinkedList * @see Vector * @since 1.2 */

public class ArrayList extends AbstractList

implements List, RandomAccess, Cloneable, java.io.Serializable

{.....}

openJDK

package java.util;

import java.util.function.Consumer;

import java.util.function.Predicate;

import java.util.function.UnaryOperator;

import jdk.internal.misc.SharedSecrets;

/** *

This class is a member of the * * Java Collections Framework. * * @param the type of elements in this list * * @author Josh Bloch * @author Neal Gafter * @see Collection * @see List * @see LinkedList * @see Vector * @since 1.2 */

public class ArrayList extends AbstractList

implements List, RandomAccess, Cloneable, java.io.Serializable

{...}

五、OracleJDK中未开源的部分

其实Oracle JDK差不多只开源了 7%左右,只是 rt.jar中的部分实现开源了,还有 23 个 Jar 没有开源,关于 OpenJDK中的实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值