首頁
中文書目錄
原文書目錄
 站內快速搜尋
資源中心
Book Series
Special Interest













■好消息,歐萊禮書籍已重新鋪貨至各大書局及網路書店,歡迎讀者選購       ■歡迎各院校採用歐萊禮書籍,學校團購請洽校園服務團隊

[技術短文]

為什麼要學 Java?


如果你常玩電腦,你可能知道 Java 是一個運算平台,而非咖啡或印尼的一個島。在 Java 技術誕生後的這五年,Java 變成了大家朗朗上口的名詞,種種的說法中,有些是事實,有也一些誇大不實。你可能會想知道:你該不該去學 Java,我給你的答案是肯定的,請聽聽我的說法。

Java 是什麼?

你必須先瞭解 Java 究竟是什麼?當人們提到「Java」,他們指的可能是:
  1. Java 程式語言:一個類似 C++ 或 Smalltalk 的物件導向程式語言。學習 Java 程式語言類似學人類語言,都有一套規則和文法。
  2. Java 虛擬機器(JVM):用來執行 Java 程式。JVM 有許多平台的版本,比方說 Linux 和 Windows 版。有了 JVM,Java 程式就可以在不同的平台上執行,也就是所謂的「寫一次,到處都可執行」。
  3. Java APIs(指的是函式庫的程式設計介面):是一組預先定義好的類別,可以在你的程式中直接使用。這些東西是免費的,功能包含了像是檔案存取,網路讀寫,圖形介面等等。
當人們提到「學習 Java」,通常他們指的是 Java 語言和 API。大家可能對 JVM 所知不多,雖然對 JVM 有基本的認識對 Java 的學習是很有幫助的。



物件導向程式設計

物件導向程式設計已經廣為接受,凌駕於傳統的程序導向程式設計。物件導向程式設計帶來許多額外的威力,但物件導向的學習曲線也較陡。如果你已經懂一套物件導向語言,那麼你學 Java 就會容易多了。

如果你不瞭解物件導向程式設計,你有一個漫長的旅程必須經歷。以我自己來說,我花了約四年的光陰,才領悟了物件導向的精髓,不過這四年我的學習是蠻隨興的。如果你正在上好老師的課,或正埋首於一堆好書之中,或許可以縮短到幾個月就夠了。千萬別輕忽物件導向觀念的學習,因為 Java 語法好學,但是要寫出良好的物件導向程式可不容易。



學習 Java 的理由中,有些是技術性的,有些則是非技術性的。我先描述兩個程式的特色(垃圾蒐集和例外處理),然後我告訴你:為什麼在程式設計的領域中,Java 幾乎是必備的技能。我也會告訴你 Java 開發工具的資訊和它們吸引人的售價。

感謝老天,有「垃圾收集」真好!

使用 C++,你可能一不小心就寫出會當機的程式;如果使用 Java,情況就大不相同了。C++ 程式的頭號 bug 是記憶體配置的失誤。C++ 的程式員很辛苦,必須直接配置一塊記憶體,這塊記憶體不用時還必須主動歸還。這聽起來簡單,做起來可不容易,所以 C++ 的程式常常會耗盡記憶體。

Java 就不同了。雖然你仍需要主動配置記憶體,但此記憶體一旦不再使用時就會自動釋放, 這就稱為「垃圾收集(garbage collection)」。垃圾收集機制使得寫程式時輕鬆許多,雖然因此執行時效率稍微變差, 但影響可能輕微得你根本感覺不到。

例外處理機制讓程式更穩固

不管是什麼程式語言,都可以輕易地寫出很糟糕的程式,但是使用 Java 想寫出很糟糕的程式就不容易了。原因之一是垃圾收集,原因之二是「例外處理機制」。良好的程式員寫出來的程式應該在一些意外狀況發生時程式依然正常。檔案無法開啟,怎麼辦?萬一讀檔讀到一半時出問題,怎麼辦?如果你是用 C++ 或其它語言,你可能會疏於考慮而沒進行這些意外狀況的處理。你可能會辯白:「我只是在試試看這樣寫能否行得通,我稍後會回過頭來把程式改得更周延」。但結果通常是:程式執行正常後,你又會忙著寫新的程式,這麼一拖後來就忘了回頭處理還不完整的部分。問題終究還是會爆發出來,你終究還是要面對爛攤子。

