Java是编译性语言还是解释性语言

Java语言同时具备编译和解释特性,其字节码通过JVM解释器逐行执行。JIT编译器对热点代码进行即时编译,提升效率。AOT在JDK9中引入,允许直接将字节码编译为机器码,减少JIT预热。JVM还会根据执行情况优化代码,预热过程能提升系统性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结论:Java 即是编译性语言也是解释性语言。
编译:将 *.java 文件编译成 *.class 字节码文件。
解释:JVM 加载 *.class 字节码文件,然后通过解释器逐行解释为机器码执行。
JIT:解释器逐行解释并运行效率相对较低,JVM 可以将热点代码编译成机器码并保存下来,下次调用直接调用执行机器码,在一定程度上提高运行效率。
:常见的 HotSpot 采用惰性评估的方式,在某些代码在某段时间内达到一定的执行次数后才会及时编译为机器码。JVM 也会根据每次被执行的情况收集信息并做出一些优化,所以有些代码执行的次数越多,它运行的速度越快,所以在某些系统上线后需要通过预热来提高代码的运行效率。JDK 9 还引入一种新的编译模式 AOT(Ahead of Time Compilation) 它是直接将字节码编译成机器码,避免了 JIT 预热等各方面的开销。JDK 支持分层编译和 AOT 协作使用,但是 AOT 编译器的编译质量肯定是比不上 JIT 编译器的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值