Java程序运行机制和JVM的理解

Java语言编写的程序需要经过编译,但是这个编译步骤不会生成特定的平台的机器码,而是生成一种与平台无关的字节码(也就是*.class文件)。当然,这种字节码不是可执行的,所以必须要使用java解释器来执行。所以,Java程序必须先通过编译,再通过解释,才可执行。

因此,可以认为:java既是编译型语言,又是解释型语言。或者说,java不是纯粹的编译型语言,又不是纯粹的解释型语言。


而Java中负责编译的是Java虚拟机,即JVM(Java Virtual Machine)。

JVM是可执行Java字节码文件的虚拟计算机。所有平台上的JVM向编译器提供相同的编程接口,而编译器只需要面向虚拟机,生成虚拟机能理解的代码,即生成的是与平台无关的字节码,这些字节码不会面向任何具体平台,然后由面向的虚拟机来解释执行(在一些虚拟机的实现中,还会将虚拟机代码转换成特定系统的机器码执行,从而提高执行效率)。

所以不同平台上的JVM都是不同的,即适应不同平台的接口是互不相同的,但是它们都为相同的Java字节码程序提供了相同的接口,使得相同的字节码程序可以在不同的平台上运行。


实际上,JVM是一个抽象的计算机,和实际的计算机一样,它具有指令集,并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。




猜你喜欢

转载自blog.csdn.net/dyd850804/article/details/80550865