Java 強迫你在一遇到有可能出問題的地方就要準備好因應之道。Java 的 method 可以丟出例外,用來通知呼叫者程式出狀況了,這是相當好的機制。即使你的程式要開啟檔案,你都必須在程式中寫好例外處理方式。

到處都是 Java

到處都可見到 Java,這是一大好處。如果你靠寫程式為生,你可能遲早都會接觸到 Java。Java 已經漸漸地滲透到各領域,你可以寫出 Java servlet,將其掛在 Apache 或其它網頁伺服器上,你可以寫出 Java applet,在網頁瀏覽器上執行。你甚至可以用 Java 寫出資料庫的 stored procedure,然後安裝到 Oracle 8i 上。

我打賭,你身邊使用 Java 的同事也會漸漸多起來。1997 年開始,許多大學已經用 Java 取代 C 當作程式設計教學的語言。如此一來,Java 變成了程式員共通的語言。如果學習 Java 所為你帶來的唯一好處是方便和同事溝通,那麼也值得。

最後,我要提的是:「寫一次,到處都可執行」。Java 早期版本(1.0 和 1.1)比較無法完全跨平台,但現在就好多了。如果你想散佈一個程式到多個平台,又不想改寫大部分的程式,那麼 Java 是絕佳的選擇。Java 2 現在已經可以在 Linux、許多 Unix、和 Windows 上執行了。

MacOS 9 的 Java 仍在 1.1 時代。然而,Apple 的下一代作業系統 OS X 是以 Unix 為核心,這使得移植軟體的過程大大簡化了。我不知道 Apple 官方的說法為何,但是在今年三月的時候,我就已經看到 OS X developer release 3 上面執行著 Java 2。我很有自信 Java 2 將可以在 Linux、OS X、和 Windows 上執行,這樣已經涵蓋了大部分的電腦世界。

Java 免費

Sun 提供 Java 相關的工具,讓你可以開發與執行 Java 程式。你無須支付授權費,你也不用花錢買 Java 開發工具。當然,Sun 這麼做自有他們的如意算盤,Scott McNealy(Sun 的老闆)恨不得能征服世界,但是不管怎樣,我們的的確確是不用付錢給任何人就可以享受 Java。

而且,Java 的 API 是珍貴的寶藏,讓我們可以輕易地寫出功能強大的程式。想寫網路程式?已經有 API 了!想連接資料庫?已經有 API 了!想寫 GUI 程式?已經有 API 了!或者是想做數位影像處理、音樂檔處理、字串剖析、數位簽章?通通有 API 了!身為一個程式員,有這麼多好用的 API 真的是再高興不過的事了,這些 Java API 讓我們不用「重新發明輪子」,省卻不少功夫。Java 有這麼廣泛、標準、先進的 API,簡直是讓 C++ 程式員忌妒死了。C++ 程式員常要花時間學一些 C++ 類別庫(比方說 MFC),然後到 Linux 上又得歸零學另一套(因為 Linux 上沒有 MFC)。一旦你學會了某 Java API,到哪兒都一樣不會變動,不用重學。

最後,Java 的資訊文件都可從網站上免費取得。如果你有網路而且有空,你可以直接透過網路學習物件導向、Java 語言、以及 Java API。Sun 在網站上放了一大堆很棒的線上教材。如果你習慣看書來學習,市面上有一堆 Java 的書可以參考(比方說,我寫的 Learning Java)。

日光浴

Java 比其它語言來得有趣許多。Java 程式語言有許多「防呆裝置」讓你不會在程式中犯下大錯,所以你可以很快地把程式寫完,而如果使用其它語言必須要花更多時間。一份有趣的資料顯示:用 Java 寫程式比用其它語言快了四到十倍。我知道這聽起來很不可思議,不過你可以問問週遭懂 Java 的人看看。不用花很多時間找 bug,意味著你可以在海灘上休息更久,意味著你可以接受陽光的日光浴而非「螢幕的日光浴」。用 Java 為你賺進的銀兩為自己買一副太陽眼鏡吧!
本文作者:Jonathan Knudsen(著有「Learning Java」、「Java 2D Graphics」等書

本文譯者:蔡學鏞
張貼日期:9/18/00

| 首頁 | 聯絡我們 |
© 2009, O'Reilly Media, Inc. Taiwan Branch