打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Java三种编译方式: 前端编译 JIT编译 AOT编译




21套精品Java架构师高并发高性能高可用分布式集群电商缓存性能调优设计项目教程

39阶段精品云计算大数据项目实战视频教程

互联网技术(java框架、分布式、集群)干货视频大全

200本经典编程相关书籍下载

程序员如何制作高质量的简历【视频 真实简历】


java程序代码需要编译后才能在虚拟机中运行,编译涉及到非常多的知识层面:编译原理、语言规范、虚拟机规范、本地机器码优化等;了解编译过程有利于了解整个Java运行机制,不仅可以使得我们编写出更优秀的代码,而且还可以使得在JVM调优时更得心应手。

       下面我们先来看下Java体系中的三种编译方式:前端编译、即时编译(JIT编译)、静态提前编译(AOT编译),先来了解它们各有什么优点和缺点,再来看看主流的前端编译 JIT编译方式的运作过程。

1、前端编译

    把Java源码文件(.java)编译成Class文件(.class)的过程;

    也即把满足Java语言规范的程序转化为满足JVM规范所要求格式的能;

优点:

a.这阶段的优化是指程序编码方面的;

b.许多Java语法新特性('语法糖':泛型、内部类等等),是靠前端编译器实现的,而不是依赖虚拟机;

c.编译成的Class文件可以直接给JVM解释器解释执行,省去编译时间,加快启动速度;

缺点:

1.对代码运行效率几乎没有任何优化措施;

2.解释执行效率较低,所以需要结合下面的JIT编译;    

3.前端编译器:Oracle javac、Eclipse JDT中的增量式编译器(ECJ)等;

2、后端编译/即时(JIT)编译

      通过Java虚拟机(JVM)内置的即时编译器(Just In Time Compiler,JIT编译器);在运行时把Class文件字节码编译成本地机器码的过程;            

优点:

a.通过在运行时收集监控信息,把'热点代码'(Hot Spot Code)编译成与本地平台相关的机器码,并进行各种层次的优化;

b.可以大大提高执行效率;

缺点:

a.收集监控信息影响程序运行;

b.编译过程占用程序运行时间(如使得启动速度变慢);

c.编译机器码占用内存;

d.JIT编译器:HotSpot虚拟机的C1、C2编译器等;

 另外,JIT编译速度及编译结果的优劣,是衡量一个JVM性能的很重要指标;所以对程序运行性能优化集中到这个阶段;也就是说可以对这个阶段进行JVM调优;

3、静态提前编译(Ahead Of Time,AOT编译)

       程序运行前,直接把Java源码文件(.java)编译成本地机器码的过程;

优点:

a.编译不占用运行时间,可以做一些较耗时的优化,并可加快程序启动;

b.把编译的本地机器码保存磁盘,不占用内存,并可多次使用;

缺点:

a.因为Java语言的动态性(如反射)带来了额外的复杂性,影响了静态编译代码的质量;

b.一般静态编译不如JIT编译的质量,这种方式用得比较少;

c.静态提前编译器(AOT编译器):JAOTC、GCJ、Excelsior JET、ART (Android Runtime)等;

4、前端编译 JIT编译

到这里,我们知道目前Java体系中主要还是采用前端编译 JIT编译的方式,如JDK中的HotSpot虚拟机。

前端编译 JIT编译方式的运作过程大体如下:

1、首先通过前端编译把符合Java语言规范的程序代码转化为满足JVM规范所要求Class格式;

2、然后程序启动时Class格式文件发挥作用,解释执行,省去编译时间,加快启动速度;

3、针对Class解释执行效率低的问题,在运行中收集性能监控信息,得知'热点代码';

4、JIT逐渐发挥作用,把越来越多的热点代码'编译优化成本地代码,提高执行效率;


视频资源下载

21套精品Java架构师高并发高性能高可用分布式集群教程(4000G)

39阶段精品云计算大数据项目实战视频教程

200本经典编程相关书籍下载

互联网技术(java框架、分布式、集群)干货视频大全

程序员如何制作高质量的简历【视频 真实简历】

 今日头条号:搜索 'JavaLeader'  (欢迎大家关注支持,头条更精彩)

 java资源分享总群(六) :238600498       java招聘信息共享群:489895481

 java微信技术群:微信搜索1257572500加好友,拉入群内。

专注互联网热点信息,java干货,行业最新技术视频分享,我们的宗旨就是做全网最全最大的java视频教免费平台。我们有适合不同阶段人群的干货。我们的平台聚焦了几万的java高级程序员和架构师。欢迎长按关注

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
解读 | 华为方舟编译器是如何实现 Android 性能革命的? | 雷锋网
JVM 专题十五:执行引擎
实时 Java,第 2 部分: 比较编译技术
java虚拟机JVM执行引擎(工作过程、JIT等)
谁偷了我的热更新?Mono,JIT,IOS
简析.NET Core 构成体系
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服