C++之父Bjarne Stroustrup在他的FAQ裡曾如此評論 Java:「和許多新語言一樣,Java之所以相對起來比較簡單,部分是錯覺,部分是由於還不夠完備。隨著時間流逝,Java必定會膨脹、複雜,體積會成長兩到三倍,會增加許多與實作環境相關的延伸功能或程式庫。這是任何雄霸商場的語言必經之路。只要看看任何一個你認為有相當成就的語言,你會發現毫無例外。」

很不幸,一語成讖。這年頭學Java越來越辛苦了。想當年,Java尚以簡潔苗條著稱,入門書大概只要負責講OO、容器、I/O,頂多再講點執行緒、AWT/Swing,就可算稱職。現在呢?如果不把J2SE 1.4到5.0新增的語法改進交代一下(融入正文更好),就可能被評為過時、不詳實,真是感慨萬千。

這也難為了 Java 入門書作者,因為讀者總是希望便宜又大碗,最好只要買一本書,就能涵蓋所有可能需要知道的東西(或者所有可能會考出來的),但現實上,廣度與深度卻往往難以兼顧。

如果你想找一本「單站購足」的Java入門書籍,在最短的時間內,對整個Java核心有某種程度的掌握,那麼,朱仲傑這本不斷隨Java改版的書,極力在廣度與深度之間取得平衡,應能滿足你的需求。
當然啦,如此一來,你也別期望這本書的厚度少於4公分。

可讓你吃到飽的書
以廣度而言,本書共分為五大部份。一開始的「認識篇」介紹最簡單的Java編譯及執行環境,「基礎篇」介紹Java基本資料型態及流程控制語法。接下來的「進階篇」正式探討Java的物件導向核心:類別、繼承、介面、記憶體、Object,以及伴隨而來的套件、例外處理等管理措施,乃至Application與Applet的介紹。「GUI 篇」介紹 AWT 及事件系統,「內功篇」介紹繪圖、inner class、wrapper class、I/O、執行緒、容器、網路等進階內容。

本書的八篇附錄,洋洋灑灑列出自J2SE 1.4以來陸續引進的 assertion、Java Web Start、nio、格式化 I/O、泛型、enum、annotations 等讓人津津樂道的新功能,雖然以份量而言,初學者未必適合也未必有能力在此刻全盤吸收,但至少先瀏覽一遍,有個印象,日後要用到時,就會想起Java還有這麼一個法寶。

以深度而言,或許是作者想達到封底文案「內容涵蓋 SCJP 認證考試範圍,幫助你考取SCJP」的訴求,全書鉅細靡遺,不管是你現在該知道的,或者明年才會用到的語法注意事項,全都寫了進去。尤其是附錄,不僅可看出作者與時俱進的用心程度,甚至單獨抽出來另成一本書也毫不遜色。所以這本書應該可以陪伴你很長一段時日。

平易近人的文筆,間或帶以詼諧的本土化引喻,親切感十足,是一佳作。只不過以讀者角度而言,有三個地方尚有改善空間。一、或許是篇幅所限,或許是下筆時間先後不一,八篇附錄的敘述風格與其他章節差異較大。二、某些句子或段落過於冗長,讀來費力,像8-12頁有這麼一句話:「如果在不同Package中可以產生物件或是繼承後存取類別成員和直接使用父類別的成員。」如果重新斷詞斷句,再多點示意圖,會更易吸收。三、翻遍全書,似乎除了附錄的Web Start寥寥數語之外,沒有交代如何將一堆class檔打包成jar檔,也沒有交代如何執行這樣的jar檔。個人認為,這種很普遍的部署形式,應該要多加著墨。

這年頭,老師也很難伺候
當老師的,在選擇教材時,通常還會注意到是否有搭配範例程式原始碼、習題和投影片。

我是個懶人,上課時能在電腦上將投影片、範例程式一路秀到底最好,最好不要再動到會弄髒手指的黑板白板。不過本書示意圖較少(尤其是物件導向觀念、例外處理、I/O等章節),往往得自行補繪,才能把密密麻麻的文字敘述及程式碼鮮活起來。這投影片又是屬於摘要重點、條列綱目的簡約風格,書本有的示意圖也常常漏掉,所以,如果我以投影片為主軸動線,把書本晾在一旁,可能會漏掉許多該講的項目。

唉,這年頭作者也不好當啊!尤其是遇到我這種既懶惰又挑剔的老師。

《作者簡介》葉秉哲
交通大學資訊科學系博士後研究員,過著研究、顧問、授課、寫作的組合式生活。曾在國立交通大學、明新科技大學、國立台北護理學院等地授課,學術研究興趣計有:分散式系統、軟體工程、人工智慧、自然語言處理,譯有《C++》、《Design Patterns》等聖經本。

熱門新聞

Advertisement