Java基础—JDK,JRE,JVM的关系

我们在学校学习Java的时候也许只会安装jdk,但是不明白所谓的JDK,JRE,JVM的关系,我对他们的了解如下:

       JDK(Java Development Kit) 又称 J2SDK(Java2 Software Development Kit),是 Java 开发工具包,它提供了 Java 的开发环境(提供了编译器 javac 等工具,用于将 java 文件编译为 class 文件)和运行环境(提 供了 JVM 和 Runtime 辅助包,用于解析 class 文件使其得到运行)。如果你下载并安装了 JDK,那么你不仅可以开发 Java 程序,也同时拥有了运行 Java 程序的平台。JDK 是整个 Java 的核心,包括了 Java 运行环境(JRE),一堆 Java 工具 tools.jar 和 Java 标准类库 (rt.jar)。

JRE 主要包含:java 类库的 class 文件(都在 lib 目录下打包成了 jar)和虚拟机(jvm.dll);JDK 主要包含:java 类库的 class文件(都在 lib 目录下打包成了 jar)并自带一个 JRE。那么为什么 JDK 要自带一个 JRE 呢?而且 jdk/jre/bin 下的 client 和 server 两个文件夹下都包含 jvm.dll(说明 JDK 自带的 JRE 有两个虚拟机)。

记得在环境变量 path 中设置 jdk/bin 路径吗?老师会告诉大家不设置的话 javac 和 java 是用不了的。确实 jdk/bin 目录下包含了所有的命令。可是有没有人想过我们用的 java 命令并不是 jdk/bin 目录下的而是 jre/bin 目录下的呢?不信可以做一个实验,大家可以把 jdk/bin 目录下的 java.exe 剪切到别的地方再运行 java 程序,发现了什么?一切 OK!(JRE 中没有 javac 命令,原因很简单,它不是开发环境)那么有人会问了?我明明没有设置 jre/bin 目录到环境变量中啊?试想一下如果 java 为了提供给大多数人使用,他们是不需要 jdk 做开发的,只需要 jre 能让 java 程序跑起来就可以了,那么每个客户还需要手动去设置环境变量多麻烦啊?所以安装jre的时候安装程序自动帮你把 jre 的 java.exe 添加到了系统变量中,验证的方法很简单,去 Windows/system32 下面去看看吧,发现了什么?有一个 java.exe。

面试当中也许会问这三者的关系,简而言之就是JDK包含JRE和其他应用如API接口,是工具包,而JRE是Java程序运行环境,JVM是跨平台虚拟机,专门用来翻译字节码文件。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值