JVM JRE和JDK的区别和联系

转载:https://zhuanlan.zhihu.com/p/48487801

ps:Java11 以后没有单独的jre

一、三者的关系

首先 三者之间存在包含关系

JVM + 核心类库 = JRE

JRE + java开发工具(javac.exe/jar.exe) = JDK

二、JVM

Java Virtual Machine 即Java虚拟机

我们知道Java语言有一个独特的优点就是可以跨平台

像其它语言,比如C,我们要针对不同操作系统windos,mac……各出一套应用程序

而Java则可以做到一个软件在任何的操作系统中都能执行,这就是JVM的功劳

如下图

本来我们编写的Java代码计算机还是不认识的,但是我们在每一个操作系统上都会配置一个与之相对应的JVM,会帮我们把我们的Java代码翻译成对应操作系统可以识别的内容。

JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。

所以说我们在第一次写Java程序时都要先把JVM给装好。

三、JRE

Java Runtime Environment 即Java运行环境

JVM + 核心类库 = JRE

刚才不是说只需要装JVM吗?那这个JRE是个什么鬼东西?

是因为只有JVM不能运行,它还需要核心类库,才能保证Java运行

由于JRE包含JVM 因此我们只要直接安装JRE 就顺便把JVM安装了

四、JDK

Java Development Kit 即Java开发工具包

JRE + java开发工具(javac.exe/jar.exe) = JDK

前面不是说安装了JRE以后,Java程序就可以运行了吗?那为啥子还要安装这个JDK?

这是因为我们是开发人员,我们是写软件的,软件光能运行不行啊,得给我们一个地方让我们来写代码吧?所以就需要java开发工具给我们腾出一个地儿来,好让我们coding

由于JDK包含JRE 因此我们只需要安装JDK就都有了

原文地址:https://www.cnblogs.com/flypig666/p/13975047.html