程式語言與Java的基礎 1-1 程式語言的基礎 1-2 Java的基礎 1-3 Java語言的開發環境 1-4 建立Java語言的開發環境
1-1 程式語言的基礎 1-1-1 程式、軟體與應用程式 1-1-2 程式語言的種類 1-1-3 低階語言 1-1-4 高階語言 1-1-5 程式是如何執行
1-1 程式語言的基礎 「程式語言」(Programming Languages)如同人與人之間溝通的語言,它是人類告訴電腦如何工作的一種語言,即人類與電腦之間進行溝通的語言。 以技術角度來說,程式語言是一種將執行指令傳達給電腦的標準通訊技術。
1-1-1 程式、軟體與應用程式-程式 「程式」(Programs)是使用指定程式語言所撰寫沒有混淆文字、數字和鍵盤符號組成的特殊符號,這些符號組合成指令和敘述,再進一步編寫成程式碼,程式碼可以告訴電腦解決指定問題的步驟。 簡單的說,程式就像是一個轉換器,當從電腦鍵盤或滑鼠取得輸入資料後,執行程式就可以將資料轉換成有用的資訊,如下圖所示:
1-1-1 程式、軟體與應用程式-軟體與應用程式 「軟體」(Softwares)是一種電腦執行的應用程式或作業系統,通常軟體是一個或多個程式的泛稱,或整套應用程式。 「應用程式」(Applications)是一種處理指定工作的電腦程式,例如:數學計算分析、文書處理、試算表和程式語言整合開發工具等。
1-1-2 程式語言的種類-說明 程式語言隨著電腦科技的進步,已經延伸出龐大的族群。在程式語言的分類上,使用發展世代來區分可以分為五世代,如下表所示: 世代 程式語言 第一世代 機器語言(Machine Languages) 第二世代 組合語言(Assembly Languages) 第三世代 高階語言(High Level Languages) 第四世代 應用程式產生的語言(Application-Generation Languages)或查詢語言(Query Languages) 第五世代 邏輯導向語言(Logic-Oriented Languages)
1-1-3 低階語言-說明 低階語言(Low Level Languages)是一種偏向電腦容易了解的程式語言,簡單的說,它是電腦看得懂的程式語言。所以執行效率高,但是使用者並不易學習。主要的低階語言有兩種: 機器語言。 組合語言。
1-1-3 低階語言-機器語言 機器語言(Machine Language) 機器語言的程式是使用0和1二進位來表示的程式碼,電腦可以直接執行機器語言的程式碼,所以執行效率最高,如下所示: 0111 0001 0000 1111 1001 1101 1011 0001
1-1-3 低階語言-組合語言 組合語言(Assembly Language) 組合語言是使用簡單符號的指令集來代表機器語言0和1表示的二進位程式碼。其建立的程式碼只需使用「組譯程式」(Assemblers)就可以轉換成機器語言,然後在電腦上執行。組合語言是一種十分接近機器語言的程式語言,如下所示: MOV AX 01 MOV BX 02 ADD AX BX
1-1-4 高階語言-說明 高階語言(High Level Languages)是一種接近人類語言的程式語言,或稱為半英文(Half-english)的程式語言。因為電腦不能馬上看的懂,所以需要進一步翻譯,在轉換成機器語言後,其轉換的程式碼通常比直接使用機器語言撰寫的冗長,所以效率較低,但是非常適合使用者學習。 目前常見的高階語言有:BASIC、C/C++、C#、Java、FORTRAN、COBOL和Pascal等。
1-1-4 高階語言-編譯語言 編譯程式(Compilers) C/C++等程式語言屬於編譯語言,編譯程式需要檢查完整個程式檔案的程式碼,在完全沒有錯誤的情況下,才會翻譯成機器語言的程式檔案,其主要功能有兩項,如下所示: 檢查程式錯誤。 將程式翻譯成機器語言的程式檔案。
1-1-4 高階語言-直譯語言 直譯程式(Interpreters) 早期BASIC語言(例如:BASICA、QuickBasic等)和目前網頁技術的「腳本」(Scripts)語言,例如:VBScript和JavaScript都屬於直譯語言。 直譯程式在處理程式碼時,並不會輸出可執行檔案,而是直接一個指令一個動作,一列一列的執行程式碼,相對的,其執行效率低,但是非常適合在系統開發階段的程式除錯。
1-1-5 程式是如何執行-說明 程式在電腦實際執行的過程對於高階程式語言來說,例如:BASIC或PASCAL等並非十分重要。不過,對電腦執行程式有一定的認識,在設計程式時仍然有十分大的助益。 不論使用高階或低階程式語言,其建立的程式最後都會編譯成電腦看的懂的機器語言,這些指令是CPU支援的「指令集」(Instruction Set)。不同CPU支援不同的指令集,換句話說,雖然高階語言有很多種,但是CPU只懂一種語言,也就是其能執行的機器語言。
1-1-5 程式是如何執行-圖例
1-1-5 程式是如何執行-執行程式 CPU執行機器語言程式是依序將儲存在記憶體的機器語言指令「取出和執行」(Fetch-and-execute)。 簡單的說,CPU就是從記憶體取出指令,然後執行此指令,取出下一個指令,再執行它。CPU執行程式的方式,如下所示: 電腦的主記憶體儲存機器語言的程式碼和資料。 CPU從記憶體依序取出一個個機器語言指令,然後執行它,CPU並非真正了解機器語言在作什麼?這只是CPU的例行工作,依序執行機器語言指令。
1-1-5 程式是如何執行-中央處理器 電腦CPU提供實際運算功能,個人電腦都是使用單晶片的「IC」(Integrated Circuit),其主要的功能是使用「ALU」(Arithmetic and Logic Unit)的邏輯電路進行運算,以便執行機器語言的指令。 在CPU擁有很多組「暫存器」(Registers),暫存器是位在CPU中的記憶體,可以暫時儲存資料或機器語言指令,例如:執行加法指令需要2個運算元,這兩個運算元資料就是儲存在暫存器。
1-1-5 程式是如何執行-記憶體(說明) 當我們執行程式時,作業系統可以將儲存在硬碟或軟碟的執行檔案載入電腦主記憶體(Main Memory),這就是CPU執行的機器語言指令,CPU從記憶體依序載入指令和執行。 事實上,程式碼本身和使用的資料都是儲存在RAM(Random Access Memory),每一個儲存單位有數字編號稱為「位址」(Address)。如同大樓信箱,門牌號碼是位址,信箱內容是程式碼或資料,儲存資料佔用的記憶體空間大小,需視使用的資料型態而定。
1-1-5 程式是如何執行-記憶體(存取) 電腦CPU中央處理器存取記憶體資料的主要步驟,如下所示: Step 1:送出讀寫的記憶體位址:當CPU讀取程式碼或資料時,需要送出欲取得的記憶體位址,例如:記憶體位址4。 Step 2:讀寫記憶體儲存的資料:CPU可以從指定位址讀取記憶體內容,例如,位址4的內容是01010101,換句話說,取得資料是01010101的二進位值,每一個0或1是一個「位元」(Bit),8個位元稱為「位元組」(Byte),這是電腦記憶體的最小儲存單位。
1-1-5 程式是如何執行-輸入/輸出裝置 電腦的輸入/輸出裝置(Input/Output Devices)是程式的窗口,可以讓使用者輸入資料和顯示程式的執行結果。 目前而言,電腦最常用的輸入裝置是鍵盤和滑鼠;輸出裝置是螢幕和列表機。
1-1-5 程式是如何執行-次儲存裝置 次儲存裝置(Secondary Storage Unit)是一種能夠長時間和提供高容量儲存資料的裝置。電腦程式與資料是在載入記憶體後,才依序讓CPU來執行,不過,在此之前這些程式與資料是儲存在次儲存裝置,例如:硬碟機。 當我們在Windows作業系統使用【記事本】編輯Java程式碼時,這些資料只是暫時儲存在電腦的主記憶體,因為主記憶體在關閉電源後,其儲存的資料就會消失,為了長時間儲存這些資料,我們需要將它儲存在電腦的次儲存裝置,即儲存在硬碟中的程式碼檔案。
1-2 Java的基礎 1-2-1 Java平台 1-2-2 Java語言的版本 1-2-3 Java程式語言的特點
1-2 Java的基礎 「Java」(爪哇)比起傳統程式語言C/C++、PASCAL和BASIC語言來說,算是一種很新的電腦語言,它是一種類似C++語言的編譯式語言,不過並不完全相同,因為它是結合編譯和直譯優點的程式語言。
1-2-1 Java平台-說明 「平台」(Platform)是一種結合硬體和軟體的執行環境,簡單的說,Java程式是在平台上執行,因為Java屬於一種與硬體無關和跨平台的程式語言,所以Java平台是一種軟體平台,主要是由JVM和Java API兩個元件所組成。
1-2-1 Java平台-JVM虛擬機器(說明) 「JVM」(Java Virtual Machine)虛擬機器是一台軟體的虛擬電腦,Java原始程式碼並不是使用Java編譯程式(Java Compiler)編譯成其安裝實體電腦可執行的機器語言,而是JVM虛擬機器的機器語言,稱為「位元組碼」(Bytecode)。 位元組碼是一種可以在JVM執行的程式,換句話說,電腦作業系統需要安裝有JVM,才可以使用Java直譯程式(Java Interpreter)來直譯和執行位元組碼。
1-2-1 Java平台-JVM虛擬機器(圖例) Java原始程式碼(副檔名.java)在編譯成位元組碼(副檔名.class)後,即可在Windows、UNIX或Machintosh的Mac OS作業系統上執行。
1-2-1 Java平台-Java API Java API(Java Application Programming Interface)是軟體元件的集合,也就是在C/C++語言所謂的函數庫,提供集合物件、GUI元件、檔案處理、資料庫存取和網路等相關的類別和介面,稱為「套件」(Packages)。
1-2-2 Java語言的版本-標準版演進 版本 日期 說明 1.0 1996/1 Java Development Kit 1.0版(JDK 1.0) 1.1 1997/2 Java Development Kit 1.1版(JDK 1.1) 1.2 1998/12 Software Development Kit 1.2版(SDK 1.2),開始稱為Java 2平台 1.3 2000/5 平台名稱J2SE(Java 2 Platform, Stardard Edition),產品名稱是Software Development Kit 1.3版(SDK 1.3),也稱為Java 2 1.3版 1.4 2002/2 平台名稱J2SE,產品名稱是SDK 1.4,也稱為Java 2 1.4版 5.0 2004/9 平台名稱J2SE 5.0,產品名稱是J2SE Development Kit 5.0版(JDK 5.0),其開發版號為JDK 1.5.0 SE 6 2006/12 平台名稱Java SE 6,產品名稱是Java SE Development Kit 6(JDK 6),其開發版號為1.6.0 SE 7 2011/07 平台名稱Java SE 7,產品名稱是Java SE Development Kit 7(JDK 7),其開發版號為1.7.0
1-2-2 Java語言的版本-Java SE 7版 Java SE 7是Jave語言的最新版本,也是甲骨文(Oracle)併購昇陽(Sun)公司後,首次發表Java平台的最新版本。Java SE 7版包含很多全新功能、增強功能與錯誤修正,可以全方面提昇開發與執行Java程式的效能。 Java SE 7除了修正不少漏洞及提昇整體效能外,更提供Ruby、Python和JavaScript語言的支援,並且針對多核心環境新增全新API,和大幅提升JVM效能,和全新檔案系統API,支援非同步I/O。
1-2-3 Java程式語言-特點 Java是一種簡單、功能強大、高效能和物件導向 的程式語言,不只如此,Java還擁有一些傳統程 式語言所沒有提供的特點,如下所示: 分散式(Distributed) 多執行緒(Multi-Threading) 垃圾收集(Garbage Collection) 例外處理(Exception Handling)
1-2-3 Java程式語言-分散式 分散式(Distributed)
1-2-3 Java程式語言-多執行緒 多執行緒(Multi-Threading) Java語言支援多執行緒,在同一程式能夠建立多個執行的小程式,稱為「輕量行程」(Light Weight Process),以便執行不同的工作,並且支援同步功能,能夠避免「死結」(Deadlock)情況的發生。
1-2-3 Java程式語言-垃圾收集 垃圾收集(Garbage Collection) 垃圾收集是指如何處理程式不再使用的記憶體空間,Java語言擁有垃圾收集能力,程式設計者不用擔心記憶體配置的問題,因為在執行Java程式時,自動會將不再使用的記憶體歸還給作業系統。
1-2-3 Java程式語言-例外處理 例外處理(Exception Handling) 電腦程式不可能沒有「小臭蟲」(Bugs),一些小錯誤可能只會產生錯誤結果,但是有一些小錯誤可能導致嚴重的系統當機問題。 Java語言的例外處理可以讓程式更加「強壯」(Robust),這算程式執行時遇到不尋常的情況,也不會造成程式「崩潰」(Crashing)或整個系統當機。
1-3 Java語言的開發環境–說明 程式語言的「開發環境」(Development Environment)是一組工具程式用來建立、編譯和維護程式語言建立的應用程式。一般來說,我們可以使用兩種Java開發環境來建立Java應用程式。
1-3 Java語言的開發環境–終端機 終端機模式的開發環境 對於傳統MS-DOS或UNIX、Linux系統的使用者,或稱為「終端機」(Terminals)模式,程式執行環境輸入資料和輸出資料都是「命令列模式」(Command-line Interface),即文字模式的鍵盤輸入或單純文字內容的輸出。 在終端機模式的開發環境只需安裝Java開發工具「Java Development Kit」(JDK)和設定好環境參數,然後配合vi、edit或記事本等程式碼編輯工具,就可以開發Java應用程式。
1-3 Java語言的開發環境–整合開發環境 整合開發環境 對於高階程式語言來說,大多擁有「整合開發環境」(Integrated Development Environment,簡稱IDE),可以在同一個應用程式編輯、編譯、執行和除錯特定語言的應用程式。 目前巿面上有相當多套支援Windows作業系統的Java整合開發環境,在搭配JDK後,就可以在同一工具軟體編輯、編譯和除錯Java程式。常見Java整合開發環境,如下所示: Eclipse。 NetBeans IDE。 Borland JBuilder。 JCreator。
1-4 建立Java語言的開發環境 1-4-1 安裝與設定JDK 1-4-2 安裝與啟動Eclipse IDE
1-4-1 安裝與設定JDK-說明 一般來說,有些整合開發環境在安裝時就會一併安裝JDK,例如:JBuilder,不過,大部分整合開發環境需要自行安裝JDK,本書使用的版本是JDK 7(Java SE Development Kit 7),其下載網址為: http://www.oracle.com/technetwork/java/javase/downloads/index.html
1-4-1 安裝與設定JDK-移除舊版JDK 移除舊版JDK 如果在Windows電腦已經安裝舊版JDK,基於安全性考量,建議移除舊版JDK,如下圖所示:
1-4-1 安裝與設定JDK-安裝JDK 7 安裝JDK 7 JDK 7更新版本並不是使用「.」後的次版號來表示,而是改為更新Update來標示,以本書為例是使用JDK 7 Update 10,其下載Windows版JDK的檔名為【jdk-7u10-windows-i586.exe】;64位元是【jdk-7u10-windows-x64.exe】後,我們只需執行此檔案就可以安裝JDK 7。
1-4-1 安裝與設定JDK-設定JDK 設定JDK 設定JDK就是在Windows作業系統新增環境變數Path的搜尋路徑「C:\Program Files\Java\jdk1.7.0_10\bin」,其中「C:\Program Files\Java\jdk1.7.0_10\」是JDK安裝路徑。
1-4-2 安裝與啟動Eclipse IDE-說明 Eclipse IDE原為IBM公司發起的開發專案,其目的是開發一套免費且開放原始碼的整合開發環境,支援多種程式語言的應用程式開發,例如:Java、JavaScript和C/C++等語言。Eclipse IDE需要安裝JRE才能執行,其下載網址為: http://www.eclipse.org/downloads/ 因為我們是安裝Java SE,請選【Eclipse IDE for Java Developers】後的下載連結【Windows 32 Bit】,即可下載最新版的Eclipse IDE。
1-4-2 安裝與啟動Eclipse IDE-安裝 以本書為例是使用Eclipse JUNO 4.2版SR1,64位元的下載檔名為ZIP格式壓縮檔【eclipse-java-juno-SR1-win32-x86_64.zip】,因為Eclipse IDE並沒有安裝程式,我們只需解壓縮至指定資料夾,例如:「C:\Java_IDE\eclipse」,和建立捷徑即可完成安裝,如右圖所示:
1-4-2 安裝與啟動Eclipse IDE-啟動 在安裝Eclipse IDE和建立桌面捷徑後,我們就可以啟動Eclipse IDE,請按二下上述建立的桌面捷徑來啟動Eclipse IDE,稍等一下,可以看到「Workspace Lanucher」選取工作空間對話方塊。 選擇工作空間(Workspace,這是包含專案和設定檔案的資料夾),請按【Browse】鈕選擇本書預設的範例目錄「C:\JavaEx\Ch02」,按【OK】鈕,稍等一下,可以看到Eclipse IDE整合開發環境,顯示Welcome歡迎頁面。
1-4-2 安裝與啟動Eclipse IDE-圖例