前端编译与优化

Javac 编译器

JDK6以前,Javac并不属于标准Java SE API的一部分,它实现代码单独存放在tools.jar中,

要在程序中使用的话就必须把这个库放到类路径上。在JDK6发布时通过了JSR 199编译器API的提案,

使得Javac编译器的实现代码晋升成为标准的Java类库之一。(可以少配个路径)

Javac 编译过程
  • 准备过程:初始化插入式注解处理器(Lombok就是依靠编译器注解处理的标准API实现的)
  • 解析与填充符号表过程
    • 词法、语法分析。将源代码的字符流转变为标记集合,构造出抽象语法树
    • 填充符号表。产生符号地址与符号信息
  • 插入式注解处理器的注解处理过程
  • 分析与字节码生成
    • 标注检查。对语法的静态信息进行检查
    • 数据流及控制流分析。对程序动态运行过程进行检查
    • 解语法糖。将简化代码编写的语法糖还原为原有的形式
    • 字节码生成。将前面各个步骤所生成的信息转化成字节码

Java 语法糖

  • 泛型

    Java实现泛型采用了类型擦除的方式,编译后所有泛型都变为裸类型(Raw Type

    ArrayList list; // 裸类型
    
  • 自动装箱、拆箱与遍历循环

  • 条件编译