前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java代码的编译过程

Java代码的编译过程

作者头像
韩旭051
发布2021-04-14 15:16:53
9370
发布2021-04-14 15:16:53
举报
文章被收录于专栏:刷题笔记

知识手册里写的 仿佛我从来没学过一样 有点沉不下心来看 整理一下 笔记

从Javac代码的总体结构来看,编译过程大致可以分为1个准备过程和3个处理过程,它们分别如下所示。

1. 准备过程:初始化插入式注解处理器

2. 解析与填充符号表过程,包括:

  1. 词法、语法分析,将源代码的字符流转变为标记集合,构造出抽象语法树
  2. 填充符号表,产生符号地址和符号信息。

3. 插入式注解处理器的注解处理过程:

  1. 在Javac源码中,插入式注解处理器的初始化过程是在 ** initPorcessAnnotations() ** 方法中完成的,而它的执行过程则是在processAnnotations()方法中完成。这个方法会判断是否还有新的注解处理器需要执行,如果有的话,通过JavacProcessing-Environment类的 doProcessing() 方法来生成一个新的JavaCompiler对象,对编译的后续步骤进行处理。

4. 分析与字节码生成过程,包括:

  1. 标注检查,对语法的静态信息进行检查。
  2. 数据流及控制流分析,对程序动态运行过程进行检查。
  3. 解语法糖,将简化代码编写的语法糖还原为原有的形式。
  4. 字节码生成,将前面各个步骤所生成的信息转化成字节码

上述3个处理过程里,执行插入式注解时又可能会产生新的符号,如果有新的符号产生,就必须转回到之前的解析、填充符号表的过程中重新处理这些新符号,从总体来看,三者之间的关系与交互顺序如图所示。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 准备过程:初始化插入式注解处理器。
  • 2. 解析与填充符号表过程,包括:
  • 3. 插入式注解处理器的注解处理过程:
  • 4. 分析与字节码生成过程,包括:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档