代码编译概述
Java语言的编译期其实是一段不确定的过程,因为它可能是一个前端编译器,把Java文件转成class文件的过程,也可能是指虚拟机的后端运行期编译器(JIT编译器)把字节码转成机器码的过程;还可能是静态提前编译(AOT编译)直接把*Java转为机器码的过程。
比较有代表性的编译器分类
1.前端编译器
Sun 的Javac,Eclipse JDT中的增量式 编译器(EJC)
2. JIT编译器
HotSpot VM中的C1,C2编译器
3. AOT编译器
GCJ,Excelsior JET
Javac这类的编译期对于代码的运行效率几乎没有任何的优化 措施,虚拟机设计团队把性能的优化 集中到了即时编译中,也同样能让那些不是有Javac编译而来的class文件也能享受到编译器优化带来的好处,但是Javac做了许多针对编码过程的优化措施来改善程序员的编码风格和提高编码效率。相当多新生的语法 特性都是由编译器的“语法糖”来实现,而不是依赖虚拟机的底层改进来支持。
网友评论