Java
遵循封裝、繼承與多型,實踐物件導向的精神
橫跨作業系統、行動裝置與瀏覽器的程式語言

Java是可以撰寫跨平臺應用的物件導向程式語言,它的前身名為「Oak」。Oak是1991年昇陽成立「綠色計畫(Green Project)」的機密小組,希望解決諸如電視機、電話等消費性電子產品的控制與通訊問題,因此他們著手設計出這套程式語言。

綠色計畫早期的成員有Patrick Naughton、James Gosling、Mike Sheridan等人,但由於市場需求不如預期,所以昇陽放棄了這個計劃。就在Oak幾近失敗之際,網際網路蓬勃發展,於是昇陽改造Oak,在1995年以「Java」為名正式發布。

Java是介於編譯式(Compiling)與直譯式(Interpreted)的混合式語言(Hybrid Language)程式語言,它將原始碼編譯成位元碼(Byte Code),然後再由各種作業系統的虛擬機(Java Virtual Machine)編譯成可執行的二進位元碼(Binary Code),實現「一次編譯、到處執行(Write Once,Run Everywhere)」的跨平臺特性。在跨平臺的同時,一定程度地犧牲了Java程式的執行效能,不過,隨著Java本身的改良,以及硬體設備的快速發展,已大幅降低跨平臺對效能的影響。

昇陽將Java分為J2EE(Java 2 Enterprise Edition)、J2SE(Java 2 Standard Edition),及J2ME(Java 2 Mobile Edition)3種平臺,J2EE定位在中大型商業中的應用,J2SE定位於桌上型電腦的應用,J2ME主要應用於小型及移動裝置的應用。

2005年,以上名稱全面更名為Java EE、Java SE與Java ME,以解決版本受限於「2」的編碼困擾。事實上,而且由於對標準的支援度不一,目前Java ME與Java EE的程式,仍無法能做到順暢地跨平臺執行。

昇陽將Java視為開放的技術,所以Java標準並非由昇陽把持,而是由JCP(Java Community Process)組織成員投票制定Java的各項規格,目前IBM、BEA、Oracle、Borland、SAP等全球知名的軟體公司,均是JCP的成員。文⊙李延華

--------------------------------------------------------------------------------------------
Object
物件

物件導向(Object-Oriented)的觀念,相對於程序導向(Procedure-Oriented),其實更貼近真實世界的思考方式。

程序導向的設計方法,採用的是貼近電腦程序運作的思考方式,當設計者嘗試要解決的問題愈形複雜時,人類便不易以程序導向的思考方式處理。而物件導向是依照人類觀察與理解真實世界的方式,分析和解決問題。因而使得解決問題的方法與問題本身更容易對映。

Inheritance
繼承

繼承的觀念,類似生物學的域、界、門、綱、目、科、屬、種的級別,是一種階層式分類的觀念。在程式開發領域,如果沒有階層,每個物件就必須明確地定義自己所有的特性。利用繼承,物件可以從父類別繼承共同的屬性與方法,只需要定義自身特有的屬性即可。

透過繼承可以達到程式碼的再用性的目的,而另一個目的是為「多型」做準備,至於多型是什麼,繼續看下去吧!

Exception
例外處理

程式編譯完成之後,沒有錯誤發生,不代表完美無缺。因為編譯器只檢查語法的正確性,但有些錯誤可能源自使用者的操作方式超出預期,或者軟、硬體故障,若是程式設計得不夠嚴密,便可能發生問題。

許多程式語言針對錯誤狀況只會回傳特定的錯誤代碼,而在Java中,只要以Try/Catch區塊包覆程式,便會自動捕捉任何錯誤。

Class
類別

物件不是憑空產生,開發者必須以一個規格書定義物件,這個規格書稱為:類別(Class)。

定義物件時,必須聲明這個物件具備的屬性(Java稱之為「Field」)和方法(Method)。屬性是物件本身的特徵或狀態,例如形容「人」這個物件,會標明膚色、髮型、身高及性別等靜態特性。而方法則是哭、笑等與外界互動的動態特性。

Polymorphism
多型

多型是建立在繼承的基礎之上,只繼承介面,但修改了程式的內容。

例如,狗的父類別(Super Class)──犬科,中有一個名叫做Stock() 的方法,用來表示被丟石頭的反應,次子類別──狼狗,繼承了父類別的Stock()方法,這兩個方法都稱為Stock(),但作法上不同,程式碼也不同,狼狗的Stock()方法將蓋掉(Override)父類別的Stock()方法。

Thread
執行緒

多工(Multi-tasking)是大家比較熟悉的技術,意即讓作業系統同時執行一個以上的應用程式。例如在Windows下開啟Word,同時聽音樂又上網瀏覽新聞,便是典型多工的表現。

而執行緒則是正在執行的程式的一個子流程,一個程式可以包含多個執行緒,也就是同時執行多個子流程,例如網路程式在接收資料的同時,也在計算並顯示結果。

Encapsulation
封裝

封裝的用意是「包裹」物件內部複雜的邏輯運算與資料處理程序,目的是為了達到獨立性,開發者只需負責分析與設計各自的物件,不必了解其他物件運作的原理。其他人若要重複叫用這個物件,也比較容易。

非物件導向的設計方法,也會利用副程式以及參數呼叫重複使用的功能,但副程式只是一段邏輯的敘述,必須所有條件完全相符,才能叫用副程式,因此缺乏獨立的特性。

Garbage Collection
垃圾回收

垃圾回收機制早已行之有年,不過,有些語言例如C++必須手動管理記憶體,但是開發者可能會忘記釋放不再需要的資源,或誤釋仍在使用中的資源,因此一不小心就會寫出可能會當機的程式。

而Java改為自動管理,便避免了這個問題。Java中的物件透過參照(Reference)存取,一旦垃圾回收機制發現某個物件沒被參照,就會將它回收。

Applet
Applet是由英語的「應用程式(Application)」的縮寫「App」,和代表「小」的尾碼「let組成」。Applet是以Java語言開發,設計經由網際網路傳送,可執行於Java相容的瀏覽器或者AppletViewer的用戶端應用程式,開發者可以利用Applet程式補強HTML的不足。

Applet跟影像、聲音檔,或影片檔一樣,是動態經由網路下載,但與這些多媒體檔案最大的不同點,在於Applet是小型的應用程式,所以不只是反覆執行相同的動畫或聲音而已,它可以根據使用者輸入的資料做出反應。

熱門新聞

Advertisement