Java的解释执行与编译执行

理解Java的几个编译器

前端编译器:把.java文件转变成.class文件。包括Sun的Javac、Eclipse JDT中的增量式编辑器(ECJ)

后端运行期编译器(JIT编译器,Just In Time Compiler):把字节码转成机器码。包括HotSpot VM的C1、C2编译器

静态提前编译器(AOT编译器,Ahead Of Time Compiler):把*.java编译成本地机器码。包括GNU Compiler for the Java(GCJ)、Excelsior JET

Java一开始被定位为“解释执行”的语言,但是现在主流的虚拟机中都包含了即时编译器(也包含解释器),.class文件中的代码到底会被解释执行还是编译执行,只有虚拟机自己才能判断。

Java的特殊的解释执行机制

把Java和其他典型的解释型语言对比,例如Python,你会发现,Java的解释执行有点与众不同。它为什么要先编译为.class的字节码,然后有JVM对字节码进行解释执行,而不是像Python那样直接解释执行源代码。这个问题具体可以参考 Java为什么解释执行时不直接解释源码?

你可能感兴趣的:(Java)