![Java程序设计实战案例教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/815/53286815/b_53286815.jpg)
上QQ阅读APP看书,第一时间看更新
1.4 Java程序的运行机制
运行Java程序时,需要了解Java程序的运行机制。程序运行时,要经过编译和解释运行。首先编译扩展名为.java的源文件,生成扩展名为.class的字节码文件。然后,JVM解释运行字节码。最后,显示运行结果。
1.JDK、JRE、JVM三者之间的关系
JDK是整个Java开发的核心,它集成了JRE和一些工具,例如javac.exe、java.exe、jar.exe等。
JRE主要包含两个部分:JVM的标准实现和Java的一些基本类库。
JVM只执行.class类型的文件,识别.class文件中的字节码指令并调用操作系统上的API完成操作。所以JVM是Java能够跨平台的关键所在。
JDK、JRE、JVM三者之间的关系如图1-18所示。
2.JVM加载.class文件的原理和步骤
JVM加载.class文件的原理如图1-19所示。
![](https://epubservercos.yuewen.com/78A8EE/31751393303470506/epubprivate/OEBPS/Images/figure-0017-0018.jpg?sign=1739578583-FLwfWif88RMu1KUIDt1LhmrvFhWAnG1a-0-4a2ccf9d7dfce63f5a362c22ac29c1d4)
图1-18 JDK、JRE、JVM三者之间的关系
![](https://epubservercos.yuewen.com/78A8EE/31751393303470506/epubprivate/OEBPS/Images/figure-0017-0019.jpg?sign=1739578583-Yz9N7PQegUnOm9N2ONqIAV0pbcIFVRnx-0-9c7de6e30df6994419293981df6d77d9)
图1-19 JVM加载.class文件的原理
其加载步骤如下。
第一步:使用记事本编写源程序。Java源程序的扩展名是.java。
第二步:编译源程序。源程序编写完成后,需要编译器把源文件编译为与所使用平台无关的.class文件,也就是字节码文件。
第三步:在系统平台中运行.class文件,即可获得运行结果。
3.Java的跨平台实现
如图1-20所示,编译之后字节码文件可以在多个平台上运行,因为JVM的存在,平台能够读取并处理字节码文件。这就体现了 Java 程序“一次编写,随处运行”的特点,可以有效解决程序语言在不同操作系统编译时产生不同机器代码的问题,大大降低了程序开发和维护的成本。Java程序通过JVM可以实现跨平台,但是JVM并不是跨平台的,不同操作系统中JVM也是不相同的。
![](https://epubservercos.yuewen.com/78A8EE/31751393303470506/epubprivate/OEBPS/Images/figure-0017-0020.jpg?sign=1739578583-RX3ONTaimGbnhnFBE7IzLFZKVmyhvAA0-0-63a28f0a5ba24a37f748c6f1b9e5b355)
图1-20 不同版本的JVM