php网站开发实践指南,化妆品网站建设公司,网页qq登录保护不再开启入口,用网站做简历模板我们通常写的文件都是java文件,最后要在JVM上运行则需要将java文件编译成class(二进制文件).各厂商在实现JDK时通常会符合java语言规范的源码编译为class文件的编译器.编译器的好坏很大程度上决定了最后程序在机器上执行效率.通常使用Sun JDK(javac).javac将java源码编译成clas…我们通常写的文件都是java文件,最后要在JVM上运行则需要将java文件编译成class(二进制文件).各厂商在实现JDK时通常会符合java语言规范的源码编译为class文件的编译器.编译器的好坏很大程度上决定了最后程序在机器上执行效率.通常使用Sun JDK(javac).javac将java源码编译成class文件有以下主要的三个步骤:分析和输入到符号表(parse and enter)parse过程为词法分析和语法分析.词法分析主要是将字符串转成token序列;语法分析是根据语法将token生成抽象语法树.enter是将符号输入到符号表.通常包括确定类的超类型和接口、根据需要添加默认构造器、将类中出现的符号输入类自身的符号表中等。注解处理(annotation processing)主要处理用户自定义的注解我们通常会根据注解来生成一代码或做一些特殊的检查。而在编译时就会生成相关代码。然后再做parse and enter操作。语义分析和生成class文件(analyse and generate)analyse是基于抽象语法树进行一系列的语义分析,包括将语法树中的名字、表达式等元素与变量、方法、类型等联系到一起检查变量前是否申明推导泛型方法的类型参数检查类型匹配进行常量折叠检查所有语句都可到达检查所有exception都被捕获或抛出检查变量的确定性赋值将泛型转为java精减语法结构等在完成了语义分析后开始生成class文件首先将实例成员初始化器收集到构造器中将静态成员初始化器收集为();接着将抽象语法树生成字节码采用的方法为后序遍历语法树并进行最后的少量代码转换(如将string转变为stringBuffer操作)最后从符号表生成class文件。class文件中并不仅仅存放了字节码还存放了很多辅助JVM来执行class的附加信息。原文http://881206524.blog.51cto.com/10315134/1901182