1631 字
约 5 分钟
8
第3章 JDK、JRE和JVM详解
无标签

第3章 JDK、JRE和JVM详解

面包屑导航

学习目标

  • 理解JDK、JRE、JVM的概念和作用
  • 掌握三者之间的关系和区别
  • 了解Java程序的编译和运行过程
  • 理解Java跨平台的实现原理
  • 掌握字节码的概念和作用

核心组件概述

Java平台由三个核心组件构成,它们各自承担不同的职责,共同构成了完整的Java开发和运行环境:

JDK (Java Development Kit)

Java开发工具包

  • 包含完整的开发工具
  • 包含JRE运行环境
  • 提供编译器(javac)
  • 提供调试器(jdb)
  • 提供文档生成工具(javadoc)
  • 提供打包工具(jar)

JRE (Java Runtime Environment)

Java运行环境

  • 包含JVM虚拟机
  • 包含核心类库
  • 包含支持文件
  • 提供运行Java程序的环境
  • 不包含开发工具
  • 面向最终用户

JVM (Java Virtual Machine)

Java虚拟机

  • 执行字节码的虚拟机
  • 提供跨平台支持
  • 管理内存分配
  • 执行垃圾回收
  • 提供安全机制
  • 优化程序执行

组件关系图

JDK、JRE、JVM 包含关系JDK⊃JRE⊃JVM> 包含关系:JDK包含JRE,JRE包含JVM。这意味着安装JDK就拥有了完整的Java开发和运行环境。

详细解析

JDK (Java Development Kit)

JDK是Java开发工具包,是Java开发者必须安装的软件包。它包含了开发Java应用程序所需的所有工具和库。

JDK主要组件:

  • javac:Java编译器,将.java源文件编译成.class字节码文件
  • java:Java解释器,用于运行Java程序
  • javadoc:文档生成器,从源代码注释生成HTML文档
  • jar:打包工具,将多个class文件打包成jar文件
  • jdb:Java调试器,用于调试Java程序
  • javap:反编译器,显示class文件的内容

JRE (Java Runtime Environment)

JRE是Java运行环境,包含了运行Java程序所需的最小环境。如果只需要运行Java程序而不需要开发,安装JRE就足够了。

JRE主要组件:

  • JVM:Java虚拟机,执行字节码
  • 核心类库:Java标准库,如java.lang、java.util等
  • 支持文件:配置文件、属性文件等

JVM (Java Virtual Machine)

JVM是Java虚拟机,是Java跨平台特性的核心。它是一个抽象的计算机,有自己的指令集和内存管理机制。

JVM主要功能:

  • 字节码执行:解释或编译执行Java字节码
  • 内存管理:自动分配和回收内存
  • 垃圾回收:自动清理不再使用的对象
  • 安全管理:提供安全沙箱环境
  • 异常处理:处理程序运行时的异常

Java程序执行流程

从源代码到运行的完整流程1编写源代码创建.java文件→2编译javac生成.class→3加载JVM加载字节码→4执行JVM执行程序

# 1. 编写Java源代码 (HelloWorld.java)
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

# 2. 使用javac编译源代码
javac HelloWorld.java

# 3. 编译后生成HelloWorld.class字节码文件

# 4. 使用java命令运行程序
java HelloWorld

# 5. 输出结果
Hello, World!

三者对比分析

特性 JDK JRE JVM
全称 Java Development Kit Java Runtime Environment Java Virtual Machine
主要用途 开发Java应用程序 运行Java应用程序 执行Java字节码
目标用户 Java开发者 最终用户 系统底层(用户不直接接触)
包含内容 开发工具 + JRE JVM + 核心类库 虚拟机引擎
是否包含编译器 是(javac) 否 否
是否可以运行Java程序 是 是 是(需要类库支持)
文件大小 最大 中等 最小

跨平台原理

Java的"一次编写,到处运行"(Write Once, Run Anywhere, WORA)特性是通过JVM实现的:

跨平台机制:Java源代码编译成平台无关的字节码不同平台有对应的JVM实现JVM将字节码翻译成特定平台的机器码实现了代码的跨平台运行

字节码详解

字节码是Java跨平台的关键:

  • 平台无关性:字节码不依赖于特定的硬件平台
  • 中间表示:介于源代码和机器码之间的中间形式
  • JVM指令:由JVM定义的指令集组成
  • 安全性:在JVM的安全沙箱中执行
# 使用javap命令查看字节码
javap -c HelloWorld

# 输出示例(部分):
Compiled from "HelloWorld.java"
public class HelloWorld {
  public HelloWorld();
    Code:
       0: aload_0
       1: invokespecial #1  // Method java/lang/Object."":()V
       4: return

  public static void main(java.lang.String[]);
    Code:
       0: getstatic     #2  // Field java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #3  // String Hello, World!
       5: invokevirtual #4  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
       8: return
}

JVM内存结构

JVM管理着程序运行时的内存,主要包括以下区域:

  • 方法区(Method Area):存储类信息、常量、静态变量等
  • 堆内存(Heap):存储对象实例和数组
  • 栈内存(Stack):存储局部变量和方法调用信息
  • 程序计数器(PC Register):记录当前执行的指令地址
  • 本地方法栈(Native Method Stack):支持本地方法调用

内存管理:JVM自动管理内存分配和回收,开发者不需要手动管理内存,这大大降低了内存泄漏的风险。

常见问题解答

为什么需要JVM?

JVM提供了以下重要功能:

  • 实现跨平台运行
  • 自动内存管理
  • 提供安全沙箱
  • 优化程序执行
  • 统一的异常处理机制

JDK版本如何选择?

版本选择建议:

  • 学习阶段:选择LTS版本(JDK 11或17)
  • 企业开发:根据项目需求选择稳定版本
  • 新项目:推荐使用最新的LTS版本
  • 维护项目:保持与现有环境一致

本章小结

  • JDK是完整的Java开发工具包,包含开发和运行环境
  • JRE是Java运行环境,包含JVM和核心类库
  • JVM是Java虚拟机,负责执行字节码
  • 三者关系:JDK ⊃ JRE ⊃ JVM
  • Java通过字节码和JVM实现跨平台特性
  • JVM提供自动内存管理和安全机制

下一章:第一个Java程序 章节测试

第3章 JDK、JRE和JVM详解
https://clxhxhhr.top/posts/2949/
作者
clxstart
发布于
2026-09-24
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。