当前位置:首页 > 虚拟机 > 正文

java虚拟机的执行过程(java虚拟机的基本结构)

java的跨平台工作原理

首先,我们需要了解什么是跨平台。所谓跨平台,是指用JAVA编写的代码可以在任何操作系统平台上运行。

为什么跨平台是一个问题?由于每个操作系统平台支持的指令集不同,所以我们编写的代码编译后只能适用于一种平台,而在另一种平台上将不支持。JAVA完美解决了这个问题。JAVA是如何做到这一点的呢?上图中,我们可以看到JAVA代码的执行过程。

JAVA字节码->JVM解释执行

我们编写的JAVA源代码会被编译成字节码,然后由JVM虚拟机解释执行。我们可以看到,JVM虚拟机在跨平台过程中扮演着重要的角色。它解释并执行字节码。对于每个平台,都有一个JVM虚拟机,并且只有一份字节码副本。Windows虚拟机可以将字节码解释为可以在Windows平台上执行的指令并执行。LinuxJVM可以将字节码解释为可以在Linux平台上执行的指令并执行。他们运行的节码的字都是一样的。这允许跨平台。

简述JAVA程序的编辑编译和运行过程

第1步(编译):创建源文件后,程序将首先编译成.class文件。Java编译类时,如果依赖于该类的类还没有被编译过,编译器会先编译依赖的类,然后再引用它。否则,将直接引用。这有点像make。

如果Java编译器在指定目录下找不到.class文件或者依赖于该类的类的.java源文件,编译器会报“cantfindsymbol”错误。

第二步(运行):java类的运行过程大致可以分为两个过程:1.类加载2.类执行。需要注意的是,只有当程序第一次主动使用某个类时,JVM才会加载该类。也就是说,JVM一开始并不会把所有的程序类都加载到内存中,而是只在需要使用的时候才加载它们,而且只加载一次。

特别说明:Java类中所有的public和protected实例方法都使用动态绑定机制,所有私有方法、静态方法、构造函数和初始化方法都使用静态绑定机制。当使用动态绑定机制时,会使用方法表,但使用静态绑定时则不会。

补充信息:

Java的整个编译和运行过程是相当复杂的。本文通过一个简单的程序来简单说明一下整个过程。

Java代码编译:由Java源代码编译器完成;

Java字节码执行:由JVM执行引擎完成

Java程序主要有两个步骤从源文件创建到运行程序:

1.源文件被编译器编译成字节码(ByteCode)

2.字节码传输是由java机器解释运行的。由于Java程序必须由JVM编译解释运行,因此Java被称为“半解释型”语言。