Javac源码简单分析之Javac简单介绍

简介: <h3>一、简单介绍</h3> javac 是java语言编程编译器。javac工具读由java语言编写的类和接口的定义,并将它们编译成字节代码的class文件。<br><br><br><h3>二、源码获取</h3> OpenJDK6源码:<a target="_blank" href="http://download.java.net/openjdk/jdk6/">http://do

一、简单介绍

javac 是java语言编程编译器。javac工具读由java语言编写的类和接口的定义,并将它们编译成字节代码的class文件。


二、源码获取

OpenJDK6源码: http://download.java.net/openjdk/jdk6/
Javac的源码就在OpenJDK源码里面。
或者在CSDN下载: http://download.csdn.net/detail/p_3er/7383741


三、Javac的包

Javac的公共入口点是com.sun.tools.javac.main.Main。在com.sun.tools.javac下面的包的组织如下:


com.sun.tools.javac.code
描述java语言内在语义的类 – 类型types, 符号symbols,等.


com.sun.tools.javac.comp
用语义细节来分析和标注语法分析树, 比如确定标识符identifiers的类型和符号。


com.sun.tools.javac.jvm
用于读写class files的后端类.


com.sun.tools.javac.main
顶层的驱动类. 编译器的标准入口点是 com.sun.tools.javac.main.Main (more...)


com.sun.tools.javac.parser
读取java源文件并创建语法分析树的类


com.sun.tools.javac.resources
编译器产生的资源文件. 其中两个是由"属性文件编译器"从属性源文件中生成的。Compiler.properties and javac.properties; 第三个是在构建的时候自动产生的,保存版本信息.version.properties


com.sun.tools.javac.tree
表示java语言的被标注的语法树的类. 最顶层的节点Tree.TopLevel表示源文件的内容(应该是JCTree.TopLevel)


com.sun.tools.javac.util
工具类, 提供调试、文件系统存取和javac的集合类的支持.
目录
相关文章
|
4月前
|
Java 编译器
Java 编译器(javac)
Java 编译器(javac)
38 1
|
5月前
|
Java Unix 编译器
javac 命令-详解
javac 命令-详解
83 0
|
5月前
|
Java Maven
JDK8使用JavaPackager打包项目生成.exe可执行文件
JDK8使用JavaPackager打包项目生成.exe可执行文件
|
5月前
|
Java Linux Android开发
坚持60s(jar反编译)
坚持60s(jar反编译)
29 0
|
Java Maven
java普通项目打包成exe可执行文件
java普通项目打包成exe可执行文件
332 0
java普通项目打包成exe可执行文件
|
11月前
|
Java Android开发
Java程序打包成exe可执行程序
Java程序打包成exe可执行程序
129 0
|
Java 计算机视觉
JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad)
JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad)
204 0
JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad)
|
Oracle Java 关系型数据库
javac 和 java 命令
javac 和 java 命令
142 0
javac 和 java 命令
|
Java 开发工具
【JDK】输入命令Javac报错详解
输入命令Javac报错详解
219 0
【JDK】输入命令Javac报错详解
|
Arthas 自然语言处理 前端开发
Java编译和反编译那些事
挺久没更文章了,之前有一个月在面试,后来写了篇面经,有一些朋友找我交流问题,所以一直没时间写技术文章,估计以后更新文章频率不会那么高了,不过还是会定期分享的,我的目的还是希望我的每篇文章大家都能学到点东西基本概念我们可以通过javac命令将Java程序的源代码编译成Java字节码,即我们常说的class文件,这是我们通常意义上理解的编译但是,字节码并不是机器语言,要想让机器能够执行,还需要把字节码翻译成机器指令,这个过程是通过解释器实现的,叫解释执行在不同的虚拟机实现中,执行引擎在执行字节码的时候,通常会有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,也可能两