1-2 Java 語言的特性
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)。所謂物件導向的特性就是敘述類別的特質如何,一般來講有三大特性,如下:
很可惜,本書並沒有敘述到如何處理物件導向的相關技巧,如有興趣的話,可繼續閱讀本書的延伸『Java 程式設計(二)含物件導向』。 |
翻轉工作室:粘添壽
Java 程式設計(一) 含程式邏輯
翻轉電子書系列:
|