java compiler什么意思_java compiler 到底做了什么事情

-------

android培训、

java培训、期待与您交流! ----------

下面是我在 windows 命令行编译一个 .java 程序,使能 verbose 选项时打印的东西:

D:\j2se 练习\others>javac -verbose RandomTest.java

[语法分析开始时间 RegularFileObject[RandomTest.java]]

[语法分析已完成, 用时 15 毫秒]

[源文件的搜索路径: .]

[类文件的搜索路径: D:\Program Files (x86)\Java\jdk1.7.0_15\jre\lib\resources.jar

,D:\Program Files (x86)\Java\jdk1.7.0_15\jre\lib\rt.jar,D:\Program Files (x86)\J

ava\jdk1.7.0_15\jre\lib\sunrsasign.jar,D:\Program Files (x86)\Java\jdk1.7.0_15\j

re\lib\jsse.jar,D:\Program Files (x86)\Java\jdk1.7.0_15\jre\lib\jce.jar,D:\Progr

am Files (x86)\Java\jdk1.7.0_15\jre\lib\charsets.jar,D:\Program Files (x86)\Java

\jdk1.7.0_15\jre\lib\jfr.jar,D:\Program Files (x86)\Java\jdk1.7.0_15\jre\classes

,D:\Program Files (x86)\Java\jdk1.7.0_15\jre\lib\ext\access-bridge-32.jar,D:\Pro

gram Files (x86)\Java\jdk1.7.0_15\jre\lib\ext\dnsns.jar,D:\Program Files (x86)\J

ava\jdk1.7.0_15\jre\lib\ext\jaccess.jar,D:\Program Files (x86)\Java\jdk1.7.0_15\

jre\lib\ext\localedata.jar,D:\Program Files (x86)\Java\jdk1.7.0_15\jre\lib\ext\s

unec.jar,D:\Program Files (x86)\Java\jdk1.7.0_15\jre\lib\ext\sunjce_provider.jar

,D:\Program Files (x86)\Java\jdk1.7.0_15\jre\lib\ext\sunmscapi.jar,D:\Program Fi

les (x86)\Java\jdk1.7.0_15\jre\lib\ext\sunpkcs11.jar,D:\Program Files (x86)\Java

\jdk1.7.0_15\jre\lib\ext\zipfs.jar,.]

[正在加载ZipFileIndexFileObject[D:\Program Files (x86)\Java\jdk1.7.0_15\lib\ct.s

ym(META-INF/sym/rt.jar/java/lang/Object.class)]]

[正在加载ZipFileIndexFileObject[D:\Program Files (x86)\Java\jdk1.7.0_15\lib\ct.s

ym(META-INF/sym/rt.jar/java/lang/String.class)]]

[正在检查RandomTest]

[正在加载ZipFileIndexFileObject[D:\Program Files (x86)\Java\jdk1.7.0_15\lib\ct.s

ym(META-INF/sym/rt.jar/java/lang/AutoCloseable.class)]]

[正在加载ZipFileIndexFileObject[D:\Program Files (x86)\Java\jdk1.7.0_15\lib\ct.s

ym(META-INF/sym/rt.jar/java/lang/System.class)]]

[正在加载ZipFileIndexFileObject[D:\Program Files (x86)\Java\jdk1.7.0_15\lib\ct.s

ym(META-INF/sym/rt.jar/java/io/PrintStream.class)]]

[正在加载ZipFileIndexFileObject[D:\Program Files (x86)\Java\jdk1.7.0_15\lib\ct.s

ym(META-INF/sym/rt.jar/java/io/FilterOutputStream.class)]]

[正在加载ZipFileIndexFileObject[D:\Program Files (x86)\Java\jdk1.7.0_15\lib\ct.s

ym(META-INF/sym/rt.jar/java/io/OutputStream.class)]]

[已写入RegularFileObject[RandomTest$1.class]]

[正在加载ZipFileIndexFileObject[D:\Program Files (x86)\Java\jdk1.7.0_15\lib\ct.s

ym(META-INF/sym/rt.jar/java/lang/StringBuilder.class)]]

[正在加载ZipFileIndexFileObject[D:\Program Files (x86)\Java\jdk1.7.0_15\lib\ct.s

ym(META-INF/sym/rt.jar/java/lang/CharSequence.class)]]

[正在加载ZipFileIndexFileObject[D:\Program Files (x86)\Java\jdk1.7.0_15\lib\ct.s

ym(META-INF/sym/rt.jar/java/io/Serializable.class)]]

[正在加载ZipFileIndexFileObject[D:\Program Files (x86)\Java\jdk1.7.0_15\lib\ct.s

ym(META-INF/sym/rt.jar/java/lang/Comparable.class)]]

[正在加载ZipFileIndexFileObject[D:\Program Files (x86)\Java\jdk1.7.0_15\lib\ct.s

ym(META-INF/sym/rt.jar/java/lang/AbstractStringBuilder.class)]]

[正在加载ZipFileIndexFileObject[D:\Program Files (x86)\Java\jdk1.7.0_15\lib\ct.s

ym(META-INF/sym/rt.jar/java/lang/StringBuffer.class)]]

[已写入RegularFileObject[RandomTest.class]]

[共 530 毫秒]

从这个结果可以看出, java compiler 至少做了 1.分析 java 源文件 2.搜索源文件路径 3.搜索类文件路径 4.加载依赖的类 5.把结果写入 .class 文件

其中 javac 主要的作用就是把 java 源文件编译为 class 文件,class 文件中主要有三部分,一是 class 常量池,二是 java 类的各种属性结构,三是 method info 结构中的code[] 中保存的字节码指令序列,这三部分中,指令序列主要对应了 java 源文件中的方法中的语句;各种属性结构,主要对应了类中各种标识符的签名标签、属性修饰等,比如 字段、方法、接口、类 的各种修饰符,还有 method 签名的结构,比如 返回值、参数列表中的参数类型;常量池主要就是保存类的定义中涉及到的常量数据,比如 int long float double utf-8,其中所有涉及到的标识符、字符串最终就保存为 utf-8 形式。jvm 在执行这个 class 文件中的函数的时候,很重要的工作就是解析这些符号引用。

如有转载请标明原文链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值