简单了解JVM执行Java程序的基本流程 | 一次编译,到处运行

前言:

Java代码怎么做到一次编译,到处运行的呢?靠JVM,那JVM的执行流程是什么呢?

简单来说:通过Javac编译器 将Java源代码编译成字节码, JVM通过类加载器 将字节码加载到运行时数据区 中,并通过执行引擎 将字节码翻译为可执行的机器指令,最终交由CPU执行。在此过程中,本地库接口用于调用底层系统功能或其他编程语言的库。这几个主要组成部分共同协作,确保Java程序能够跨平台、高效地运行。


一、编译阶段( .java -> .class)

在程序执行之前,Java源代码首先需要通过Javac编译器 编译成字节码 ,存储在.class文件中。字节码是一种与平台无关的中间语言,能够在不同的硬件和操作系统上运行。


二、类加载器(ClassLoader)

JVM的执行流程开始于类加载器 ,将.class文件加载到内存中的运行时数据区(Runtime Data Area) 。类加载器通过不同的方式(如从本地文件系统或网络)查找和加载字节码文件,并负责处理类的依赖关系


三、字节码验证器

在类被加载后,JVM的字节码验证器会检查字节码的有效性,确保字节码没有非法的代码,避免加载可能损害JVM安全性的字节码。这一步确保了Java程序的安全性和稳定性


四、执行引擎

字节码文件是JVM的一套指令集规范,并不能直接由底层操作系统执行。因此,执行引擎扮演了一个至关重要的角色。它将字节码指令翻译成具体的底层系统指令,并交由CPU执行


五、本地库接口(Native Interface)

执行引擎执行过程中,有时需要调用其他语言(如C或C++)编写的底层库或系统功能。这时,JVM通过本地库接口,来实现与本地库的交互,从而完成程序的特定功能。


六、执行环境

JVM还提供了一个标准的执行环境,包括Java标准类库、线程管理、异常处理等,这些都是Java程序运行时所依赖的基本组件。


相关推荐
leo__5208 小时前
基于导航数据的扩展卡尔曼滤波(EKF)MATLAB 实现
开发语言·matlab
gugucoding8 小时前
25. 【C语言】二进制文件与随机读写
c语言·开发语言
北极星日淘8 小时前
中古货品品相评级算法实战|Java权重计分实现标准化五级品相体系
开发语言·python
聚美智数8 小时前
黄历查询-运势查询-国际法定节假日查询-API接口介绍
android·java·数据库
小巧的砖头9 小时前
C#会重蹈覆辙吗?系列之2:反射及元数据的性能问题
开发语言·前端·c#
凯瑟琳.奥古斯特9 小时前
力扣1009补码解法C++实现
开发语言·c++·算法·leetcode·职场和发展
2601_963645929 小时前
【2026最新】MATLAB教程(附安装包,非常详细)
开发语言·matlab·信息可视化
闲猫10 小时前
Python 虚拟环境 virtualenv & uvicorn 服务搭建 & FAstAPI 使用
开发语言·python
Yeats_Liao10 小时前
18:JavaBean简介及其在表单处理与DAO设计模式中的应用-Java Web
java·后端·架构
范什么特西10 小时前
网络代理问题
java·linux·服务器