標籤:java jvm 運行 classloader 編譯器
電腦進階程式設計語言按其程式的執行方式可分為編譯型語言和解釋型語言。
編譯型語言是指使用專門的編譯器,針對特定作業系統將來源程式代碼一次性翻譯成電腦識別的機器指令。例如C、C++等都屬於編譯型語言。
解釋性語言是指使用專門的解譯器,將來源程式代碼逐條地解釋成特定平台的機器指令,解釋一句執行一句,類似於“同聲翻譯”。例如ASP、PHP等都屬於解釋型語言。
Java既不是編譯型語言也不是解釋型語言,它是編譯型和解釋型語言的結合體。首先採用通用的Java編譯器將Java來源程式編譯成與平台無關的位元組碼檔案(class檔案),然後由Java虛擬機器(JVM)對位元組碼檔案解釋執行。
編譯型語言和解釋型語言都有其各自的優缺點,比如編譯型語言會在程式第一次執行時將其全部編譯成與當前系統平台相對應的機器指令,在後續執行時,直接運行第一次編譯的結果,減少了編譯次數,提高了程式運行效率,但是程式在第一次編譯時間與系統平台相對應,因此移植性比較差。而解釋型語言在程式每次運行時都要將來源程式解釋成當前系統平台相對應的機器指令,因此麼一次運行都需要解釋並執行,運行效率較低,但是移植性強。
Java語言綜合了編譯型和解釋型語言的優點,採取了一種折中方案。即Java語言首次運行時採取編譯機制將Java來源程式編譯成Java位元組碼檔案,該位元組碼與系統平台無關,是介於原始碼和機器指令之間的一種狀態。在後續執行時,採取解釋機制將Java位元組碼解釋成與系統平台對應的機器指令。這樣既減少了編譯次數,又增強了程式的可移植性,因此被稱為“一次編譯,多處運行!”。
註:Java位元組碼具有平台無關性,可以在各種不同系統平台中運行,但是,需要有不同版本的Java虛擬機器,不同系統平台的Java運行環境其Java虛擬機器是不一樣的。
JVM定義
JVM(Java Virtual Machine)意思是Java虛擬機器。它是一個虛擬出來的電腦,可在實際的電腦上虛擬各種電腦功能。JVM有自己完善的硬體架構,例如處理器、堆棧和寄存器等,還具有相應的指令系統。
JVM作用
JVM是Java位元組碼執行的引擎,為Java程式的執行必要的執行,它還能最佳化Java位元組碼,使之轉換成效率更高的機器指令。程式員編寫的程式最終都要在JVM上執行,JVM中類的裝載是由類載入器(ClassLoader)和它的子類來實現的。ClassLoader是Java運行時一個重要的系統組件,負責在運行時尋找和裝入類檔案的類。
JVM屏蔽了與具體作業系統平台相關的資訊,從而實現了Java程式只需產生在JVM上啟動並執行位元組碼檔案(class檔案),就可以在多種平台上不加修改地運行。不同平台對應著不同的JVM,在執行位元組碼時,JVM負責將每一條要執行的位元組碼送給解譯器,解譯器再將其翻譯成特定平台環境的機器指令並執行。Java語言最重要的特點就是跨平台運行,使用JVM就是為了支援與作業系統無關,實現跨平台運行。
JVM工作原理
JVM在整個JDK中處於最底層,負責與作業系統的互動,用來屏蔽作業系統環境,提供一個完整的Java運行環境,因此也稱為虛擬計算機。作業系統裝入JVM是通過JDK中的java.exe來實現,主要通過以下幾個步驟完成。
1、 建立JVM裝載環境和配置。
2、 裝載jvm.dll。
3、 初始化jvm.dll。
4、 調用JNIEnv執行個體裝載並處理class類。
5、 運行Java程式。
JVM是Java運行環境的最核心部分,是運行Java程式的最基本環境,想瞭解Java運行機制需要對JVM的概念和運行機制有所瞭解。
【轉載使用,請註明出處:http://blog.csdn.net/mahoking】
Java語言的運行機制