题目
JDK 和 JRE 的区别
答案
首先,我们需要知道 Java 程序其实是运行在JVM (Java虚拟机) 上的,使用 Java 编译器编译 Java 程序时,生成的是与平台无关的字节码,这些字节码只面向 JVM。不同平台的 JVM 都是不同的,但它们都提供了相同的接口,这也正是 Java 跨平台的原因。其和 JDK、JRE 的关系如下图所示:

- **JDK(Java Development Kit)**:是 Java 的标准开发工具包(**普通用户只需要安装 JRE 来运行 Java 程序。而程序开发者必须安装 JDK 来编译、调试程序**)。它提供了编译、运行 Java 程序所需的各种工具和资源,包括 Java 编译器、Java 运行环境 JRE,以及常用的 Java 基础类库等,是整个 Java 的核心
> 下图是 Java 8 中 JDK 的安装目录
>
> 
>
> - `bin` 文件里面存放了JDK的各种开发工具的可执行文件,主要的是编译器 (`javac.exe`)
> - `db` 文件是一个先进的全事务处理的基于 Java 技术的数据库(jdk 自带数据库 db 的使用)
> - `include` 文件里面是 Java 和 JVM 交互用的头文件
> - `jre` 为 Java 运行环境
> - `lib` 文件存放的是 JDK 工具命令的实际执行程序
- **JRE(Java runtime environment)**: 是运行基于 Java 语言编写的程序所不可缺少的运行环境,用于解释执行 Java 的字节码文件。**JRE 是 Java 运行环境,并不是一个开发环境**,所以没有包含任何开发工具(如编译器和调试器),只是针对于【使用】Java 程序的用户
> 下图是Java 8中 JRE 的安装目录,里面有两个文件夹 `bin` 和 `lib`。你可以认为 bin 里的就是 JVM,lib 中则是 JVM 工作所需要的类库,而 JVM 和 lib 和起来就称为 JRE
>
> 
