1 什么是 JVM
JVM 是 Java Virtual Machine(Java 虚拟机)的缩写。一台执行 Java 程序的机器。
2 JAVA 语言的执行原理
计算机语言:
计算机能够直接执行的指令。这种指令和系统及硬件有关。
计算机高级语言:
在遵循语法的前提下,写一个文本文件,之后利用某种方式,把文本转换为计算机指令
执行。
A. 编译型语言(C 语言):文本文件(.c) --> 编译器 --> 可执行文件(.exe) -->
执行机器指令。特点:运行速度快,但不能跨平台
B. 解释型语言(JavaScript):文本文件 --> 解释器 --> 翻译成机器指令并执
行。特点:运行速度较慢,但能跨平台
JAVA 语言:先编译,后解释执行
文本文件(java) --> 编译器 --> class 文件(虚拟指令) --> JAVA 虚拟机(JVM)
–> 解
释为指令执行
3 JDK + JRE + JVM
(1)JDK(JAVA 开发环境):JRE + 工具(编译器、调试器、其他工具…)+ 类库
编译器:将 JAVA 文件编译为 JVM 能够看懂的文件(Class 文件)。
(2)JRE(JAVA 运行环境):JVM + JAVA 解释器
Java 解释器:将虚拟指令解释为机器指令执行。
(3)JVM(JAVA 虚拟机)
4 JAVA 字节码文件结构
ClassFile {
u4 magic;
u2 minor_version; 副版本号
u2 major_version; 主版本号
u2 constant_pool_count;
cp_info constant_pool[constant_pool_count-1];
u2 access_flags;
u2 this_class;
u2 super_class;
u2 interfaces_count;
u2 interfaces[interfaces_count];
u2 fields_count;
field_info fields[fields_count];
u2 methods_count;
method_info methods[methods_count];
u2 attributes_count;
attribute_info attributes[attributes_count];
}
5 总结
结论:编译的本质就是将 java 源文件转为 JVM 能够认识的 16 进制 class 文件格式