读了林 昊的《分布式java应用 基础与实践》 对于里面的java源码编译机制有了一感触,
错把常识当知识。
比如java 的编译机制,先将源文件编译成语法树,再由语法树这个中间状态生成目标文件class文件,认为是特有的一种方式,其实不然,大脑里面没有和大学里面学的 《编译原理》联系起来。
使用语法树 这种中间状态的好处是能够主要是两点
1 能生成不同目标平台与不同语言的编辑器,灵活性相当高。
2 有中间形式,自然就能做不同的优化。
那现在想想 这个class 文件 与jvm 与源程序之间也是中间状态,而且跟平台无关,java语法不断增加新功能,比如什么注解啊,但class文件这个中间状态的产品组成原子没有变,但组合变了,使相应的平台不需要为之改变什么,jvm 可能不断改进,对class文件转换成目标代码时,不断的进行优化。呵呵,这些都可以和编译原理相联系,相通.这种状态,并不是什么新发明,只是对原素之间组合成不同表现形式的东西。