当前位置: 代码迷 >> J2EE >> Java在编译时做了哪些事儿
  详细解决方案

Java在编译时做了哪些事儿

热度:11   发布时间:2016-04-17 23:21:04.0
Java在编译时做了哪些事情
如题
先抛砖引玉吧:
1. 常量引用
2. 常量运算;
3. 方法重载;
4. 方法重写;
5. 泛型构建;
6. 编译时异常;
7. 编译时注解;

如有不当处还希望能指出。
------解决思路----------------------
我自己的感觉
1 启动jvm加载类加载器,将加载相关文件载入内存
2 执行javac命令
3 导入java.lang包和你自己import的包
4 执行编译期检查,有异常则抛出异常。
5 jvm生成与平台无关的二进制字节码文件  就是.class文件。
------解决思路----------------------
如果是Javac编译器,主要做了如下的事情:
1、解析与填充符号表;    
2、注解处理器;    
3、语义分析与字节码生成:    
    3.1、标注检查    
    3.2、数据及控制流分析    
    3.3、解语法糖    
        3.3.1、泛型与类型擦除    
        3.3.2、自动装箱、拆箱与遍历循环    
        3.3.3、条件编译    
    3.4、字节码生成    
详细要研究下Javac的源代码了,java从也是Java实现的。
程序编译与代码优化(早期(编译器)优化):
https://github.com/arthinking/arthinking.github.io/blob/master/Java/2014120501_JVM%E7%AC%94%E8%AE%B0%20-%20%E7%A8%8B%E5%BA%8F%E7%BC%96%E8%AF%91%E4%B8%8E%E4%BB%A3%E7%A0%81%E4%BC%98%E5%8C%96%EF%BC%88%E6%97%A9%E6%9C%9F%EF%BC%88%E7%BC%96%E8%AF%91%E5%99%A8%EF%BC%89%E4%BC%98%E5%8C%96%EF%BC%89.md
  相关解决方案