Java 中的编译器分为哪些类型?
写在前面
本文隶属于专栏《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 中的编译器分为哪些类型?相关推荐
- 【Java网络编程与IO流】Java中IO流分为几种?字符流、字节流、缓冲流、输入流、输出流、节点流、处理流
Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...
- Java中String是个什么类型?
Java中String是个什么类型 Java中的八大基本数据类型 String 是个什么类型 String常见的方法 Java中的八大基本数据类型 面试官的套路 Java中的数据类型分为四类 1.整型 ...
- 【Groovy】Groovy 方法调用 ( Java 中函数参数是接口类型 | 函数参数是接口类型 可以 直接传递闭包 )
文章目录 一.Java 中函数参数是接口类型 二.函数参数是接口类型 可以 直接传递闭包 三.完整代码示例 一.Java 中函数参数是接口类型 在 Android 中经常使用如下形式的接口 : 定义一 ...
- Java中的8种原始类型
几年前,当我开始编辑Java Basics系列时,我认为将一些非常详细的信息拉到自己的帖子中是很有意义的. 这样,初学者的内容就更容易消化. 首先,我要介绍有关Java的8种原始类型的所有信息. Ja ...
- java整型转换为数组_基于java中byte数组与int类型的转换(两种方法)
java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...
- Java中的两种异常类型及其区别?
Java中的两种异常类型及其区别? 参考文章: (1)Java中的两种异常类型及其区别? (2)https://www.cnblogs.com/zxfei/p/11182730.html (3)htt ...
- <随笔03>Java中的两种异常类型
<随笔03>Java中的两种异常类型 参考文章: (1)<随笔03>Java中的两种异常类型 (2)https://www.cnblogs.com/newlyfly/p/744 ...
- java中关于输出三角形图案类型题目的思路
java中关于输出三角形图案类型题目的思路 初学java,在学到循环相关的知识的时候,老师总会拿出一些图形打印相关的题目来让大家来练习,其中比较经典的就是如下类似题目. 这种图形类的题目,只要能做出其 ...
- JAVA中的八种基本类型
一.JAVA中的八种基本类型 1.数字类型(6种) ①byte: 占的位数:byte数据类型占八位: 最小值为:-128(-2^7): 最大值为:127(2^7-1): 默认值为:0: 作 ...
最新文章
- Dockerfile镜像的制作
- QT 5.9.8在ubuntu16.04下安装配置
- 微博:吃饭砸锅的艺术
- 服务器启动文件,[Zookeeper] 服务端之单机版服务器启动
- 关于 Math.pow 的一个坑
- scrapy分布式爬虫爬取淘车网
- 智能驾驶板块_智能驾驶股票有哪些?智能驾驶股票一览
- python变量回收_Python变量的引用、拷贝和回收机制
- 零基础学UI设计,正确的学习方法讲解!
- 转载一朋友的qq空间,感觉都是至理名言啊!
- stm32 hal 模拟i2c
- 易企秀 伪静态 linux,最新仿易企秀V15.1完整版开源版源码分享,修复采集功能,新增同行站模板采集功能等等...
- C语言 系统调用操作内核信号集
- 【美团】职级、薪酬、绩效全认知
- 平价好用的真无线蓝牙耳机,这五款入门首选超划算
- 极度的坦诚就是无坚不摧
- 用Google搜索本地硬盘
- 学习虚幻引擎UMG的基础
- 老照片修复_使用条款
- TCP滑动窗口机制(重要)