第 2 章 入門準備
Java 初學者最常遇到的狀況是 … 在高高興興的下載了所謂的「Java 程式」安裝之後,就開始遇到一大堆的問題與挫折。下載、安裝程式從操作上看確實是很簡單,但是您真的知道下載了什麼東西嗎?您安裝了什麼程式?程式安裝到哪裡去?安裝完畢後該進行的相關設定又有哪些?為什麼要作這些設定?
如果您曾經因為安裝所謂的「Java 程式」而遇到一大堆的問題與挫折,您可以看看這個章節,重新瞭解您所要安裝的東西是什麼?瞭解什麼是 JDK、JRE?如何設定 Path 與 Classpath?如何成功撰寫第一個 Java 程式?
使用純文字檔案撰寫 Java 程式是第一步,建議每個Java的初學者從使用純文字檔案開始,然而所謂「工欲善其事、必先利其器」,選擇一個好的開發工具也是必要的,在這個章節的最後談到了一些開發工具,作為您選擇開發工具的參考。
2.1 下載、安裝、瞭解 JDK
要使用 Java 開發程式的第一步,就是安裝 JDK(Java SE Development Kit),這邊以 Java SE 6 Development Kit 安裝作為範例,以實作的方式一步步帶您瞭解 JDK。
2.1.1 下載 JDK
安裝 JDK 的第一步是先下載安裝檔案,這邊要下載的是 Sun 公司的 Java SE 6 Development Kit,下載的網址是:
圖 2.1 Java SE 6 下載頁面
圖 2.1 是撰寫此書時 Java SE 6 下載網頁的擷取畫面,JDK 6 發表日期為 2006 年 12 月 11 日,Sun 公司會在必要的時候公佈修正版本以修正一些臭蟲(bug),您在看此書時可能已經有較新的版本,較新的修正版本將以 Update 名稱,加上號碼來表示修正的版本號。以下簡介頁面中的幾個可下載檔案之作用:
JDK 6
JDK 6 是建議您要下載的安裝程式,這個下載檔案中包括了公用(Public)JRE 安裝選擇,所以您不必額外下載 JRE 6。
JDK 6 with NetBeans 5.5
包括了 JDK 6 與 NetBeans 整合開發環境(Integrated Development Environment, IDE),有相當多的開發人員使用 NetBeans 來開發 Java 程式,這邊假設您沒有使用過任何的 IDE,所以不下載 JDK 6 with NetBeans 5.5 來安裝。
Java Runtime Environment (JRE) 6
如果想要執行 Java 所開發的程式,電腦上必須安裝有 JRE,如果您打算讓其他人可以執行您所撰寫 Java 程式,則可以建議他下載 JRE 進行安裝。
Java SE 6 Documentation
這份文件提供 Java SE 6 所有 API(Application Programming Interface)的用途與使用方式介紹,在往後開發 Java 程式的過程中,會很頻繁的使用這份文件,您可以下載這份文件,往後就不必連上網路來查詢文件。
除了以上幾個下載檔案的介紹之外,下載頁面上還有 JDK 6 的原始碼下載,以及一些進階開發人員才會用的到的下載檔案,目前您無需理會它們,您只要下載 JDK 6 就可以了。以圖 2.1 為例,按下「JDK 6」的「Download」鏈結文字後,會連到「Download Center - Download」網頁,由於這邊的 JDK 6 是 Sun 公司的產品,所以您必須同意它的使用條款才可以下載,選擇「Accept」後,就可以進行 JDK 6 安裝檔案的下載。
圖 2.2 Download Center – Download 網頁
在圖 2.2 中,您可以看到數個不同平台下的 JDK 安裝檔案,這邊假設您的作業系統是 Windows 2000/XP,所以請下載 Windows 平台的安裝檔案。檔案有 Windows Offline Installation, Multi-language,這個檔案是離線安裝檔案,所有安裝過程中必要的內容都在檔案中,所以檔案容量有53 MB 之多,另外還有 Windows Online Installation, Multi-language,可以讓您根據實際選擇的項目透過網路進行安裝,如果您的網路速度夠快,可以下載這個檔案。
建議選擇下載離線安裝檔案,在安裝完畢後可以備份在電腦中,日後如果需要重新安裝的話就很方便。
2.1.2 安裝JDK
這邊假設您下載後的 JDK 安裝檔案名稱是 jdk-6-windows-i586.exe,按兩下這個檔案可以開始程式的安裝,開始的第一步是同意使用條款,再來則是開始安裝 JDK。
圖2.3 安裝 JDK 的畫面
在安裝 JDK 時可以讓您選擇安裝的項目,依序是開發工具(Development Tools)、示範程式(Demos)、API原始碼(Source Code)與公用 JRE(Public JRE)。開發工具是必需的,範例程式可供您日後寫作程式的參考,API 原始碼可以讓您瞭解所使用的 API 實際上是如何撰寫的,而 JRE 則是執行 Java 程式所必要的,所以這四個項目基本上都必須安裝。
要注意的是圖 2.3下面的「Install to」,請記下 JDK 安裝的位置,預設是「C:\Program Files\Java\jdk1.6.0\」,您待會需要使用到這個資訊,如果想改變安裝目的地,可以按下「Change」按鈕來變更;接著按「Next」就開始進行 JDK 的安裝,完成 JDK 的安裝之後,接著會安裝「公用 JRE」。
圖 2.4 安裝 JRE 的畫面
同樣的請留意圖 2.4 下方的「Install to」,瞭解 JRE 的安裝目的地,預設是「C:\Program Files\Java\jre1.6.0\」,按下「Next」按鈕之後,會詢問哪些瀏覽器要使用 Java Plug-In?這可以讓您的瀏覽器可以執行 Java Applet,選擇要支援 Java Plug-In 的瀏覽器之後,按下「Next」鈕可以開始安裝公用 JRE。
2.1.3 瞭解 JDK
接著來瞭解一下您安裝的東西有哪些,這邊假設您的 JDK 與公用 JRE 各安裝至「C:\Program Files\Java\jdk1.6.0\」及「C:\Program Files\Java\jre1.6.0\」。
公用 JRE 主要是給開發好的 Java 程式執行的平台,之前曾經說過,JDK 本身也有自己的 JRE,這個 JRE 是位於JDK安裝目錄的「jre」目錄下,以之前的安裝為例,就是在「C:\Program Files\Java\jdk1.6.0\jre」中,JDK 本身所附的JRE主要是開發 Java 程式時測試之用,與公用 JRE 的主要差別,就在於JDK本身所附的 JRE 比公用 JRE 多了個 server 的 VM(Virtual Machine)執行選項,您可以看看「C:\Program Files\Java\jdk1.6.0\jre\bin」與「C:\Program Files\Java\jre1.6.0\bin」就可以瞭解。
圖 2.5 JDK 的 JRE 有 server 選項
圖 2.6 公用 JRE 沒有 server 選項
server 與 client 選項的差別在於所使用的 VM 不同,執行 Java 程式時預設會使用 client VM,使用 server VM 的話會花比較長的啟動時間及耗用較多的記憶體,為的是啟動 Java 程式後可以獲得較好的執行效能;初學者現階段不用在乎啟動 server 或 client VM 的差別,只要先知道有這兩種VM的存在即可。
繼續來看到 JDK 的安裝目錄下有哪些東西。
圖 2.7 JDK 安裝目錄的內容
「bin」目錄
提供的是 JDK 的工具程式,包括了 javac、java、javadoc、appletviewer 等程式。
「demo」目錄
一些使用 Java 撰寫好的範例程式。
「jre」目錄
JDK自己附帶的JRE。
「db」目錄
在 JDK 6 中所附帶的 Apache Derby 資料庫,這是純 Java 所撰寫的資料庫,支援 JDBC 4.0,在第 21 章有關於 Apache Derby 資料庫的一些簡介。
「lib」目錄
工具程式實際上會使用的 Java 工具類別。JDK 中的工具程式,大多也是由 Java 所撰寫而成,bin 資料夾下的工具程式,例如 Windows 版本的 JDK 中,javac.exe、java.exe 等工具程式,它們不過是個包裝器(Wrapper),執行 javac.exe 等程式時,最後會呼叫 lib 目錄中 tools.jar 中的對應類別,例如 javac 工具程式實際上會去使用 tools.jar 中的 com/sun/tools/javac/Main 類別。
src.zip
Java 提供的 API 類別之原始碼檔案壓縮檔,如果您將來有需要看看 API 的某些功能是如何實作的,可以看看這個檔案中的原始碼內容。
在大致瞭解 JDK 與 JRE 安裝目錄下的東西之後,這邊作個總結,您到底要記得哪些東西?答案是 JDK 安裝目錄下的「bin」目錄,因為當您撰寫完 Java 程式之後,無論是編譯或執行程式,都會使用使用到「bin」目錄下所提供的工具程式。
2.2 設定 Path 與 Classpath
對於習慣圖形化介面操作的初學者而言,在文字模式下執行程式是一件陌生的事,也因此不瞭解 Path 路徑設定的方法與作用,而 Java 執行的平台也有自己的一套路徑規則來找尋撰寫好的 Java 類別,也就是所謂的 Classpath 設定,這個小節中將告訴您如何進行這些相關的設定。
2.2.1 設定 Path
在安裝好 JDK 程式之後,在JDK安裝目錄(假設是 C:\Program Files\Java\jdk1.6.0)下的「bin」目錄,會提供一些開發 Java 程式中必備的工具程式,對於 Java 的初學者我所給的建議是從文字模式(在 Windows 2000/XP 下稱之為命令提示字元)下來操作這些工具程式,您可以在 Windows 2000/XP 的「開始」選單中選擇「執行」,鍵入「cmd」指令來開啟文字模式。
雖然您知道 JDK 的工具程式是位於「bin」目錄下,但您的作業系統並不知道如何找到這些工具程式,所以當您鍵入「javac」嘗試執行編譯程式時,文字模式下會告訴您找不到 javac 工具程式。
圖 2.8 出現這個訊息表示找不到指定的工具程式
您必須告訴作業系統,應該到哪些目錄下嘗試找到您所想使用的工具程式,有幾個方法可以進行這項設定,最方便的方法就是設定系統變數中的 Path 環境變數,在 Windows 2000/XP 下可以選擇桌面上的「我的電腦」並按滑鼠右鍵,選擇「內容」後初換至「進階」頁面,並按下方的「環境變數」按鈕,在「環境變數」對話方塊中編輯「Path」變數。
圖 2.9 選擇 Path 變數並按下「編輯」以進行路徑設定
在 Path 變數的「編輯系統變數」的對話方塊中,於「變數值」欄位的最前方輸入 JDK「bin」目錄的路徑(這邊假設是 C:\Program Files\Java\jdk1.6.0\bin),然後緊跟著一個分號,以作為路徑設定的區隔,接著按「確定」即可完成設定。
圖 2.10 在 Path 變數中加入 JDK 的 bin 目錄路徑
之所以要將 JDK 的路徑設定放置在 Path 變數設定的最前方,是因為作業系統在搜尋 Path 路徑設定時,會從最前方開始讀取,如果在路徑下找到指定的程式,就會直接執行,當您的系統中安裝有兩個以上的 JDK 時,在 Path 路徑中設定的順序,將決定執行哪個 JDK 下的工具程式。
設定 Path 變數之後,您要重新開啟一個文字模式才能重新讀入 Path 變數內容,接著如果您執行 javac 程式,您應該可以看到圖 2.11 的畫面。
圖 2.11 設定 Path 變數成功的話,就可以找到指定的工具程式
您也可以在文字模式下執行以下的指令,以直接設定目前的環境變數包括 Path 變數(這個設定在下次重新開啟文字模式時就不再有效):
set Path= C:\Program Files\Java\jdk1.6.0\bin;%Path%
事實上,如果您沒有在 Path 變數設定 JDK 的 bin 路徑的話,也可以直接執行 java 工具程式,這是因為 Windows 下安裝 JRE 時,會將 java.exe 複製至「C:\Windows\System32\」路徑之下,而這個路徑在 Path 變數中是預設的路徑。
如果 Path 設定是尋找 JDK 安裝目錄下的「bin」目錄,則作業系統會找尋 JDK 安裝目錄下工具程式,因而當您執行 java 程式時,就會使用 JDK 所附的 JRE(即「C:\Program Files\Java\jdk1.6.0\jre」),而不是公用的 JRE(即 C:\Program Files\Java\jre1.6.0\)。
簡單的說,作業系統會嘗試在您指定的 Path 變數中尋找指定的工具程式,當您鍵入 javac 指令時,由於 Path 變數中有設定 JDK 的「bin」目錄之路徑,作業系統就可以根據這個訊息來找到 javac、java 等工具程式。
2.2.2 設定 Classpath
Java 執行環境本身就是一個平台,執行於這個平台上的程式是已編譯完成的 Java 程式(之後會介紹到 Java 程式編譯完成之後,會以 .class 檔案存在),如果將 Java 執行環境比喻為作業系統的話,如果設定 Path 變數是為了讓作業系統找到指定的工具程式(以 Windows 來說的話就是找到 .exe 檔案),則設定 Classpath 的目的就是為了讓Java執行環境找到指定的 Java 程式(也就是.class檔案)。
有幾個方法可以設定 Classpath,最簡單的方法是在系統變數中新增 Classpath 環境變數,在圖 2.9 中的「系統變數」按下「新增」鈕,在「變數名稱」欄位中輸入「Classpath」,在「變數值」欄位中輸入 Java 類別檔案的位置,例如可以輸入「.;C:\Program Files\Java\jdk1.6.0\ lib\tools.jar; C:\Program Files\Java\jre1.6.0\lib\rt.jar」(jar 檔是 zip 壓縮格式,當中就包括了 .class 檔案以及 jar 中的 Classpath 設定),每一筆資料中間必須以「;」作為分隔。
事實上 JDK 6 預設就會到現行工作目錄(上面的 ‘.’ 設定),以及 JDK 的「lib」目錄(這邊假設是 C:\Program Files\Java\jdk1.6.0\lib)中尋找 Java 程式,所以如果您的 Java 程式是在這兩個目錄中,則不必設定 Classpath 變數也可以找的到,將來如果您的 Java 程式不是放置在這兩個目錄時,則可以如上設定 Classpath。
如果所使用的 JDK 工具程式具有 Classpath 指令選項,則可以在執行工具程式時一併指定 Classpath,例如:
javac -classpath classpath1;classpath2 …
其中 classpath1、classpath2 是您實際要指定的路徑;您也可以在文字模式下執行以下的指令,以直接設定目前的環境變數包括 Classpath 變數(這個設定在下次重新開啟文字模式時就不再有效):
set CLASSPATH=%CLASSPATH%;classpath1;classpath2...
總而言之,設定 Classpath 的目的,在於告訴 Java 執行環境,哪些目錄下可以找到您所要執行的 Java 程式。一個分辨 Path 與 Classpath 的方式就是:「對於 Windows 作業系統來說,Path 是讓作業系統可以找到 “.exe” 執行檔的存在,而對於 Java 執行環境來說,ClassPath 就是讓 JVM 可以找到 “.class” 執行檔的存在」。
良葛格的話匣子 在 Design Patterns Elements of Reusable Object-Oriented Software 書中對「框架」作出的解釋是:框架就是一組互相合作的類別組成,它們為特定類型的軟體開發提供了一個可以重複使用的設計。
2.3 第一個 Java 程式
完成 JDK 相關環境設定之後,無論如何就先寫個簡單的 Java 程式,以測試一下環境設定是否正確,順便增強一些學習的信心,以下要介紹的第一個 Java 程式是會顯示 “嗨!我的第一個 Java 程式!” 這段訊息的簡單程式。
2.3.1 撰寫、編譯 Java 程式
在正式撰寫程式之前,請先確定您可以看的到檔案的副檔名,在 Windows 2000/XP 下預設是不顯示檔案的副檔名,這會造成您重新命名檔案時的困擾,如果您目前在「檔案總管」下無法看到檔案的副檔名,請先執行工具列上的「工具/資料夾選項」並切換至「檢視」頁面,取消「隱藏已知檔案類型的副檔名」之選取。
圖 2.12 取消「隱藏已知檔案類型的副檔名」以顯示副檔名
接著選擇一個目錄來撰寫 Java 原始碼檔案,假設是檔案會儲存在 C:\workspace 目錄,您要新增一個「文字文件」(也就是 .txt 文件),並重新命名文件為「HelloJava.java」,由於您是將文字文件的副檔名從 .txt 改為 .java,所以系統會詢問您是否更改副檔名,請確定更改,接著在「HelloJava.java」上按兩下開啟檔案,並照著圖 2.13 撰寫程式。
圖 2.13 第一個 Java 程式
這個程式有幾點必須注意:
Java 的原始檔案必須以副檔名 .java 作結束
這也就是您必須讓「檔案總管」顯示副檔名的原因。
主檔名與類別名稱必須一致
Java 程式的類別名稱是指 “class” 關鍵字(Keyword)後的名稱,就這個例子而言,也就是 HelloJava 這個名稱,這個名稱必須與 HelloJava.java 的主檔名(HelloJava)一致。
注意每個字母的大小寫
Java 程式中會區分字母的大小寫,System 與 system 對 Java 程式來說是不一樣的名稱。
空白只能是半型空白字元或是Tab字元
有些初學者可能不小心輸入了全型空白字元,這很不容易檢查出來。
撰寫好程式並存檔後,接著開啟一個文字模式,並使用以下的指令切換至 HelloJava.java 所在的目錄(在此例中是 C:\workspace):
> cd C:\workspace
接著使用 javac 工具程式來編譯 .java 檔案,這邊指定編譯 HelloJava.java,指令如下:
C:\workspace\javac HelloJava.java
如果編譯順利成功,則在 HelloJava.java 所在的目錄,會出現一個 HelloJava.class 的檔案,這是已經編譯完成的 Java 位元碼(bytecodes)檔案程式。
您可能會遇到以下的幾個錯誤,這表示您有一些地方操作有誤:
error: cannot read: HelloJava.java
這表示 javac 工具程式找不到您指定的 .java 檔案,請檢查檔案是否存在目前的目錄中,或是檔案名稱是否有誤。
HelloJava.java:1: class HelloJava is public, should be declared in a file named HellJava.java
類別名稱與主檔名不符,請確定主檔名與類別名稱是相同的。
HelloJava.java:3: cannot find symbol
程式碼中某些部份打錯了,最常發生的原因可能是沒有注意到字母大小寫。
‘javac’ 不是內部或外部命令、可執行的程式或批次檔。
Path 設定有誤或沒有在 Path 中加入 JDK 的「bin」目錄,請參考前一節的內容。
2.3.2 執行 Java 程式
在順利編譯出 .class 的檔案之後,可以使用 java 工具程式來執行它,執行時必須指定類別名稱,就以上的例子來說,也就是指定 HelloJava.class 這個檔案的主檔名,指令執行方式如下:
C:\workspace>java HelloJava
java 工具程式會根據您指定的類別名稱,實際載入 .class 的檔案,以上例來說,就是載入 HelloJava.class 並執行,執行的結果應該是圖 2.14 的畫面。
圖 2.14 執行第一個 Java 程式的成功畫面
您可能會遇到以下的幾個錯誤,這表示您有一些地方操作有誤:
Exception inthread”main” java.lang.NoClassDefFoundError
java 工具程式找不到您所指定的類別,請確定指定的類別存在目前的目錄中,名稱是否指定正確(如果是舊版的 JDK,可能必須在 Classpath 中加入 “.”,表示可於目前目錄中找到所指定的類別)。
Exceptionin thread “main” java.lan.NosuchMethodError: main
沒有指定 Java 程式的進入點(Entry point),java 工具程式指定的類別必須要有一個程式進入點,也就是必須包括 main(String[] args)這個方法(method),請確定您的程式中包括它,必須與圖 2.13 的 HelloJava.java 內容一致。
在之後的章節,如果不是要特別強調的話,不再重複指出如何編譯與執行 Java 程式,在往後的章節中說要編譯 Java 程式時,就是指使用 javac 工具程式來編譯 .java,而說要執行 Java 程式時,就是指使用 java 工具程式來執行指定的 Java 類別。
2.4 選擇開發工具
從學習的角度來說,建議初學者使用純文字檔案來撰寫 Java 程式,並在文字模式下親自使用工具程式來編譯、執行 Java 程式,藉此來瞭解關於 Path、Classpath,熟悉工具程式的使用,習慣一些撰寫 Java 程式所必須注意的地方,嘗試從文字模式所提供的訊息中瞭解所撰寫的程式發生什麼問題,以及如何改正這些問題。
當然只使用純文字檔案總是有相當多的不便,在學習 Java 一段時間之後,您也許會想要找尋一個好用的 Java 開發工具,這邊的建議是先從簡單的文字編輯輔助工具開始,像是 UltraEdit 或 Editplus,這兩個文字編輯輔助工具都有語法標示顯示,以及一些好的尋找、取代、比較等功能,在Linux下的話,我經常使用 vi 來編輯 Java 程式。
從開發效率的角度來看,選擇一個好的整合開發環境(Integrated Development Environment, IDE)是必要,使用何種開發整合開發環境,依開發團隊的需求而各有不同,如果沒有什麼特別的需求,建議可以從簡單的 JCreater 或 BlueJ 開始,這些開發環境不僅提供語法顯示等方便程式編輯的功能,也整合了一些 Java 工具程式的使用,使用上並不會太複雜,作為在文字編輯程式之後的進階開發環境程式,是個不錯的嘗試。
如果想要使用功能更齊全的 IDE,JBuilder、Eclipse、NetBeans 等都是功能齊全的 IDE,也都各有其支持者,但如果您想找一個可以免費使用而功能齊全的 IDE 的話,建議可以使用 Eclipse 或 NetBeans。
Eclipse 是個可以免費下載、使用的IDE,但並不因為它免費而缺少必要的功能, Eclipse 提供了 JDT(Java Development Tools),這是基於 Eclipse 且功能齊全的 Java IDE(Eclipse 並不只被用來開發 Java 程式),它所提供的 PDE(Plug-In Development Environment)可以讓您對 JDT 進行功能擴展,在網路上總是可以找到 Plug-In 程式來加入 Eclipse 中以增加您所要想的功能,必要時,您也可以開發自己的 Plug-In 來為 Eclipse 擴展功能,Eclipse 也是大多數的 Java 開發人員所推薦的 IDE。
圖 2.15 Eclipse 是個功能強大且 free 的 IDE
NetBeans IDE 是 Sun 官方所推薦下載的 IDE,在 Java 官方網站上也可以下載綁定 NetBeans IDE 的 JDK 安裝檔案,NetBeans 本身是個高度模組化的 IDE,可以讓您下載新功能模組來擴充 IDE 的功能。在 NetBeans 在 5.0 版本之後,功能已相當成熟,每一次新的 JDK 版本釋出之後,NetBeans IDE 總是最先支援新版 JDK 的IDE,有相當多的 Java 開發人員也推薦使用 NetBeans IDE。
圖 2.16 NetBeans 是 Sun 官方所推薦的 IDE
良葛格的話匣子 在我學習 Java 的過程中,差不多有兩年的時間,都是使用純文字檔案撰寫 Java 程式,這使得我對 Java 能有深入的瞭解,因而我建議初學者(完全沒有程式經驗的使用者)在學習 Java 的過程中,也從純文字檔案撰寫 Java 中開始學習,在您真正需要開發程式(或團隊需求),或想學習一個 IDE 的使用時,才開始使用 IDE 開發 Java 程式,不要只是偷懶或貪圖方便而使用 IDE。
2.5 接下來的主題
每一個章節的內容由淺至深,初學者該掌握的深度要到哪呢?在這個章節中,對於初學者我建議至少掌握以下幾點內容:
- 能自行下載、安裝 JDK
- 瞭解 JDK、JRE 的安裝位置
- 懂得設定 Path 之目的
- 懂得設定 Classpath 之目的
- 能成功的自行撰寫並執行第一個 Java 程式
之後的章節將以這一個章節的內容作為基礎進行說明,首先將從 Java 的資料型態、變數常數、流程控制開始介紹,這也是學習任何一個程式語言都不可缺少的過程。