C語言中文網 目錄

Java程序應用實例:“你好 Java”

經過上節的操作已經配置完了 Java 的開發環境,但并不清楚所配置的開發環境是否真的可以運行 Java 應用程序。為了解除這個疑慮,也為了使讀者對開發 Java 應用程序的步驟有一個初步的了解,本節將展示一個完整 Java 應用程序的開發過程。

編寫Java源程序

Java 源程序可以使用任何一個文本編輯器來編寫,這里以 Windows 下的記事本為例。

例 1

(1) 新建一個空白記事本,然后如實地輸入下列內容。
/*
*第一個java程序
*/
public class HelioJava
{
    //這里是程序入口
    public static void main(String[] args)
    {
        //輸出字符串
        System.out.println("你好 Java");
    }
}

很多初學者可能不明白此程序的全部意義,沒關系,請完全按照實例的樣式輸入,包括各種括號與標點符號。

下面對源代碼中的重要組成元素進行簡單介紹。
  • 關鍵字 public 表示訪問說明符,表明該類是一個公共類,可以控制其他對象對類成員的訪問。
  • 關鍵字 class 用于聲明一個類,其后所跟的字符串是類的名稱。
  • 關鍵字 static 表示該方法是一個靜態方法,允許調用 main() 方法,無須創建類的實例。
  • 關鍵字 void 表示 main() 方法沒有返回值。
  • main() 方法是所有程序的入口,最先開始執行。
  • “/*”“*/”之間的內容和以“//”開始的內容為 Java 程序的注釋。

(2) 將寫完代碼后的文件另存為 HelloJava.java,保存類型選擇“所有文件”,接著單擊“保存”按鈕,保存文件到 D:\myjava 文件夾中,如圖 1 所示。

保存 HelloJava.java 文件
圖1 保存 HelloJava.java 文件

提示:保存的文件名中不能出現空格,類似“Hello Java.java”的文件名在編譯時會出現找不到文件的錯誤。

編譯和運行

將 Java 源程序編寫并保存到文件之后,還需要進行編譯才能運行。編譯 Java 源程序使用的是 JDK 中的 javac 命令,例如編譯上節的 HelloJava.java,完整命令如下。
javac HelloJava.java

javac HelloJavajava 命令的作用是讓 Java 編譯器獲取 Java 應用程序 HelloJava.java 的源代碼,把它編譯成符合 Java 虛擬機規范的字節碼文件。這時會生成一個新文件 HelioJava.class,此文件便是我們所說的字節碼文件,它也是 JVM 上的可執行文件。

運行 Java 程序需要使用 JDK 中的 java 命令,例如運行上步生成的 .class 文件,完整命令如下:
java HelloJava

具體的執行效果如圖 2 所示。

HelloJava執行效果
圖2 HelloJava執行效果
  1. 選擇“開始”|“運行”命令,打開“運行”對話框后輸入 cmd 命令,按 Enter 鍵進入到 DOS 環境。
  2. 輸入 d: 按 Enter 鍵,切換到 Java 源程序所在的 D 盤。
  3. 輸入 cd myjava 命令,進入 Java 源程序所在的目錄,即 d:\myjava。
  4. 輸入 javac HelloJava.java 命令進行編譯,此時如果沒有任何其他信息,表示該源程序通過了編譯;反之便說明程序中存在錯誤,必須在記事本中打開 HelloJavajava 文件進行修改,再次保存此文件后回到命令提示符窗口重新編譯(可能要反復幾次),直到編譯通過為止。
  5. 輸入 java HelloJava 命令執行程序,如果出現“你好 Java”字符,說明程序執行成功。

編譯常見錯誤解決方法

在使用 javac 編譯器編譯源代碼文件時,可能會出現下面幾個常見問題。

(1) Error:cannot read:HelloJava.java javac。
工具程序找不到指定的 java 文件,需要檢查文件是否存儲在當前目錄中,或文件名是否錯誤。

