Java 代码编译和执行的整个过程

通常说的 Java 编译只相当于其他"编译"的前端,它只是编译成 Java 字节码。
// Java字节码既是一种 ISA(指令集体系结构,instruction set architecture),也是一种 IR(编译器中间表示,intermediate representation )

Java 代码编译是由 Java 源码编译器来完成,流程图如下所示:

Java 字节码的执行是由 JVM 执行引擎来完成,流程图如下所示:


JVM 实现可以选择把字节码进一步编译为机器码(也就是实现对应编译器后端的部分),或者解释执行字节码(也就是不实现编译器后端,而用解释器替代之),或者混合两者。