Java的运行机制
使用Java语言进行程序设计时,不仅要了解Java语言的特点,还需要了解Java程序的运行机制。Java程序运行时,必须经过编译和运行两个步骤。首先将后缀名为.java的源文件进行编译,生成后缀名为.class的字节码文件,然后Java虚拟机将字节码文件进行解释执行,并将结果显示出来。
为了让初学者能更好地理解Java程序的运行过程,接下来以文件1-1为例,通过一张图来详细的分析程序的执行过程,如图1所示。
图1 Java程序的编译和执行过程
图1中的具体执行步骤分析如下:
① 编写一个Java源文件HelloWorld.java。
② 使用“javac HelloWorld.java”命令开启Java编译器并进行编译。
③ 编译结束后,会自动生成一个HelloWorld.class的字节码文件。
④ 使用“java HelloWorld”命令启动Java虚拟机运行程序,Java虚拟机首先将编译好的字节码文件加载到内存,这个过程被称为类加载,它是由类加载器完成的,然后虚拟机会通过Java解析器对加载到内存中的Java类进行解析执行。
⑤ 执行后会生成计算机可以识别的机器码文件。
⑥ 机器码文件在计算机运行并显示结果。
通过上面的分析不难发现,Java程序是由Java虚拟机负责解释执行的,而并非操作系统。这样做的好处是可以实现Java程序的跨平台。也就是说,在不同的操作系统上,可以运行相同的Java程序,各操作系统中,只需安装不同版本的Java虚拟机即可,下面以Windows、Linux、MacOS操作系统为例,如图2所示。
图2 不同版本的虚拟机
从图2可以看出,不同的操作系统需要使用不同版本的Java虚拟机,这种方式使得Java语言具有“一次编写,到处运行(write once,run anywhere)”的特性,有效地解决了程序设计语言在不同操作系统编译时产生不同机器代码的问题,大大降低了程序开发和维护的成本。
需要注意的是,Java程序通过Java虚拟机可以实现跨平台特性,但Java虚拟机并不是跨平台的。不同操作系统上的Java虚拟机是不同的,即Windows平台上的Java虚拟机不能用在Linux平台上使用,反之亦然。