《深入理解Java虚拟机》 编译 & 优化
Java的编译过程可以分为两个阶段,首先是将.java
文件编译为.class
文件的过程,称为前端编译,比如javac;然后在运行期,可能即时编译器(JIT)又会将字节码转变为本地机器码,比如HotSopt的C1、C2编译器,或者Graal编译器。
对于优化处理,Java虚拟机团队选择将性能优化的措施全部集中在运行期的即时编译器中,以便让那些不是由 javac 产生的 Class 文件也能享受到性能优化的好处,至于 javac 中则做了一些针对Java语言编码过程的优化,用来降低开发者的编码复杂度、提高编码效率。可以这样认为,即时编译器在运行期的优化过程,支撑了程序执行效率的不断提升,而javac在编译期的优化过程,则支撑了开发者的编码效率和语言使用者的体验。