Java虛擬機(jī)的原理是怎樣的?學(xué)習(xí)一下吧
- 作者:新網(wǎng)
- 來(lái)源:新網(wǎng)
- 瀏覽:100
- 2018-04-25 13:18:29
Java虛擬機(jī)是一個(gè)可以執(zhí)行Java字節(jié)碼的虛擬機(jī)進(jìn)程。Java源文件被編譯成能被Java虛擬機(jī)執(zhí)行的字節(jié)碼文件。
Java虛擬機(jī)是一個(gè)可以執(zhí)行Java字節(jié)碼的虛擬機(jī)進(jìn)程。Java源文件被編譯成能被Java虛擬機(jī)執(zhí)行的字節(jié)碼文件。
<
div> Java是平臺(tái)無(wú)關(guān)的語(yǔ)言是指用Java寫的應(yīng)用程序不用修改就可在不同的軟硬件平臺(tái)上運(yùn)行。平臺(tái)無(wú)關(guān)有兩種:源代碼級(jí)和目標(biāo)代碼級(jí)。C和C++具有一定程度的源代碼級(jí)平臺(tái)無(wú)關(guān),表明用C或C++寫的應(yīng)用程序不用修改只需重新編譯就可以在不同平臺(tái)上運(yùn)行。
Java主要靠Java虛擬機(jī)(JVM)在目標(biāo)碼級(jí)實(shí)現(xiàn)平臺(tái)無(wú)關(guān)性。JVM是一種抽象機(jī)器,它附著在具體
操作系統(tǒng)之上,本身具有一套
虛機(jī)器指令,并有自己的棧、寄存器組等。但JVM通常是在軟件上而不是在硬件上實(shí)現(xiàn)。(目前,SUN系統(tǒng)公司已經(jīng)設(shè)計(jì)實(shí)現(xiàn)了Java芯片,主要使用在網(wǎng)絡(luò)計(jì)算機(jī)NC上。另外,Java芯片的出現(xiàn)也會(huì)使Java更容易嵌入到家用電器中。)JVM是Java平臺(tái)無(wú)關(guān)的基礎(chǔ),在JVM上,有一個(gè)Java解釋器用來(lái)解釋Java編譯器編譯后的程序。Java編程人員在編寫完軟件后,通過(guò)Java編譯器將Java源程序編譯為JVM的字節(jié)代碼。任何一臺(tái)機(jī)器只要配備了Java解釋器,就可以運(yùn)行這個(gè)程序,而不管這種字節(jié)碼是在何種平臺(tái)上生成的。另外,Java采用的是基于IEEE標(biāo)準(zhǔn)的數(shù)據(jù)類型。通過(guò)JVM保證數(shù)據(jù)類型的一致性,也確保了Java的平臺(tái)無(wú)關(guān)性。
Java虛擬機(jī)通過(guò)調(diào)用某個(gè)指定類的方法main啟動(dòng),傳遞給main一個(gè)字符串?dāng)?shù)組參數(shù),使指定的類被裝載,同時(shí)鏈接該類所使用的其它的類型,并且初始化它們。例如對(duì)于程序:
public class HelloApp {
public static void main(String[] args){
System.out.println("Hello World!");
for (int i = 0; i < args.length; i++ ) {
System.out.println(args);
}
}
}
編譯后在命令行模式下鍵入:
java HelloApp run virtual machine
將通過(guò)調(diào)用HelloApp的方法main來(lái)啟動(dòng)java虛擬機(jī),傳遞給main一個(gè)包含三個(gè)字符串"run"、"virtual"、"machine"的數(shù)組?,F(xiàn)在我們略述虛擬機(jī)在執(zhí)行HelloApp時(shí)可能采取的步驟。