08.入门篇-JAVA程序运行原理
8 Java程序运行原理
8.1 原理
开发的程序通常是有很多英文单词的符号组成,方便人类读写,称为源代码(Source Code),计算机无法理解人类语言,只能识别简单的指令,这些指令称为机器码(Native Code/Machine Code)

1.程序员书写源代码(Source Code)
2.计算机只能执行(0/1)类型的机器码(Native Code/Machine Code)
3.因此需要通过编译器,将源代码编译成机器码,再交由计算机执行
4.计算机的机器码,即(0/1)指令也有所差别,主要与机器机底层所用芯片与操作系统有关,目前主流 Windows(使用 Intel芯片 x86 架构)、Mac(使用 ARM Holdings芯片 ARM64 架构)、Linux
5.编译器编译后的机器码只能放到某个特定系统上运行,而非三个主流系统都能使用,因此需要开发三款编译器,编译三个操作系统对应的机器码,而编译器的开发是不简单的,因此需要转换思想

6.编译器工作流程:前三步,1.词法分析、2.语法分析、3.语义分析 可以看作是一个阶段,是在理解源代码,第四步,4.代码生成 翻译生成(0/1)类型机器码,前三步工作内容相同,区别只在于第四步

7.Java 在编译器后又提供一个 JVM(Java 虚拟机,理解为虚拟的计算机),JVM 有一套自己的指令集,即字节码
8.编译器从而不再需要编译代码为机器码,而只需编译代码为字节码,字节码是 JVM 的规范,可以直接运行在 JVM 上,而 JVM 可以在运行过程中将指令集转换成(0/1)类型的机器码
9.因此只需要为不同的操作系统提供不同的 JVM 既可(安装 JDK 时已自动安装 JVM,分为 Windows、Mac、Linux 的 JVM)
10.从而实现一份源代码,一次编译后形成的字节码,就可以在不同操作系统的JVM 上运行,从而实现跨系统、跨平台运行
优势:
1.一次编译,可以跨系统、跨平台运行
2.编译后的字节码接近于机器码,JVM 运行中不用考虑语法、语义等,直接转译既可,因此运行效率高
8.2 各阶段

1.程序员编写源代码
2.编译器编译代码为字节码
3.JVM上运行字节码
8.3 自动编译

1.代码运行后会自动生成 out 目录,out 是高级开发工具自动编译输出的目录
2.production 是编译产出的结果,目录结构是:项目 -> 包 -> 代码目录 -> 代码
3. src 下的是 .java 后缀的文件,out 下是 .class 后缀的文件
8.4 手动编译
开发工具进入命令行:选中 src 右键 -> Open In -> Terminal ,打开终端且同时在该代码文件 src 目录下
# 手动编译,新生成了一个 Main.class 的字节码文件 PS D:\Software\JavaCode\p1-basic\src> javac .\com\itheima\Main.java PS D:\Software\JavaCode\p1-basic\src> ls .\com\itheima\Main.java 目录: D:\Software\JavaCode\p1-basic\src\com\itheima Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2025/11/28 10:36 309 Main.java PS D:\Software\JavaCode\p1-basic\src> ls .\com\itheima\Main.class 目录: D:\Software\JavaCode\p1-basic\src\com\itheima Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2025/12/1 16:58 426 Main.class # 运行编译的文件,这里是java的格式,所以包和目录也要以java形式输入,java 默认是 class 文件,不用输入后缀 PS D:\Software\JavaCode\p1-basic\src> java com.itheima.Main Hello World!
———————————————————————————————————————————————————————————————————————————
无敌小马爱学习
浙公网安备 33010602011771号