2. Java程序的運行機制


一、完成一個Java程序的流程:編輯Java源代碼→編譯Java程序→運行Java程序

1. 在記事本中編寫Java程序,然后保存為.java類型文件(Java源文件)

2. 使用javac命令將源文件編譯成字節碼文件(*.class文件)

3. 使用java命令解釋執行字節碼文件

【示例】

1. 在路徑D:\下創建一個HelloWorld.java文件,並編寫如下代碼

public class HelloWorld
{
    public static void main(String[] args)
    {
        System.out.println("Hello World!");
    }  
}

2. 在命令行窗口先切換到路徑D:\,然后輸入“javac [-d .] HelloWorld.java”命令

補:javac命令的用法為“javac -d destdir srcFile”,其中“-d destdir”指定編譯生成的字節碼文件的存放路徑,而srcFile則是Java源文件所在的位置。

3. 在命令行窗口進入HelloWorld.class所在的位置,然后輸入“java HelloWorld”命令

補:java命令的用法為“java Java類名”,java命令后的參數是Java類名,而不是字節碼文件的文件名,也不是Java源文件名。

 

二、Java程序的運行原理

Java源程序經過編譯並不會生成特定平台的機器碼,而是生成一種與平台無關的字節碼(即*.class文件)。這種字節碼不是可執行的,必須使用Java解釋器來解釋執行。

Java語言里負責解釋執行字節碼文件的是Java虛擬機(即JVM),JVM是可運行Java字節碼文件的虛擬計算機。

補1:當使用Java編譯器編譯Java程序時,生成的是與平台無關的字節碼,這些字節碼不面向任何具體平台,只面向JVM。不同平台上的JVM都是不同的,但它們都提供了相同的接口。所有平台上的JVM向編譯器提供相同的編程接口,而編譯器只需要面向虛擬機,生成虛擬機能理解的代碼,然后由虛擬機來解釋執行。在一些虛擬機的實現中,還會將虛擬機的代碼轉換成特定系統的機器碼執行,從而提高執行效率。

補2:JVM是Java程序跨平台的關鍵部分,只要為不同平台實現了相應的虛擬機,編譯后的Java字節碼就可以在該平台上運行。顯然,相同的字節碼需要在不同的平台上運行,這幾乎是“不可能”的,只有通過中間的轉換器才可以實現,JVM就是這個轉換器。可以認為JVM分為向上和向下兩個部分,所有平台上的JVM向上提供給Java字節碼程序的接口完全相同,但向下適用不同平台的接口則互不相同。

補3:JVM是一個抽象的計算機,和實際的計算機一樣,它具有指令集並使用不同的存儲區域。它負責執行指令,還要管理數據、內存和寄存器。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM