前言

初学 Java 经常被三个名词搞晕:JVM、JRE、JDK。很多人学了半个月依然不知道:为什么装 Java 要装 JDK?JRE 能不能单独运行程序?

本篇用最通俗的比喻,彻底区分三者关系、层级、作用。

一、三者层级关系(从大到小)

JDK 包含 JRE,JRE 包含 JVM

  • JDK = 开发工具 + JRE
  • JRE = 运行环境 + JVM
  • JVM = 虚拟机核心

二、通俗生活化比喻

  • JVM(虚拟机):发动机(核心运行引擎)
  • JRE(运行环境):完整汽车(有发动机 + 基础配件,能跑不能造车)
  • JDK(开发套件):汽车工厂(有整车 + 维修工具 + 生产工具,可以造车、改车、运行车)

三、详细作用区分

1. JVM Java 虚拟机

  • 核心功能:翻译 class 字节码,跨平台运行
  • 特点:
    • 不识别.java 源码,只识别.class 文件
    • 实现 Java「一次编译,到处运行」
  • 使用者:所有运行 Java 程序的设备

2. JRE Java 运行环境

  • 包含:JVM + 核心类库(String、ArrayList 等基础类)
  • 作用:只负责运行 Java 程序,不具备开发能力
  • 场景:服务器、普通用户只装 JRE 即可跑项目

3. JDK Java 开发工具包

  • 包含:JRE + 编译工具、调试工具、打包工具
  • 常用工具:javac、java、jar、jmap、jconsole
  • 场景:开发者必须安装 JDK

四、新手高频误区

  1. 装 JRE 可以写代码吗? 不可以!没有 javac 编译命令,无法编译源码。

  2. 装 JDK 还需要单独装 JRE 吗? 不需要!高版本 JDK 自带完整 JRE。

  3. 为什么 Java 可以跨平台? 因为不同系统有不同 JVM,源码只编译一次,适配所有系统。

结语

记住一句话:开发用 JDK,运行用 JRE,跨平台靠 JVM

更多推荐