Java的“编译期”其实是一段不确定的操作过程,它可能的过程为以下三种:
- 前端编译器:或许叫编译器的前端更合适,指的是把
*.java
文件转化为*.class
文件的过程 - 后端运行期编译器:JIT(Just In Time Compiler),把字节码转变成机器码的过程
- 静态提前编译器:AOT编译器(Ahead Of Time Compiler)直接吧
*.java
文件编译成本地机器码的过程。
其具有代表性的编译器如下:
- 前端编译器:Sun的javac、Eclipse JDT中的增量式编译器(ECJ)
- JIT编译器:HotSpot VM的C1、C2编译器
- AOT编译器:GNU Compiler For the Java (GCJ)、Excelsior JET