2022-03-24
Javac 编译器的任务就是讲java语言规范转化成Java虚拟机语言规范,完成 “翻译工作”
什么是Javac
Javac 是一种编译器,能将一种语言规范转化成另外一种语言规范。通常编译器都是将便于人理解的语言规范转化成机器容易理解的语言规范。如c,c++或者汇编语言都是讲远吗直接编译成目标机器码,这个目标机器码是CPU直接执行的指令集合。这些指令集合也就是底曾的一种语言规范,机器能够直接识别这种识别这种语言规范,但是人不可能直接去写目标机器码。虽然这种机器码执行起来非常搞笑,但是对人太不友好了, 开发这个代码的成本往往远高于剩下的机器的执行成本。
从某种意义上来说,有了编译器才有了程序语言的繁荣,因为片一起是人类和机器沟通的一个纽带。那么回过头来,javac的编译器也是将Java这种对人非常友好的编程语言编译成对所有机器都非常友好的语言。注意,这种语言不是针对某个机器的,甚至包括不同种类,不同平台的机器。如何系哦啊出不同种类,不同机器之间的差别,这个任务就由JVM来完成,而Javac的任务就是将Java源代码语言先转化成JVM能够识别的一种语言,然后由JVM将JVM语言再转化成当前这个机器能够识别的机器语言。所以这样看来,Java语言向开发者屏蔽了很多与木鳖机器相关的细节,使得Java语言的执行和平台无关,这也就成就了java语言的繁荣。
如下图所示,javac的任务就是将java源码编译成Java字节码,也就是JVM能够识别的二进制码。从表面上看就是.java文件转成.class文件,而实际上是将Java的源代码转化成了一连串二进制数字,这些二进制数字是有格式的,只有JVM能够正确识别它们到底表达了什么意思。
Javac编译器的基本结构
回忆一下,如何才能编译程序呢?
1.词法分析。在读取源码时候,一个字节为一节读进来,找出这些字节中有哪些是我们规定的语法关键词,如if else for while 等,要识别哪些if是合法的关键词,哪些不是,这个步骤就是词法分析过程。
2.语法分析。检查这些关键词组合在一起是不是符合java语言规范,如在if的后面是不是紧跟着一个布尔判断表达式。与英语中,句子要有主谓宾一样,都有才算语法正确。
3.语义分析。如果通过语法分析,但是语义是否正确呢?语义分析的主要工作是把一些难懂的,复杂的语法转化为更加简洁的语法,江浙步骤对应到我们人类的语言中,就是讲难难懂的文言文转化为大家都能懂得白话文,或者注解一下一些成语,便于人们更好滴理解。
语义分析的结果就是讲复杂的语法转化成最贱的语法,对应到java中,如将foreach转成for虚幻结构,还有注解等,最后形成一个注解过后的抽象语法树,这棵语法树更接近目标语言的语法规则。
4.最后,通过字节码生成器生产字节码,根据经过注解的抽象语法树生产字节码,也就是讲一个数据结构转化为另一个数据结构,就像将所有中文词语翻译成英文单词后,按照英文语法组装成英文句子。
Javac 的各个模块完成了将Java源代码转化成Java字节码的任务,所以javac主要就有4个模块 分别是词法分析器、语法分析器、语义分析器和代码生成器。
冲呀饼干人王国游戏下载v2.1.1 安卓版
经营养成 1.79G
下载尘白禁区手游官方版下载v2.4.0.98 安卓版
射击枪战 737.6M
下载合金弹头觉醒手游正版下载v1.15.0 官方安卓版
射击枪战 1.80G
下载qq飞车手游腾讯游戏下载v1.47.0.60405 安卓最新版
赛车竞速 1.99G
下载qq飞车手机版官方正版下载v1.47.0.60405 安卓版
赛车竞速 1.99G
下载腾讯游戏全民冠军足球最新版下载v1.0.3250 安卓版
体育运动 1.69G
下载剑侠世界3腾讯版下载v1.6.23488 安卓版
角色扮演 1.98G
下载世界启元手游下载v1.68.9807 安卓版
策略塔防 1.85G
下载海岛奇兵百度版最新版下载v54.2.1 安卓版
下载
传奇世界盛大正版手游下载v7.11.3.6 安卓版
下载
qq华夏手游官方最新版下载v5.9.0 安卓版
下载
网易永劫无间手游测试服下载v1.0.291536 安卓试玩版
下载
三国志幻想大陆官方正版下载v5.4.1 安卓最新版
下载
谁是卧底online苹果版下载v5.17.41 iphone版
下载
宝宝学汉字苹果app下载v9.80.2032 iphone版
下载
宝宝巴士电视版下载v8.7.30 安卓最新版
下载