4.1 Javac是什么

  是一种编译器,将JAVA源代码(.java文件)语言先转化成JVM能够识别的一种语言(.class文件),然后由JVM将JVM语言再转化成当前机器可以识别的机器语言。

4.2 javac编译器的基本结构

  javac编译器的作用是将符合JAVA语言规范的源代码转化成符合JAVA虚拟机规范的JAVA字节码。

   词法分析:从源代码中找出一些规范的token流,就像在人类的语言中分辨出哪些是词语,标点符号,动词,名词等。

   语法分析:形成一个符合JAVA语言规范的抽象语法树。语法树是结构化的语法表达形式,把语言的词法用一个结构化的形式组织在一起。

  语义分析:虽然语法分析完了,但是语义是否正确呢?语义分析是把一些难懂的,复杂的语法转化成更加简单的语法。比如将foreach转成for循环结构,还有注解等。

  代码生成:通过字节码生成器生成字节码,生成的是复合JAVA虚拟机规范的字节码。

4.3 Javac工作原理分析

    4.3.1 词法分析器

  4.3.2 语法分析器

  4.3.3 语义分析器

  4.3.4 代码生成器

4.4 设计模式解析之访问模式

  4.4.1 访问者模式的结构

  4.4.2 Javac中访问者模式的实现

最新文章

  1. Windows批处理:自动部署常用软件(静默安装)
  2. jquery的curCSS方法
  3. ubtuntu 下安装Erlang R17
  4. lua 获取文件名和扩展名
  5. Trick
  6. 文件的搜寻【转vbird】
  7. swift 笔记 (十八) —— 扩展
  8. MyEclipse或Eclipse导出JavaDoc中文乱码问题解决
  9. Java进阶(四十六)简述ArrayList、Vector与LinkedList的异同点
  10. (90)Wangdao.com第二十三天_JavaScript CSS 操作
  11. 手把手:使用service principal连接Azure Media Service
  12. Kubenets 调试cronjob
  13. $.each()和$(selector).each()
  14. 配置ssh免密码登入
  15. 配置子目录Web.config使其消除继承,iis7.0设置路由
  16. hadoop MultipleInputs fails with ClassCastException (get fileName)
  17. VS2015预览版体验
  18. windows批处理初学贴出一些命令
  19. sqlmap的二次开发
  20. git 本地文件里内容 操作记录

热门文章

  1. InflateException:Bin file line #19:Error inflating class MyTextView
  2. 解决Oracle数据库IP地址改变创建数据库的问题
  3. 三十九 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本概念
  4. 解决loadrunner在脚本回放时长时间等待及在vugen中create controller scenario时报错的方法!超管用!!
  5. 【第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛-F】等式(因子个数)
  6. OLED取模笔记
  7. hdu4619
  8. LeetCode OJ:Lowest Common Ancestor of a Binary Tree(最近公共祖先)
  9. WAL日志文件名称格式详解
  10. 项目工程结构说明(Internal)