計算機高級編程語言按其程序的執行方式可分爲編譯型語言和解釋型語言。php
編譯型語言是指使用專門的編譯器,針對特定操做系統將源程序代碼一次性翻譯成計算機識別的機器指令。例如C、C++等都屬於編譯型語言。java
解釋性語言是指使用專門的解釋器,將源程序代碼逐條地解釋成特定平臺的機器指令,解釋一句執行一句,相似於「同聲翻譯」。例如ASP、PHP等都屬於解釋型語言。程序員
Java既不是編譯型語言也不是解釋型語言,它是編譯型和解釋型語言的結合體。首先採用通用的Java編譯器將Java源程序編譯成與平臺無關的字節碼文件(class文件),而後由Java虛擬機(JVM)對字節碼文件解釋執行。編程
編譯型語言和解釋型語言都有其各自的優缺點,好比編譯型語言會在程序第一次執行時將其所有編譯成與當前系統平臺相對應的機器指令,在後續執行時,直接運行第一次編譯的結果,減小了編譯次數,提升了程序運行效率,可是程序在第一次編譯時與系統平臺相對應,所以移植性比較差。而解釋型語言在程序每次運行時都要將源程序解釋成當前系統平臺相對應的機器指令,所以麼一次運行都須要解釋並執行,運行效率較低,可是移植性強。架構
Java語言綜合了編譯型和解釋型語言的優勢,採起了一種折中方案。即Java語言首次運行時採起編譯機制將Java源程序編譯成Java字節碼文件,該字節碼與系統平臺無關,是介於源代碼和機器指令之間的一種狀態。在後續執行時,採起解釋機制將Java字節碼解釋成與系統平臺對應的機器指令。這樣既減小了編譯次數,又加強了程序的可移植性,所以被稱爲「一次編譯,多處運行!」。jvm
注:Java字節碼具備平臺無關性,能夠在各類不一樣系統平臺中運行,可是,須要有不一樣版本的Java虛擬機,不一樣系統平臺的Java運行環境其Java虛擬機是不同的。編程語言
JVM定義優化
JVM(Java Virtual Machine)意思是Java虛擬機。它是一個虛擬出來的計算機,可在實際的計算機上虛擬各類計算機功能。JVM有本身完善的硬件架構,例如處理器、堆棧和寄存器等,還具備相應的指令系統。操作系統
JVM做用.net
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來實現,主要經過如下幾個步驟完成。
一、 建立JVM裝載環境和配置。
二、 裝載jvm.dll。
三、 初始化jvm.dll。
四、 調用JNIEnv實例裝載並處理class類。
五、 運行Java程序。
JVM是Java運行環境的最核心部分,是運行Java程序的最基本環境,想了解Java運行機制須要對JVM的概念和運行機制有所瞭解。