JDK、JRE和JVM之前有什么关系?

JDK、JRE、JVM之间是包含关系,具体为JDK>JRE>JVM。详细解释如下:


1. JDK是什么?有哪些内容组成?

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

JDK 是 Java 开发人员用于开发 Java 应用程序的工具包。它是一个面向开发者的完整环境,包含编译、调试、运行 Java 程序所需的一切。

组成部分

JDK 包括以下主要部分:

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

    • JVM 是 Java 程序的运行环境,负责将 Java 字节码(.class 文件)解释或编译为机器可以理解的指令并执行。
    • 它具有平台无关性,是 Java "一次编译,到处运行"的核心。
  2. 核心类库(Core Libraries)

    • 这是 Java 的标准库,包含了 Java 语言提供的基础功能,比如数据结构(集合框架)、I/O操作、多线程支持、网络编程、数据库操作等。开发者无需重新编写这些功能,可以直接调用核心类库中的现成方法。
    • 示例:java.util.*(集合框架)、java.io.*(文件I/O)、java.net.*(网络通信)。
  3. 开发工具(Development Tools)

    • 编译工具:将 Java 源代码(.java 文件)编译为字节码文件(.class 文件)。
      • javac:编译器。
    • 运行工具:运行 Java 程序。
      • java:Java 程序启动器。
    • 调试工具:帮助开发者调试代码。
      • jdb:Java 调试工具。
    • 其他工具
      • javadoc:生成文档的工具。
      • jarsigner:签署 JAR 文件的工具。
      • jhat:分析堆转储的工具。
  4. 附加库(Optional Libraries)

    • 某些 JDK 还附带其他扩展库,用于支持高级功能,例如 JavaFX(图形界面开发)。
  5. Java 应用示例代码和演示

    • JDK 中可能包括一些官方提供的示例代码,供开发者学习和参考。
JDK 的主要用途
  • 编写、编译和运行 Java 程序。
  • 通过调试工具检测和解决代码中的问题。
  • 生成 API 文档。

2. JRE是什么?有哪些内容组成?

JRE(Java Runtime Environment,Java运行时环境)

JRE 是 Java 程序运行所需的环境,它不包含开发工具,主要面向普通用户和生产环境中运行 Java 程序的需求。JRE 是 JDK 的一个子集。

组成部分
  1. JVM(Java Virtual Machine,Java虚拟机)

    • 同 JDK 中的 JVM,负责解释和执行 Java 字节码。
  2. 核心类库(Core Libraries)

    • 包含支持 Java 程序运行所需的所有标准类库。开发者可以利用这些类库实现文件操作、数据处理、网络通信等功能。
  3. 运行工具(Runtime Tools)

    • java:Java 程序启动器,用于运行 Java 应用程序。
    • javaw:类似于 java,但不弹出控制台窗口,常用于图形化界面程序(如 JavaFX 应用)。
    • 其他工具:如支持运行 Java Web Start 应用的工具(已逐步淘汰)。
JRE 的主要用途
  • 提供运行 Java 应用程序的环境,无需包含开发工具。
  • 是普通用户安装 Java 程序(如 IntelliJ IDEA、Minecraft 等 Java 应用)的必要组件。

3. JDK、JRE、JVM 三者的包含关系

包含关系概述
  • JDK 包含 JRE,JRE 包含 JVM。
  • 当已经把代码写完,并且编译成.class文件,要将.class文件直接交给别人运行(也就是说用户在使用已经由Java编译好的软件时,比如Minecraft-我的世界),此时已经不需要javac(Java编译工具)、jdb(Java调试工具)等开发时所需要的文件了,所以在JRE中将这些文件删除,形成了占用内存更小,只用于运行的JRE。
  • 换句话说:
    • JVM 是核心,它是 Java 程序执行的环境,无论是JDK还是JRE都需要JVM。Java程序的编译和运行都是在JVM(全称“Java virtual machine”,即Java虚拟机)中进行的,并非直接在电脑或手机中进行编译和运行,这与C语言、python语言不同,这些语言都是直接运行在电脑或手机中的。
    • JRE 是 JVM 的运行环境,除了 JVM 外,还包括核心类库和运行工具。
    • JDK 是开发工具包,除了包含 JRE 外,还增加了编译器和其他开发工具。
层级结构
  1. JVM

    • 是 Java 字节码的运行环境。
    • 直接负责程序的执行。
    • 不包含任何标准类库或工具。
  2. JRE

    • 包含 JVM 和支持其运行的核心类库及工具。
    • 专注于 Java 程序的运行。
  3. JDK

    • 包含 JRE,以及编译器(javac)、调试工具(jdb)、文档生成工具(javadoc)等开发工具。
    • 是开发者的主要工作环境。
类比理解
  • JVM 相当于汽车的“引擎”,直接驱动程序运行。
  • JRE 相当于汽车的“基础配置”,包含了引擎和支持正常运行的部件(如油箱、轮胎)。
  • JDK 相当于汽车的“生产线”,既包含基础配置,也包含开发和制造汽车的工具。

总结与扩展知识

  • 为什么需要 JVM?

    • JVM 实现了 Java 的跨平台特性:开发者只需编写一次代码,无需针对不同平台重新编译,JVM 会在对应平台上解释执行。
    • 不同操作系统(如 Windows、Linux、MacOS)有各自的 JVM 实现,但它们运行同样的 Java 字节码。
  • 为什么需要 JRE?

    • 普通用户无需关心代码编译,只需运行程序。JRE 简化了这种需求,去除了编译工具。
  • 为什么需要 JDK?

    • 开发者需要编写和测试 Java 应用程序,JDK 提供了一个全面的开发环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值