JDK|JRE|JVM #
JVM: #
Java 虚拟机,Java 程序能够跨平台运行的核心
- 所有的 Java 程序都会被编译为.class 的类文件,同代码在任何平台上编译字节码都相同
- .class 文件在虚拟机上运行,由虚拟机将字节码解释给本地系统执行
JRE: #
Java 运行时环境,即 Java 程序必须在 JRE 上运行
- 包含 JVM 和 Java 核心类库
- JVM 不能直接执行 class,还需要 Java 核心类库来解释 class
- 安装 jre 后有 bin 和 lib 两个文件夹,可简单理解为分别是 JVM 和 Lib
JDK: #
Java 开发工具包,包括 JRE、Java 工具、编译器和调试器组成
自带工具:
- java:Java 运行工具,运行.class 或 jar 包
- javac: Java 编译工具,将 Java 源代码编译为字节码
- javap: Java 反编译工具,将 Java 字节码反汇编为源代码
- jmap:Java 内存映射工具,打印执行 Java 进程、核心文件或远程调试服务器的配置信息
- jps: Java 进程状态工具,显示目标系统上的 HotSpot JVM 的 Java 进程信息
- jinfo: Java 配置信息工具,用于打印指定 Java 进程、核心文件或远程调试服务器的配置信息
- jstack: Java 堆栈跟踪工具,用于打印 Java 进程、核心为念 u 哦远程调试服务器的 Java 现成的堆栈跟踪信息
- jvisualvm: Java 可视化 JVM 检测、故障分析工具。图形化界面提供指定虚拟机的 Java 应用程序的详细信息
- jconsole:图形化界面的检测工具,监测并显示 Java 平台上的应用程序的性能和资源占用等信息
- javadoc: Java 文档工具,根据源代码中的注释信息生成 HTML 格式的 API 帮助文档
三者的关系: #
- JDK 包含 JRE、JRE 包含 JVM
- JVM 不能单独搞定 class 的执行,解释 class 需要使用 JRE 中的 Java 核心类库 lib
- 我们利用 JDK 开发 Java 源程序,通过 JDK 提供的 javac 编译程序将源程序编译成 Java 字节码,在 JVM 使用 JRE 的 lib 解释这些字节码,映射到 CPU 指令集或 OS 的系统调用