第一章認識 Java 資訊科技系 林偉川 誕生 : 因應智慧型電器時代的來臨 成長 : 全球資訊網路廣受歡迎,Java 的跨平台及製作動態網頁的潛力, 使 Green 專案繼續發展下去 發展 : 使用 Java 可以發展的程式 -applet application servlet JavaBean JSP 等 Java 現今的版本稱為 Java 2 本書的主角是 J2SE 2 1
當你將原本要在 Windows 上執行的 C/C++ 程式, 拿到 Linux 上執行時, 必須要有以下的動作 : 必須要有程式的原始檔 (source code) 變更程式中, 和平台相關的程式碼 重新編譯成執行檔 3 C 程式欲在不同平台執行時, 必須重新編譯 4 2
Java 程式只要編譯一次, 就可以在擁有 JRE 的 平台上執行 5 Java 版本 Java technologies are classified into three editions: 1. Standard (J2SE technology) 2. Micro (J2ME technology) 3. Enterprise (J2EE technology) 多了 EJB Each edition is a developer treasure chest of tools and supplies that can be used with a particular product: 1. Java virtual machines 2. A library of APIs 3. Tools for deployment and device configuration 4. A profile that is a specification of the set of APIs Reference: http://java.sun.com 6 3
1-2-1 Java 的跨平台機制與虛擬機 Java 虛擬機 (Java Virtual Machine, 簡稱 JVM) 執行位元組碼時, 會執行三個動作 : 載入記憶體 驗證是否合法 轉成機器碼執行 7 Phase 1 Editor Disk Program is created in an editor and stored on disk in a file ending with.java. Phase 2 Compiler Disk Compiler creates bytecodes and stores them on disk in a file ending with.class. Phase 3 Class Loader Primary Memory Class loader reads.class files containing bytecodes from disk and puts those bytecodes in memory. Disk.... Phase 4 Bytecode Verifier Primary Memory Bytecode verifier confirms that all bytecodes are valid and do not violate Java s security restrictions..... Phase 5 Interpreter Primary Memory Interpreter reads bytecodes and translates them into a language that the computer can understand, possibly storing data values as the program executes..... Typical Java environment. 8 4
1-2-1 Java 的跨平台機制與虛擬機 JVM 和 Java API 組成 Java 平台 只要電腦上有 Java 平台, 不論作業系統是 Windows Mac OS 或 Linux,Java 程式都可以執行 9 1-2-1 Java 的跨平台機制與虛擬機 J2SDK 和 JRE 之間的關係 資料來源 :http://java.sun.com 10 5
1-2-2 理想的跨平台 1-2-3 Java 的優缺點優點 : 容易學習跨平台物件導向安全多執行緒資源回收機制 缺點 : 效能較差 11 Java 程式的編譯 : 12 6
使用 JVM( 也稱為 Java 解譯器 ) 執行 Java 程式時, 會先載入類別檔再執行 13 1-4-1 下載並安裝 JDK 也可以在以下的網址下載最新版本的 J2SE: http://java.sun.com/downloads/ 14 7
1-4-1 下載並安裝 JDK 安裝步驟 : 1. 選取 I accept the terms, 並按下 Next > 繼續安裝繼續安裝 15 1-4-1 下載並安裝 JDK 安裝步驟 : 2. 按下 Next > 繼續繼續 16 8
1-4-1 下載並安裝 JDK 安裝步驟 : 3. 按下 Install > 開始安裝開始安裝 17 1-4-1 下載並安裝 JDK 安裝步驟 : 4. 完成後按下 Finish > 18 9
1-4-1 下載並安裝 JDK 安裝步驟 : 5. 按下 Yes > 重新開機重新開機 19 1-4-2 環境變數設定 完成重開機之後, 為了程式開發的方便性, 還需設定 JDK 中工具程式的路徑 以下是使用 Windows XP 為例進行說明 20 10
1-4-2 環境變數設定環境變數設定步驟 : 1. 開啟 我的電腦我的電腦 的內容 21 1-4-2 環境變數設定 環境變數設定步驟 : 2. 點選 環境變數環境變數 加入 JAVA_HOME 為 java 安裝的路徑 (C:\Program Files\Java\jdk1.6.0_01) classpath 為. 22 11
1-4-2 環境變數設定環境變數設定步驟 : 3. 點選 Path 再按 編輯編輯 Path 後面加入 ;% JAVA_HOME%\bin 23 1-4-2 環境變數設定環境變數設定步驟 : 4. 點選 Classpath 再按 編輯編輯 Classpath 後面加入.;% JAVA_HOME%\lib\tools.jar 24 12
1-4-2 環境變數設定環境變數設定步驟 : 5. 加入 JDK 工具的路徑 Windows 2000 的設定方式同 Windows XP 並可在開機硬碟 ( 通常為 C:) 的根目錄找到 Autoexec.bat 檔案檔案 25 或建立一個批次執行檔 set path=%path%;c:\program files\java\jdk1.6.0_01\bin set classpath=.;c:\program files\java\jdk1.6.0_01\lib\tools.jar 26 13
Java programming environment Java IDEs(Integrated Development Environments) Borland s JBuilder Symantec s Visual Café IBM s VisualAge Java Creator (http://www.jcreator.com) NetBean (http://www.netbeans.org/) Eclipse (http://eclipse.cis.sinica.edu.tw/downloads/index.php) 27 1-4-3 建立 MS-DOS 的桌面捷徑 為了方便 J a v a 程式的編譯和執行, 可以利用下列方式在桌面上建立一個 MS-DOS 的捷徑 建立 MS-DOS 桌面捷徑步驟 : 1. 新增捷徑 28 14
1-4-3 建立 MS-DOS 的桌面捷徑建立 MS-DOS 桌面捷徑步驟 : 2. 輸入 C:\WINDOWS\system32\cmd.exe 29 1-4-3 建立 MS-DOS 的桌面捷徑建立 MS-DOS 桌面捷徑步驟 : 3. 輸入捷徑名稱 30 15
1-4-3 建立 MS-DOS 的桌面捷徑建立 MS-DOS 桌面捷徑步驟 : 4. 開啟捷徑 內容內容 視窗 31 1-4-3 建立 MS-DOS 的桌面捷徑建立 MS-DOS 桌面捷徑步驟 : 5. 設定開始位置 32 16
1-4-4 程式編輯軟體 只要是可以編輯純文字的編輯軟體都可用來編輯 Java 程式 例如 :Windows 裡的 記事本 另外, 作者推薦 jedit 編輯軟體, 你可以在下列網址找到最新版本 http:// www.jedit.org jedit 安裝步驟 : 1. 雙擊 jedit41 install.jar 進行安裝 33 1-4-4 程式編輯軟體 jedit 安裝步驟 : 2. 軟體簡介, 按 Next 繼續繼續 34 17
1-4-4 程式編輯軟體 jedit 安裝步驟 : 3. 版權宣告, 按 Next 繼續繼續 35 1-4-4 程式編輯軟體 jedit 安裝步驟 : 4. 選擇安裝目錄後, 按 Next 繼續 36 18
1-4-4 程式編輯軟體 jedit 安裝步驟 : 5. 選擇安裝組件後, 按 install 開始安裝開始安裝 37 1-4-4 程式編輯軟體 jedit 安裝步驟 : 6. 安裝成功, 按 確定確定 關閉視窗關閉視窗 38 19
1-4-4 程式編輯軟體 jedit 安裝步驟 : 7. 安裝成功的訊息, 按 Finish 後完成後完成 39 1-4-4 程式編輯軟體 jedit 的功能簡介 : 改變顯示的字型功能 1. 點選 File Open 以開啟檔案 2. 點選 Utilities Global Options 40 20
1-4-4 程式編輯軟體 jedit 的功能簡介 : 改變顯示的字型功能 3. 點選 Text Area 後, 再點選 Text font 欄 4. 選擇適當字型 (DialogInput) 41 1-4-4 程式編輯軟體 jedit 的功能簡介 : 設定行號功能 1. 加入行號 2. 提示一對大括號所包含的程式行範圍 42 21
Java 程式分類 Application can execute and save standalone A program is stored and executed from the user s local computer Usually the program is executed in DOS environment Execute result can be display in DOS or open a window dialog(swing) Applet(client load heavy) embedded in HTML A small program is stored on a remote computer Users connect to it from WWW browser Applets are downloaded from server computer to the client browser and are execute and display result in client s browser After executing the Applet, client s browser discards the applet(byte code), reload again if the client s browser wants to execute again Servlet(Server load heavy) JSP ASP like 43 1-5-1 標準 Java 程式的外觀 典型的 Java 程式 (EX1_1.java): 01 /* 02 程式註解區開始 03 ^_^ 04 */ 05 import java.lang.*; 06 // 這也是程式註解 07 class EX1_1 08 { 09 static int a=3; 10 public static void main(string[]args) 11 { 12 int b = square(a); 13 System.out.println(b); 14 System.out.println(" 大家好 "); 15 } 16 static int square(int i) 17 { 18 return i*i; 19 } 20 } 左例程式碼, 每行 (Line, 也稱 列 ) 最前面佔兩位的數值並不是程式碼的一部份, 其用意是方便閱讀及講解之用 44 22
1-5-2 範例解說程式註解 : 1. 多行註解 ( 或稱區塊註解 ): 以 /* 為起始符號 以 */ 為終止符號 註解符號 /* 和 */ 之間可放入任何文字, 以輔助程式設計者了解程式碼在做什麼 所有的程式註解都會被編譯器忽略 不能有巢狀註解 /* ***** /* 錯誤的註解 */ ***** */ 45 1-5-2 範例解說程式註解 : 2. 單行註解 : 以 // 為起始符號, 終點為該行的最後一個字元, 沒有終止符號 3. 特定標示方式 : 以 /** 為開頭, 以 */ 為結尾 本書並不會使用此種註解, 這也不是 SCJP 的考試範圍, 故不作討論, 有興趣者可以參考 http://java.sun.com/j2se/javadoc/ 46 23
1-5-2 範例解說引入類別 : import 是引入類別的關鍵字 import 敘述必須放在所有類別的前面 敘述的結尾 : 分號表示一個程式敘述的結束, 在寫完一個敘述時, 別忘了要加上分號喔! 47 1-5-2 範例解說類別定義 : 定義類別時, 以 class 關鍵字為開頭, 接著是類別的名稱 如果一個程式檔案只有一個類別定義時, 通常類別名稱就是檔案名稱 類別的主體以大括號 { } 包圍起來 屬性宣告 : 範例 EX1_1.java 中第 9 行, 為 int 型別之靜態屬性宣告 48 24
1-5-2 範例解說起始方法定義 : main() 方法必須宣告為 public( 公開 ) static( 靜態 ) void( 沒有回傳值 ) 其形式參數必須為 String 型別的一維陣列 呼叫方法 : 參數的作用是將資料傳給方法, 方法再將傳入的資料經過運算之後, 再回傳給呼叫者 49 1-5-2 範例解說方法定義 : square() 方法和 main() 方法是相同的構造, 都有方法標頭 (header) 及大括弧圍起來的方法主體 ( 或稱為方法內容敘述 ) 呼叫方法時, 若欲取得的傳入資料, 必須在標頭處宣告形式參數 return 關鍵字會將運算式的結果回傳 50 25
1-5-3 Java 程式也可以長這樣 EX1_2.java: 01 /* 程式註解區開始 ^_^ */ 02 import java.lang.*; 03 // 這也是程式註解 04 class EX1_2{ static int a=3; 05 public static void main(string[]args){int b = 06 square(a);system.out.println(b); 07 System.out.println(" 大家好 ");} static int square(int i){ 08 return i*i; }} 雖然,Java 程式的編排方式有很大的彈性, 不過為了閱讀方便及程式碼的維護, 上例的編排方式是相當不妥的 相對地, 建議採用 EX1_1.java 的編排方式, 使用縮排, 讓程式碼易於了解 維護, 也易於除錯 51 編譯程式 : C:\java2tb>cd ch01 C:\java2tb\ch01>javac EX1_1.java 出現下圖訊息, 表示完成程式的編譯 : 52 26
執行程式 : C:\java2tb\ch01>java EX1_1 出現下圖訊息, 表示程式執行正確 : 53 出現下圖訊息, 表示輸入的執行檔檔名錯誤 : 執行 Java 時, 不要輸入原始檔的副檔名, 否則會出現下圖訊息 : 54 27
DIR: DIR 可以查看目前工作目錄的檔案和子目錄 DOS 指令不分英文字母大小寫 (Java 有區別英文字母大小寫 ) 55 萬用字元 : 星號 * 可代表不限長度且不限字元的字串可代表不限長度且不限字元的字串 例如 : 列出所有副檔名為 java 的檔案 56 28
CD: 改變工作目錄, 語法為 : CD 目錄名稱 其中.. 表示上一層目錄, \ 表示根目錄表示根目錄 當目錄名稱目錄名稱以 \ 為首時, 表示絕對路徑, 相對於根目錄 當目錄名稱目錄名稱不以不以 \ 為首時, 表示相對路徑, 相對於目前工作的目錄 57 Java Environment 58 29
Dot NET Environment 59 30