简单了解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程序运行时所依赖的基本组件。


相关推荐
啊阿狸不会拉杆13 分钟前
《数字图像处理》第 4 章 - 频域滤波
开发语言·python·数字信号处理·数字图像处理·频率域滤波
他们叫我技术总监24 分钟前
Python 列表、集合、字典核心区别
android·java·python
江沉晚呤时29 分钟前
从零实现 C# 插件系统:轻松扩展应用功能
java·开发语言·microsoft·c#
梁下轻语的秋缘40 分钟前
ESP32-WROOM-32E存储全解析:RAM/Flash/SD卡读写与速度对比
java·后端·spring
wanzhong233343 分钟前
开发日记8-优化接口使其更规范
java·后端·springboot
Knight_AL1 小时前
Java 多态详解:概念、实现机制与实践应用
java·开发语言
C雨后彩虹1 小时前
volatile 实战应用篇 —— 典型场景
java·多线程·并发·volatile
xie_pin_an1 小时前
从二叉搜索树到哈希表:四种常用数据结构的原理与实现
java·数据结构
Omigeq1 小时前
1.2.1 - 图搜索算法(以A*为例) - Python运动规划库教程(Python Motion Planning)
开发语言·python·机器人·图搜索算法
资深流水灯工程师1 小时前
基于Python的Qt开发之Pyside6 串口接收数据被分割的解决方案
开发语言·python·qt