- Java面向對象程序設計教程
- 張志斌
- 581字
- 2019-10-12 16:26:29
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程序
推薦閱讀
- Go Web編程
- Facebook Application Development with Graph API Cookbook
- Software Defined Networking with OpenFlow
- Effective C#:改善C#代碼的50個有效方法(原書第3版)
- JavaScript+jQuery網頁特效設計任務驅動教程(第2版)
- Vue.js 3.0源碼解析(微課視頻版)
- Scratch 3游戲與人工智能編程完全自學教程
- Visual C++串口通信技術詳解(第2版)
- Internet of Things with the Arduino Yún
- Scala程序員面試算法寶典
- Advanced Express Web Application Development
- HTML+CSS+JavaScript編程入門指南(全2冊)
- 單片機原理及應用技術
- 零基礎學C++(升級版)
- 官方 Scratch 3.0 編程趣味卡:讓孩子們愛上編程(全彩)