前端编译器

前端编译器

1、概述

​ 在JVM中编译器有三种:前端编译器、即时编译器(JIT编译器,Just In Time)、AOT编译器

  • 前端编译器是指.java文件转换为.class文件的编译器
  • JIT编译器是指将字节码转换为本地机器码的编译器
  • AOT编译器是指将~.java文件转换为本地机器码的编译器

​ 在Java类库中的javac.exe就是一个前端编译器。

​ 虚拟机设计团队把对性能的优化集中到了后端的即时编译器中。

2、前端编译器的过程

在这里插入图片描述

​ Javac的编译过程解释:

  • 解析与填充符号表:

    • 解析:解析步骤分为词法分析和语法分析

      • 词法分析:将源代码的字符流转变为**标记(Token)**集合
      • 语法分析:根据Token序列来构造抽象语法树的过程,抽象语法树是一种用来描述程序代码语法结构的树形表达方式

      经过这个步骤后,编译器就基本不会再对源代码文件进行操作了,后续的操作都建立在抽象语法树上

    • 填充符号表:略,这个部分为黑盒子。对于这部分的内容没有必要理解

  • 注解处理:

    • 注解(Annotation)可以看成为插件,可以读取、修改、添加抽象语法树中的任意元素。如果这些插件在处理注解期间对语法树进行了修改,那么编译器将回到解析及填充符号表的过程重新处理,直到所有的插入式注解处理器都没有再对语法树进行修改为止。
  • 分析与字节码生成:

    • 解决泛型、自动装箱、拆箱、循环遍历、条件编译这些Java的特点,使这些变化的代码(Java代码)变为确定的代码(字节码)
    • 最后生成字节码

ava代码)变为确定的代码(字节码)

  • 最后生成字节码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值