(2) HelloJava.java:4:class HelloJava is public,should be declared in a file named MyApplication.java。
源文件中類的名稱和源文件名稱不符,需要確定源文件名稱和類名稱是否相同。

(3) HelloJava.java:6:cannot find symbol。
源程序文件中某些代碼部分輸入錯了,最常產生的原因可能是沒有注意到字母的大小寫。

(4) Javac 不是內部或外部命令、可執行程序或批量文件。
path 設置有誤或沒有在 path 系統變量中加入 JDK 的 bin 目錄。

如果沒有出現上述所列問題,即成功編譯了該 Java 文件。在解釋執行 .dass 文件時,可能會出現下面幾個常見問題。

(1) Exception in thread “main” java.lang.NoClassDe£FoundError。
Java 工具程序找不到所指定的 .class 類,需要確定指定的類是否存儲在當前目錄中,名稱是否正確。

(2) Exception in thread “main” java.lang.NoSuchMetliodError:main。
沒有指定 Java 程序的入口。Java 工具程序指定的類必須有一個程序入口,也就是必須包括 main(String args[]) 這個方法。

提示:在后面的章節中,如果不是特別強調,就不再重復介紹如何編譯與解釋執行 Java 程序。

Java程序運行流程

從上述案例可以看出,Java 程序的運行必須經過編寫、編譯和運行 3 個步驟。
  1. 編寫:是指在 Java 開發環境中進行程序代碼的輸入,最終形成后綴名為 java 的 Java 源文件。
  2. 編譯:是指使用 Java 編譯器對源文件進行錯誤排査的過程,編譯后將生成后綴名為 .class 的字芾碼文件,不像 C 語言那樣生成可執行文件。
  3. 運行:是指使用 Java 解釋器將字節碼文件翻譯成機器代碼,執行并顯示結果。

Java 程序運行流程如圖 3 所示。

Java程序運行流程
圖3 Java程序運行流程

字節碼文件是一種和任何具體機器環境及操作系統環境無關的中間代碼。是一種二進制文件,是 Java 源文件由 Java 編譯器編譯后生成的目標代碼文件。編程人員和計算機都無法直接讀懂字節碼文件,它必須由專用的 Java 解釋器來解釋執行,因此 Java 是一種在編譯基礎上進行解釋運行的語言。

Java 解釋器負責將字節碼文件翻譯成具體硬件環境和操作系統平臺下的機器代碼,以便執行。因此 Java 程序不能直接運行在現有的操作系統平臺上,它必須運行在被稱為 Java 虛擬機的軟件平臺之上。

Java 虛擬機(JVM)是運行 Java 程序的軟件環境,Java 解釋器是 Java 虛擬機的一部分。在運行 Java 程序時,首先會啟動 JVM,然后由它來負責解釋執行 Java 的字節碼程序,并且 Java 字節碼程序只能運行于 JVM 之上。這樣利用 JVM 就可以把 Java 字節碼程序和具體的硬件平臺以及操作系統環境分隔開來,只要在不同的計算機上安裝了針對特定平臺的 JVM,Java 程序就可以運行,而不用考慮當前具體的硬件平臺及操作系統環境,也不用考慮字節碼文件是在何種平臺上生成的。

JVM 把這種不同軟、硬件平臺的具體差別隱藏起來,從而實現了真正的二進制代碼級的跨平臺移植。JVM 是 java 平臺架構的基礎,Java 的跨平臺特性正是通過在 JVM 中運行 Java 程序實現的。Java 的這種運行機制可以通過圖 4 來說明。

JVM工作方式
圖4 JVM工作方式

Java 語言這種“一次編寫,到處運行”的方式,有效地解決了目前大多數高級程序設計語言需要針對不同系統來編譯產生不同機器代碼的問題,即硬件環境和操作平臺的異構問題,大大降低了程序開發、維護和管理的開銷。

提示:Java 程序通過 JVM 可以實現跨平臺特性,但 JVM 是不跨平臺的。也就是說,不同操作系統之上的 JVM 是不同的,Windows 平臺之上的 JVM 不能用在 Linux 平臺,反之亦然。

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo