java文件编译过程总结

1.为什么需要编译?--存在的理由

    简单的说,Java文件的编译就相当于人类的翻译,只不过是将人容易理解的Java语言翻译成虚拟机能够读懂的字节码(语言)。

   翻译实现的方式有两种:(1)直接翻译成机器能够执行的指令,例如C语言,好处是效率高,缺点是移植性差 (2)另外一种选择就是引入一个中间层,也就是字节码方式,固定了java源文件-->字节码这一过程,减轻了程序员的工作;而对于字节码-->不同平台的执行,则交给专业的平台或者提供商来实现。也就是java的“一次编写,到处运行”的优点是从程序员的角度来看的。

2.编译的过程

  回忆大学的编译原理课程,基本上分为:词法分析-->语法分析-->语意分析-->代码生成 这几个阶段。

其中:

  (1)词法分析:将将java源文件从头到尾扫描,将原文件的每个组成的词汇识别成指定的身份,不会有任何遗漏(//,和/** **/注释会被忽略),识别的依据就是java语言的规范,比如java源文件以package包名开始,然后是import语句...。

  (2)语法分析:词法分析相当于将java文件识别成一个一个单词,语法分析相当于将单词组成句子,结果是一个语法树。

  (3)语意分析:

  (4)代码生成:java虚拟机的执行是基于栈操作的。

3.编译过程用到的模式:观察者模式

    适用的情况:多个观察者都对某一对象的状态变化感兴趣,即一对多的情况。目标对象中有一个观察者列表,当目标状态发生变化时,就会遍历观察者列表,调用定义的接口方法来通知每个注册的观察者;而观察者会实现定义的接口方法,定义自己特定的处理流程。--java编译过程源代码没有看,应该属于观察者模式变化版吧。

   java包中也提供了观察者模式的实现。

  说明:以上内容只是自己回忆总结使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值