JDK、JRE 、 JVM 详细介绍

1. JVM(Java Virtual Machine,Java 虚拟机)

详细定义

JVM 是 Java 平台无关性(跨平台)的核心。它将编译过的 Java 字节码(.class 文件)解释或即时编译成特定平台的机器码,并执行这些机器码。

主要功能和组件
  • 类加载器(Class Loader):负责将字节码文件(.class 文件)加载到 JVM 中。

    • 启动类加载器(Bootstrap ClassLoader):加载 JDK 核心类库(rt.jar)。
    • 扩展类加载器(Extension ClassLoader):加载扩展类库(ext 目录下的类库)。
    • 应用程序类加载器(Application ClassLoader):加载用户类路径(classpath)下的类。
  • 内存管理

    • 堆(Heap):存储对象实例。
    • 栈(Stack):存储方法调用和本地变量,每个线程都有自己的栈。
    • 方法区(Method Area):存储类结构、常量池、方法数据和方法代码。
    • 程序计数器(Program Counter Register):记录当前线程执行的字节码行号。
    • 本地方法栈(Native Method Stack):为本地方法服务。
  • 执行引擎

    • 解释器(Interpreter):将字节码逐行解释为机器码执行。
    • 即时编译器(JIT Compiler):将热点代码编译为机器码以提高执行效率。
  • 垃圾回收(Garbage Collection)

    • 自动内存管理,回收不再使用的对象。
    • GC 算法:标记-清除算法、复制算法、标记-压缩算法等。
    • GC 垃圾收集器:如 Serial、Parallel、CMS、G1 等。

2. JRE(Java Runtime Environment,Java 运行环境)

详细定义

JRE 是一个软件包,提供了运行 Java 应用程序所需的基础环境。它包括 JVM 和标准类库,但不包括开发工具(如编译器)。

组成部分
  • JVM:见上文详细定义。

  • Java 核心类库(Core Libraries):提供基本的编程功能,如:

    • Java.lang:提供基础类如 Object、String、Math 等。
    • Java.util:提供集合框架(List、Set、Map)、日期时间 API 等。
    • Java.ioJava.nio:提供输入输出功能。
    • Java.net:提供网络功能。
  • Java 标准类库:包括一些常用工具类和 API。

  • 其他文件:如配置文件(properties)、本地库(native libraries)。

3. JDK(Java Development Kit,Java 开发工具包)

详细定义

JDK 是 Java 开发人员用来编写、编译和调试 Java 程序的工具包。它包含了 JRE 和开发工具。

组成部分
  • JRE:见上文详细定义。
  • 开发工具
    • 编译器(javac):将 Java 源代码(.java 文件)编译成字节码(.class 文件)。
    • 调试器(jdb):用于调试 Java 应用程序。
    • 文档生成器(javadoc):从 Java 源代码注释中生成 API 文档。
    • 打包工具(jar):用于创建和管理 Java 档案(JAR)文件。
    • 其他工具:如 javap(字节码分析工具)、jconsole(监视和管理工具)、jvisualvm(性能监视和调试工具)等。
开发过程
  1. 编写代码:开发人员使用文本编辑器或 IDE 编写 Java 源代码(.java 文件)。
  2. 编译代码:使用 javac 编译器将源代码编译成字节码(.class 文件)。
  3. 运行代码:使用 java 命令运行编译好的字节码。JVM 将字节码解释或编译为机器码并执行。

包含关系和图示

  • JVM 是 JRE 的一部分,负责执行 Java 字节码。
  • JRE 包含 JVM 和 Java 核心类库,是运行 Java 程序的基本环境。
  • JDK 包含 JRE 和开发工具,是开发 Java 应用程序的完整工具包。

JDK
├── JRE
│   ├── JVM
│   │   ├── 类加载器
│   │   ├── 内存管理
│   │   ├── 执行引擎
│   │   ├── 垃圾回收
│   ├── 核心类库
│   └── 其他文件
├── 编译器(javac)
├── 调试器(jdb)
├── 文档生成器(javadoc)
├── 打包工具(jar)
└── 其他工具
 

结论

JVM 是运行 Java 程序的核心,提供了跨平台的运行环境。JRE 包含了 JVM 和必要的类库,是运行 Java 程序的环境。JDK 则是开发 Java 程序所需的工具包,包含了 JRE 以及编译器、调试器等开发工具。这三个组件共同构成了 Java 的开发和运行体系。

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值