笔记-Java基础之虚拟机概述

6 篇文章 0 订阅
3 篇文章 0 订阅

    Java语言的“编译器”其实是一段“不确定”的操作过程,因为它可能是指一个前端编译器(其实叫“编译器的前端”更准确一些)把*.java文件转变成*.class文件的过程,也可能是指虚拟机的后端运行期编译器(JIT编译器,Just In Time Compiler)把字节码转变成机器码的过程,还可能是指使用静态提前编译器(AOT编译器,Ahead Of Time Compiler)直接把*.java文件编译成本地机器代码的过程,下面列举了这3类编译过程中一些比较有代表性的编译器。

    前端编译器:Sun的Javac,Eclipse JDT中的增量式编译器(ECJ)。

    JIT编译器:HotSpot VM的C1,C2编译器。

    AOT编译器:GUN Compiler for the Java(GCJ)、Excelsior JET。

    这3类过程中最符合大家对Java程序编译认知的应该是第一类,虚拟机设计团队把对性能的优化集中到了后端的即时编译器中,这样可以让那些不是由Javac产生的Class文件(JRuby、Groovy等语言的Class文件)也同样能享受到编译器优化所带来的好处,但是Javac做了许多针对Java语言编码过程的优化措施来改善程序员的编码风格和提高编码效率,相当多新生的Java语法特性,都是靠编译器的“语法糖”来实现的,而不是依赖不虚拟机底层改进来支持,可以说,Java中即时编译器在运行期的优化过程对于程序运行来说更重要,而前端编译器在编译期的优化过程对于程序编码来首关系更密切

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值