如题
先抛砖引玉吧:
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