JVM :英文名称(Java Virtual Machine)Java 虚拟机。它的作用是识别xxx.class 类型的文件,并将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。
JRE :英文名称(Java Runtime Environment)Java 运行时环境。它主要包含两个部分,jvm 和 Java 的一些基本类库。它比 jvm 多一部分的 Java 类库。
JDK :英文名称(Java Development Kit)Java 开发工具包。jdk 是整个 Java 开发的核心,它包含jre 和一些好用的小工具。例如:javac.exe,java.exe,jar.exe 等。
三者的关系是JDK包含JRE包含JVM
困惑一:为什么jdk里面有jre,外面还有jre?
两个jre之间没有关系,甚至可以说是一样的,jre 既提供了这些工具的运行环境,也提供了我们编写完成的 Java 程序的运行环境。
困惑二:jvm 为什么是 Java 能够跨平台的核心?
Java运行步骤:源码—javac编译器—>字节码文件—Java解释器—>机器码文件
jvm的作用是将字节码文件解释为机器码文件。
源码通过javac编译器转化为字节码文件,字节码文件是一样的。不一样的是jvm,针对不同的系统有不同的 jvm 实现,有 Linux 版本的 jvm 实现,也有 Windows 版本的 jvm 实现,不同的 jvm 实现上会映射到不同系统的 API 调用,从而实现代码的不加修改即可跨平台运行。也就是一块布,做裤子的拿来可以做裤子,做上衣的可以拿来做上衣。