Java是解释型还是编译型?JIT、HotSpot VM

本文探讨了Java作为编译型与解释型语言的双重特性,深入解析JIT(Just-In-Time)编译器如何提升Java运行效率,实现代码的即时编译与本地化优化。

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

编译:将代码转化为计算机可以执行的二进制指令。

编译型语言和解释型语言的定义。
定义
编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,可直接运行这个程序。
解释型语言:把做好的源程序翻译一句,然后执行一句,直至结束!
特点
编译型语言,执行速度快、效率高;依靠编译器、跨平台性差。
解释型语言,执行速度慢、效率低;依靠解释器、跨平台性好。 
举例:
编译型的语言包括:C、C++、Delphi、Pascal、Fortran
解释型的语言包括:Java、Basic、javascript

有人说Java是编译型语言,因为所有的Java代码都是要编译的,.java文件不经过编译就无法执行。 也有人说Java是解释型的,因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释型的。

对于C和C++,它们经过一次编译之后,可以由操作系统直接执行,所以它们是编译型语言。而Java不一样,它首先由编译器编译成.class(字节码)文件,然后在通过JVM从.class文件中读一行解释执行一行,虽然进行了编译,但是没有编译成机器可以直接执行的指令,所以它实质上是解释型的语言。也正是由于java对于多种不同的操作系统有不同的JVM,所以实现了真正意义上的跨平台。

(1)Java语言的编译-->解释-->运行过程


  (2)JVM

现在的JVM为了效率,都做了一些JIT优化。它会把.class的二进制代码编译为本地的代码直接运行,如hotspot VM。什么是HotSpot Vm?

那么什么是JIT?

简介:

在主流商用JVM(HotSpot、J9)中,Java程序一开始是通过解释器(Interpreter)进行解释执行的。当JVM发现某个方法或代码块运行特别频繁时,就会把这些代码认定为“热点代码(Hot Spot Code)”,然后JVM会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为:即时编译器(Just In Time Compiler,JIT)。在运行时JIT会把编译过来的机器码保存起来,运行时再遇到这类代码直接可以执行,而不是先解释后执行。JIT编译器是“动态编译器”的一种(运行时编译),相对的“静态编译器”则是指的比如:C/C++的编译器。

详细:

JIT详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值