官术网_书友最值得收藏!

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程序

主站蜘蛛池模板: 泊头市| 基隆市| 昂仁县| 合阳县| 张家口市| 子长县| 鹤峰县| 禄丰县| 岑溪市| 中江县| 蒙自县| 北票市| 依安县| 石城县| 海宁市| 甘泉县| 朝阳县| 利津县| 古田县| 墨玉县| 苏尼特左旗| 孟津县| 齐齐哈尔市| 鄂托克前旗| 格尔木市| 石阡县| 白城市| 霍邱县| 织金县| 彭水| 凯里市| 临江市| 屯门区| 邹城市| 南安市| 容城县| 桐城市| 武胜县| 丰原市| 建昌县| 大余县|