《深入理解Java虚拟机》读书笔记7

第10章 早期(编译期)优化
10.2Javac编译器
1、Javac编译过程步骤:
  • 解析与填充符号表
  • 插入式注解处理器的注解处理
  • 分析与字节码生成

2、解析与填充符号表
包括了经典程序编译原理中的词法分析、语法分析两个过程。
词法分析:将源代码的字符流转变为标记集合。
语法分析:根据Token序列来构造抽象语法树的过程。

3、注解处理
  • 插入式注解处理器的标准API在编译期对注解进行处理,我们可以把它看作是一组编译器的插件,在这些插件里,可以读取、修改、添加抽象语法树中的任意元素。
  • 如果这些插件在处理注解期间对语法树进行了修改,那么编译器将回到解析以及填充符号表的过程重新处理,直到所有插入式注解处理器都没有再对语法进行修改为止。每一次循环称为一个Round.
4、语义分析与字节码生成
1)Javac编译过程中,语义分析过程分为:标注检查、数据及控制流分析。
2)解语法糖(糖衣语法): 在计算机添加的 能够增加程序的可读性,从而减少程序代码出错机会的 某种语法
3)字节码生成:是Javac编译过程最后一个阶段。该阶段不仅把前面各步骤生成的信息(语法树、符号表)转化成字节码写到磁盘中,编译器还进行了少量的代码添加转换工作。

5、Java语法糖
1)泛型与类型擦除
泛型:本质是参数化类型的应用,即操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
Java语言中的泛型实现称为类型擦除,基于这种方法实现的泛型被称为伪泛型。
2)自动装箱、拆箱与遍历循环
编译期间,自动将原生类型转换为对应的包装类型。
3)条件编译
该条件编译的方式使用了if,因此只能实现语句基本块(Block)级别的条件编译,没有办法实现根据条件调整整个Java类的结构。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值