JDK、JRE和JVM的关系
- JDK(Java Development kit)即Java开发工具包,包含了JRE、解释器(java)、编译器(javac)、Java归档(jar)、文档生成器(javadoc)等工具,简单来说如果我们要开发Java程序,就需要某个版本的JDK。
- JRE(Java Runtime Environment)即Java运行时环境,提供Java应用程序执行所需的环境,包括JVM、核心类、支持文件等,如果只是要在某个机器上执行Java程序,可以下载JDK,也可以只安装JRE,后者体积更小
- JVM(Java Virtual Machine)即Java虚拟机,说到它往往有三种含义:
- JVM规范要求
- 满足JVM规范要求的一种具体实现
- 一个JVM运行实例,在命令提示符下编写Java命令以运行Java类时,都会创建一个JVM实例
我们一般说的都是指第三种
范围关系
范围:JDK > JRE > JVM:
- JDK = JRE + 开发工具
- JRE = JVM + 类库
开发运行Java程序时的交互关系
- 就是通过 JDK 开发的程序,编译以后,可以打包分发给其他装有 JRE 的机器上去运行。
- 运行的程序,则是通过 Java 命令启动的一个 JVM 实例,代码逻辑的执行都运行在这个 JVM 实例上。
Java程序的开发运行过程:
JDK开发Java程序并编译成字节码或打包程序 –> JRE启动一个JVM实例,加载、验证、执行Java字节码以及依赖库,运行Java程序 –> JVM将程序和依赖库的 Java 字节码解析并变成本地代码执行,产生结果。