写在前面

本文隶属于专栏《100个问题搞定Java虚拟机》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和文献引用请见100个问题搞定Java虚拟机

解答

按照《深入理解Java虚拟机:JVM高级特性与最佳实践第3版》的说法,Java 语言的编译器可以分为 3 类:

前端编译器

作用

把 java 文件转变成 class 文件

举例

JDK 的 Javac、 Eclipse JDT中的增量式编译器(ECJ)

JIT编译器(Just In Time Compiler)

作用

把字节码转变成机器码

举例

Hotspot VM的C1、C2编译器,Graal 编译器

AOT编译器

作用

直接把程序编译成与目标机器指令集相关的二进制代码

举例

JDK 的 Jaotc、GNU Compiler for the Java(GCJ)、 Excelsior JET

对比

前端编译器对代码的运行效率几乎没有任何优化措施。

虚拟机设计团队把对性能的优化集中到了后端的即时编译器中,这样可以让那些不是由 Javac产生的Cass文件(如 Scala、 Groovy等语言的 Class 文件)也同样能享受到编译器优化所带来的好处。

相当多新生的Java语法特性,都是靠编译器的“语法糖”来实现,而不是依赖虚拟机的底层改进来支持,可以说,Java中即时编译器在运行期的优化过程对于程序运行来说更重要,

而前端编译器在编译期的优化过程对于程序编码来说关系更加密切。

关于 Java 的语法糖请参考我的这篇博客——全网最全的 Java 语法糖指南

Java 中的编译器分为哪些类型?相关推荐

  1. 【Java网络编程与IO流】Java中IO流分为几种?字符流、字节流、缓冲流、输入流、输出流、节点流、处理流

    Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...

  2. Java中String是个什么类型?

    Java中String是个什么类型 Java中的八大基本数据类型 String 是个什么类型 String常见的方法 Java中的八大基本数据类型 面试官的套路 Java中的数据类型分为四类 1.整型 ...

  3. 【Groovy】Groovy 方法调用 ( Java 中函数参数是接口类型 | 函数参数是接口类型 可以 直接传递闭包 )

    文章目录 一.Java 中函数参数是接口类型 二.函数参数是接口类型 可以 直接传递闭包 三.完整代码示例 一.Java 中函数参数是接口类型 在 Android 中经常使用如下形式的接口 : 定义一 ...

  4. Java中的8种原始类型

    几年前,当我开始编辑Java Basics系列时,我认为将一些非常详细的信息拉到自己的帖子中是很有意义的. 这样,初学者的内容就更容易消化. 首先,我要介绍有关Java的8种原始类型的所有信息. Ja ...

  5. java整型转换为数组_基于java中byte数组与int类型的转换(两种方法)

    java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...

  6. Java中的两种异常类型及其区别?

    Java中的两种异常类型及其区别? 参考文章: (1)Java中的两种异常类型及其区别? (2)https://www.cnblogs.com/zxfei/p/11182730.html (3)htt ...

  7. <随笔03>Java中的两种异常类型

    <随笔03>Java中的两种异常类型 参考文章: (1)<随笔03>Java中的两种异常类型 (2)https://www.cnblogs.com/newlyfly/p/744 ...

  8. java中关于输出三角形图案类型题目的思路

    java中关于输出三角形图案类型题目的思路 初学java,在学到循环相关的知识的时候,老师总会拿出一些图形打印相关的题目来让大家来练习,其中比较经典的就是如下类似题目. 这种图形类的题目,只要能做出其 ...

  9. JAVA中的八种基本类型

    一.JAVA中的八种基本类型 1.数字类型(6种)   ①byte:     占的位数:byte数据类型占八位: 最小值为:-128(-2^7): 最大值为:127(2^7-1): 默认值为:0: 作 ...

最新文章

  1. Dockerfile镜像的制作
  2. QT 5.9.8在ubuntu16.04下安装配置
  3. 微博:吃饭砸锅的艺术
  4. 服务器启动文件,[Zookeeper] 服务端之单机版服务器启动
  5. 关于 Math.pow 的一个坑
  6. scrapy分布式爬虫爬取淘车网
  7. 智能驾驶板块_智能驾驶股票有哪些?智能驾驶股票一览
  8. python变量回收_Python变量的引用、拷贝和回收机制
  9. 零基础学UI设计,正确的学习方法讲解!
  10. 转载一朋友的qq空间,感觉都是至理名言啊!
  11. stm32 hal 模拟i2c
  12. 易企秀 伪静态 linux,最新仿易企秀V15.1完整版开源版源码分享,修复采集功能,新增同行站模板采集功能等等...
  13. C语言 系统调用操作内核信号集
  14. 【美团】职级、薪酬、绩效全认知
  15. 平价好用的真无线蓝牙耳机,这五款入门首选超划算
  16. 极度的坦诚就是无坚不摧
  17. 用Google搜索本地硬盘
  18. 学习虚幻引擎UMG的基础
  19. 老照片修复_使用条款
  20. TCP滑动窗口机制(重要)

热门文章

  1. python中config命令_Python config.config方法代码示例
  2. Android游戏-拼图游戏(Android studio)
  3. OSI参考模型产生背景
  4. 一个不务正业的前端攻城狮
  5. [Python3] Matplotlib —— (三) 简易散点图
  6. KVM安装和连接VNC
  7. 【2023最新】我把面试问烂了的Web安全集合总结了一下(带答案)建议收藏
  8. 失恋了,开始写博客吧
  9. IT之禅语—编程也是需要悟的
  10. FPGA实战(五)时钟IP核(MMCM PLL)