类的加载由JVM执行引擎来完成
早期--编译期:源代码文件*.java -> 词法分析器 -> tokens流 -> 语法分析器 -> 语法树/抽象语法树 -> 语义分析器 -> 注解抽象语法树 -> 字节码生成器 -> JVM字节码文件*. class
晚期--运行期==执行引擎执行:JVM字节码 .class -> 机器无关优化 -> 中间代码 -> 机器相关优化 -> 中间代码 -> 寄存器分配器 -> 中间代码 -> 目标机器码生成器 -> 目标机器码
1:类的生命周期:
加载、验证、准备、解析、初始化、使用、销毁,其中验证、准备、解析统称为连接
加载、验证、准备、初始化和卸载顺序确定,过程通常互相交叉混合式进行,通常在一个阶段执行的过程中调用、激活另一个阶段;
解析在某些情况下可以在初始化之后再开始---支持Java语言的运行时绑定(也称动态绑定或晚期绑定)
虚拟机规范严格规定了有且只有五种情况必须对类进行初始化,也就是执行类加载操作,而加载、验证、准备自然需要在此之前进行
五种情况被称为主动引用----触发初始化操作(page 210)ÿ