1 Javac编译
因为JVM把Javac把Java代码编译成字节码,即把.java文件变成.class文件,JVM(Java虚拟机)可以理解字节码文件,
将其转换为机器可以执行的代码,所以只要安装了JVM的平台,都可以运行Java程序。
2 JVM
Javac编译后,Java文件就变成了字节码文件,JVM类加载器会去加载字节码文件,然后由解释器来解释执行,这一步是比较慢的,而程序中有一部分代码是经常会被调用的,即所谓的热点代码,所以后面就有了JIT(Just In Time Compilation)编译器。
经过JIT编译器编译的热点代码,会在第一次编译过后,把生成的机器码保存下来,下一次这些热点代码被调用的时候就可以直接执行字节码的,学过计算机的同学都知道,机器码的运行速度肯定是高于Java代码的。这也是为什么说Java是编译与解释共存的原因。