JDK、JRE、JVM 分别是什么关系?

一、JDK、JRE、JVM 分别是什么关系?

JDK(Java Development Kit)、JRE(Java Runtime Environment)和JVM(Java Virtual Machine)在Java中各自扮演不同的角色,并且它们之间存在明确的依赖和包含关系。

  1. JDK(Java Development Kit)
    • JDK是Java开发工具包的缩写,它包含了Java应用程序开发所需的所有工具,如编译器(javac)、调试器(jdb)等,以及Java运行环境JRE。
    • JDK主要用于Java程序的开发。当你想要编写、编译和运行Java程序时,你需要安装JDK。
  2. JRE(Java Runtime Environment)
    • JRE是Java运行时环境的缩写,它包含了Java程序运行所必需的所有资源,如Java虚拟机(JVM)、Java核心类库等。
    • JRE主要用于运行已经编译好的Java程序。如果你只是想运行Java程序,而不是开发Java程序,那么你只需要安装JRE。
    • JRE包含了JVM,因为JVM是运行Java程序所必需的虚拟机。
  3. JVM(Java Virtual Machine)
    • JVM是Java虚拟机的缩写,它是Java程序运行的核心。JVM负责将Java字节码(.class文件)转换为特定平台上的机器码并执行。
    • JVM是Java实现“一次编写,到处运行”的关键,因为它负责在不同的操作系统和硬件平台上模拟相同的Java运行环境。
    • JVM位于JRE中,因为JVM是运行Java程序所必需的组件。

总结来说,JDK包含了JRE,而JRE又包含了JVM。它们之间的关系可以用包含关系来表示:JDK > JRE > JVM。在开发Java程序时,你需要安装JDK;而在运行Java程序时,你只需要安装JRE(因为它包含了JVM)。

二、java运行的过程

Java的运行过程主要涉及源代码的编译、类加载以及JVM(Java Virtual Machine)的执行。以下是Java运行的详细过程:

  1. 编译
    • Java程序的源代码(以.java为扩展名)首先需要通过Java编译器(如javac)进行编译。
    • 编译器会对源代码进行词法分析、语法分析、语义分析以及优化,并生成字节码文件(以.class为扩展名)。这个字节码文件是Java虚拟机(JVM)可以执行的指令集。
  2. 类加载
    • 当Java程序启动时,JVM会创建一个类加载器(ClassLoader)树来加载所有的类。
    • 类加载器负责在运行时将类的字节码文件(.class文件)加载到内存中,并创建对应的Class对象。
    • 类加载器会按照一定的顺序加载类,通常是先由系统类加载器(AppClassLoader)加载本地路径下的类,如果找不到则由扩展类加载器(ExtClassLoader)加载,最后由启动类加载器(BootstrapClassLoader)加载JRE中的核心类。
  3. JVM的执行
    • JVM将加载到内存中的字节码文件通过特定的命令解析器(执行引擎)翻译成底层系统指令,再交由CPU去执行。
    • 这个过程中需要调用其他语言的接口(本地库接口Native Interface)来实现整个程序的功能。
    • JVM中的方法区存放的是类的信息,而堆中主要存放的是实例化的对象。
    • 初始化阶段,Java虚拟机真正开始执行类中编写的Java程序代码,将主导权移交给应用程序。

以上就是Java运行的基本过程。需要注意的是,Java的“一次编写,到处运行”的特性正是得益于JVM的跨平台性,它可以在不同的操作系统和硬件平台上模拟相同的Java运行环境。

  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值