Java源文件的编译运行

java虚拟机(JVM,java virtual machine)负责java源文件的解释执行或者编译执行。

  1. 首先,静态编译器将java源文件(.java文件)编译成字节码(.class文件),java源文件->词法解析->语法解析->语法分析->生成字节码->字节码;

  2. 字节码文件需要被“类加载过程”加载到JVM环境后,才可以执行,执行方式有下面几种:
    (1)解释执行:解释器在运行时将代码逐行翻译成机器码,交给机器执行;
    (2)JIT(Just In Time,即时编译器)编译执行:以方法为单位,动态的将经常运行的代码编译成本地平台相关的机器码,直接交给CPU执行;
    (3)解释执行和JIT编译执行混合方式执行(主流的JVM默认执行方式);
    (4)AOP编译器:jdk9提供的直接将所有的代码编译成机器码执行。

  3. 混合执行的优势:解释器在启动的时候先进行解释执行,先不编译,省去编译的时间,随着时间的推进,JVM通过热点代码的统计分析,识别高频的方法调用、循环体、公共模块等,JIT将热点代码转化为机器码,直接交给CPU执行,提高执行效率。

  4. 解释执行和编译执行的区别:打个比方,解释执行类似于同生传译,编译执行类似于放录音,解释执行解释一行执行一行,编译执行以方法为单位,转换为机器码,然后整块传给CPU执行。

本文提到的“类加载过程”,将另开一个笔记。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值