
上QQ阅读APP看书,第一时间看更新
1.8 Java虚拟机与跨平台性
前面Java源代码经过编译,产生了字节码文件(Java编译后的.class文件称为字节码文件),但是该字节码文件并不是计算机能直接运行的二进制文件,需要使用JDK中的java命令来运行。实质上,Java是解释执行的高级语言,为了提升运行性能,Java解释器运行的是字节码文件中的代码。
目前市面上主流的计算机平台及很多移动设备平台,都有自己的Java解释器,Java解释器加上各自的Java类加载器以及校验器等各种组件,统一封装成了Java虚拟机(Java Virtual Machine,JVM)。
Java的字节码文件是重新编码、经过语法校验的,是一个能够被JVM识别并运行的二进制文件,同时该class文件与Java源文件的语句代码一一对应。一般来说,字节码文件可以通过反编译工具反编译成源代码文件,因此这些字节码文件又称中间字节码文件。
相同的Java字节码文件,可以在不同平台下的JVM中不加修改地运行,这就是Java语言的平台无关性,也就是Java的跨平台特性,如图1-15所示。
编译后的class文件在JVM中运行,不同的计算机平台拥有不同的JVM,比如Windows操作系统中拥有Windows平台下的JVM,UNIX平台拥有UNIX平台下的JVM,这些不同平台下的JVM可以运行相同class文件,因此经过编译的Java源程序可以运行在任何平台的JVM中,并且无须重新编译。这就是Java的平台无关性,即Java的跨平台性。在程序运行时需要java命令,该命令就是启动一个JVM实例来运行命令中的Java程序。
下面使用一幅图来进一步理解Java的跨平台性,如图1-16所示。

图1-15 JVM运行Java程序

图1-16 进一步理解Java程序