前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java解释器虚拟机-【Java解释器和编译器】解释器和编译器的深入理解

java解释器虚拟机-【Java解释器和编译器】解释器和编译器的深入理解

作者头像
囍楽云
发布2022-12-26 15:53:45
5010
发布2022-12-26 15:53:45
举报
文章被收录于专栏:囍楽云博客

  作为一个看过JVM虚拟机的小白,不懂解释器和编译器之间的区别的,那就是糗大了~

  1 参考文献 深入理解JVM虚拟机 2 简单地区别解释器和编译器

  JVM:Java字节码(Java )在上面可以直接运行,是JVM平台无关的基础。JVM把每一条要执行的字节码交给解释器,翻译成对应的机器码,然后由解释器执行。JVM解释执行字节码文件就是JVM操作Java解释器进行解释执行字节码文件的过程。

  Java编译器:将Java源文件(.java文件)编译成字节码文件(.class文件,是特殊的二进制文件java解释器虚拟机,二进制字节码文件),这种字节码就是JVM的“机器语言”。javac.exe可以简单看成是Java编译器。

  Java解释器:是JVM的一部分。Java解释器用来解释执行Java编译器编译后的程序。java.exe可以简单看成是Java解释器。

  3 深入了解下Java中的编译器

  JVM中,把Java编译过程分为两个过程,分别是前端编译(.java文件转换成.class文件)和后端编译(JIT编译器对应.class文件转换成机器码文件)

  先说前端编译过程,也就是Java中javac.exe文件所做的事情java解释器虚拟机,主要是三件事

  1. 解析与填充符号表

  1.1 词法分析(代码字符流转变为标记集合Token)

  1.2 语法分析(根据Token序列生成语法树)

  1.3 填充符号表

  2. 插入式注解处理器的注解过程

  2.1 注解处理API对语法树进行修改

  3. 分析和字节码的生成

  3.1 标注检查–变量使用前是否声明,=号左右是否匹配等,常量折叠(int a = 1 + 3,字节码中a=3)

  3.2 数据及控制流分析–上下文逻辑验证,如,局部变量是否有赋值,方法每条路径是否都有返回值…

  3.3 解语法糖–Java中常见语法糖,自动装箱拆箱,泛型,变长数组等。

  3.4 生成字节码

  再说说,后端编译器–JIT编译器,负责将经常使用的方法或者代码块编译成机器码,提高效率。

  下图是Java中解释器和编译器的交互(JVM中JIT不是必需的,可以么有),关于具体的优化技术,自己也不是看得很清楚。有机会再写吧。

本文共 582 个字数,平均阅读时长 ≈ 2分钟

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档