Java 程式設計()  第一章 認識 Java 與程式開發  上一頁    下一頁

 

1-2 Java 語言的特性

內容:

  • 1-2-1 程式移動性高

  • 1-2-2 豐富程式套件

  • 1-2-3 物件導向特性

1-2-1 程式移動性高

有個單純的想法,如果將程式語言(如 C 語言)標準化,而一般資訊系統也具備標準化的編譯器(如 C compiler),則利用標準化所編寫的軟體套件,應該很容易的移植到其他系統才對。如圖 1-3 所示,程式設計師在 Windows 系統上,利用某種程式語言編寫出一套應用系統,如果將其移植到 Linux Mac 系統上,只需使用該種程式語言的編譯器重新編譯,就可在該系統上執行,目前有許多廣為流傳的軟體套件(如 Apache MySQL)就是使用這種概念。事實上並非總是如此容易,每套資訊系統都有其特殊的屬性,利用標準語言所編寫的程式,許多地方不能滿足其他系統環境所需,而需要特殊的更改。針對比較大的軟體套件,依照系統更改某些程式內容,還能滿足經濟效益;如果對某些較小的軟體程式,可能乾脆直接重寫還比較省事。

1-3 傳統語言的軟體套件移植

會造成傳統軟體套件移植困難的主要癥結,是『編譯器』與『執行環境』之間的相依性;各種執行環境必須有特殊的編譯器配合,才能產生適合它執行的目的檔。Java 為了解決此癥結,乾脆將編譯環境與執行環境分開,成為兩套工作環境,如下:(如圖 1-4 所示)

(1) Java 軟體發展環境(Java Software Development Key, JSDK):提供 Java 程式編譯與連結相關軟體套件,是一套完整的 Java 程式開發系統;主要工具是 Javac 編譯器,以及 Java.* 套件。Java 程式經由 javac 編譯後,將會產生一個稱之為 Bytecode(中介碼)的檔案,並以 class 作為檔案型態。

(2) Java 虛擬機械(Java Virtual Machine, JVM:提供執行 Bytecode 的環境。主要是執行 java 編譯完成後的機械碼。我們可以在各種系統上發展與 JVM 相容的工作環境,如此便能執行其他系統所發展的 Java 軟體,如圖 1-4 所示。

1-4 Java 程式開發與執行環境

Java的優勢在於,各種電腦系統都可使用Java 虛擬機械』(JVM執行由任何主機發展出來的 Bytecode 程式,漂亮地能解決機械碼的相依性問題。其實 JVM 的功能很像『全球資訊網』(WWW)的瀏覽器功能,不論哪種主機電腦都可安裝瀏覽器(如 IE),顯示由各式各樣不同的電腦系統、應用軟體所製作的網頁。Java的概念跟瀏覽器相似, 將開發環境與執行環境分開,減低兩者之間的相依性,使得任何系統所開發的 Java 程式都可容易的移植到其他系統上執行。

1-2-2 豐富程式套件

執行環境與發展環境分開之後,開發軟體時則可不用考慮真實執行環境如何,如此一來,開發及連結導入軟體套件則更加容易。按照 Java 標準語法發展出的套件,將可容易的被導入其他 Java 軟體程式內使用。雖然各種傳統語言大多會提供一些較常用的『庫存函數』,但如果牽涉到較複雜的應用環境時(如視窗環境),庫存函數大多與執行環境有關。因此,需針對系統(如 Windows 系統)的屬性,開發出專屬的庫存函數(如 Visual 函數)。Java 則不然,有關工作環境都由 JVM 環境處理,與開發環境無關,開發軟體套件時大多不用去理會真實執行環境;因此,許多人願意去開發軟體套件,也可容易的使用他人所發展的套件,如圖 1-5 所示。

1-5 Java 的軟體 IC 功能

既然開發出來的程式套件可應用於任何系統,我們就可以針對某些特殊功能製作成程式套件,以供他人使用。這種現象就如同硬體的 IC 晶片一般,每一只 IC 晶片都提供有某一特殊功能,將多個晶片組合在一起,就成一個專屬裝置設備;同樣的,組合多個Java程式套件,即可成為一個特定應用的軟體套件,這就是所謂『軟體 IC』(Software IC的特性。

1-2-3 物件導向特性

 

早期談到 Java 語言大多離不開物件導向的功能,可說是 Java 最為特殊的特質。但以目前軟體領域的發展,幾乎所有發展軟體工具都具有物件導向功能,簡單說,物件導向不再是 Java 的專屬特性。利用物件導向發展工具所建立的軟體,大多由若干個類別(Class) 所構成,每一個類別實現某一個特殊功能,類別可能是由程式設計師自己編寫而成,也可能來自其他套件得到(如此則稱為軟體 IC)。所謂物件導向的特性就是敘述類別的特質如何,一般來講有三大特性,如下:

  • 封裝性(Encapsulation)每一類別都具有封裝性,類別僅提供輸入/輸出介面,讓使用者呼叫引用,類別內的程式碼與變數與外界程式具有隔離性,亦是,無法直接呼叫或存取變數。具有此特性,類別才允許任意移值使用,不會受到其他類別程式限制,如此才能具有軟體 IC 的功能。

  • 繼承性(Extends)類別可以再擴充產生新的類別,新類別除了具有原父類別功能外,還可增加其他功能,這就是繼承性。

  • 多型性(Polymorphism)一般程式語言的函數呼叫最大限制就是資料型態,物件導向所建構的類別可以隨需要自動改變相對應的資料型態,這就是多型性。譬如,我們建構一個加法器(add(x, y)),當引數 x y 是整數時,則回傳結果是整數;呼叫同樣類別,當 x y 是浮點數時,則回傳是浮點數。如果其他傳統程式設計的話,則必須分開製作一個回傳整數,另一個回傳浮點數。

 

翻轉工作室:粘添壽

 

Java 程式設計(二) 含物件導向

 

 

翻轉電子書系列: