???籠統(tǒng)意義上的Java實際上已經(jīng)成為一個大迷宮,發(fā)展方向也非常不確定,即使是許多專業(yè)Java開發(fā)人員也無法了解全豹了。在這樣的大背景下評價Java圖書,其實是并不討好的差事。因此,我們將內(nèi)容分為三部分,本期僅討論Java語言層次的綜合類和入門圖書。
入門書似乎是技術(shù)含量低的代名詞,實則不然,要寫一本好的入門書其實是非常難的。比如說吧,筆者驚奇地發(fā)現(xiàn),國內(nèi)的作者居然近乎完全口口相傳、人云亦云似地還在大講特講AWT圖形組件,而對Swing要么根本不提,要么介紹非常簡略,最后完全弄成喧賓奪主,對于這樣的書,我們挑選時堅決槍斃之。畢竟,Swing在圖形界面方面替代AWT,已經(jīng)是1998年1.2發(fā)布時的陳年舊事了,7年過去了,我們的作者、老師還在教授讀者使用實際項目中根本不可能使用的AWT圖形組件,簡直是可怕而又可悲的事情。要知道,國外講AWT的書早已絕版多日了。
?
?
?
?
?
?
緣起 搞技術(shù)的人中,像筆者這樣喜歡買書看書的,很有不少:同行朋友里家中技術(shù)書成山的大有人在。聽說,國內(nèi)互動出版網(wǎng)的五星級會員超過了一萬,也可為此佐證。其中原因大部分應(yīng)該拜我們從事的行業(yè)變化太快所賜——不讀書,就有朽掉的危險。想來《中華讀書報》中《電腦書城》這樣的專刊,讀者中除了出版界、圖書發(fā)行界、圖書館界的朋友外,應(yīng)該還有眾多此道同人吧。
算起來,接觸電腦,買電腦書,也有20來年歷史了。從當(dāng)年一書難求,到現(xiàn)在屢屢被書店中琳瑯滿目之勢所眩暈,真是恍如隔世。從某種意義上來說,如今買書想要買對,也可以算是一種學(xué)問。這種情況下,別人的閱讀經(jīng)驗和評論,就非常有意義了。不然,何以Amazon的書評模式會如此引人注目呢。
中國的評論傳統(tǒng),古已有之。月旦評、人物志在前,《文心》、《詩品》于后。而歷代詩話、畫論云云,可謂浩如煙海。書話之濫觴則始自近代阿英,此后成了非常流行的一種文體,近年來國內(nèi)書業(yè)勃興(有數(shù)字說每年新書就十?dāng)?shù)萬種),更是為此推波助瀾。
計算機圖書方面的評論介紹性文字,在我們印象中,國外已有多年,比如赫赫有名的《Dr.Dobb sJournal》網(wǎng)上書評ERCB,1990年開始的ACCU書評,當(dāng)然還有起自1995年的Amazon自由書評,如今已經(jīng)成為圖書方面最具影響力的一種媒體形式。國內(nèi)早期得到廣泛注意的書評性文字,應(yīng)該是侯捷的《Windows程序設(shè)計好書》、《MFC4大天王》、《C /OOP大系》等“無責(zé)任書評”系列,陸續(xù)使不少原來國內(nèi)知之甚少的好書開始為眾人所矚目,有許多人都由此開始重視技術(shù)圖書的品牌與質(zhì)量。此后,國內(nèi)相關(guān)的網(wǎng)站、雜志都開始出現(xiàn),書多,有價值的信息也越來越多,榮耀、孟巖等總結(jié)的《C程序設(shè)計之四書五經(jīng)》、《C 程序設(shè)計之四書五經(jīng)》等等是其中的代表。但大多數(shù)門類上還是徒嘆闕如,許多普通讀者面對書海,仍然無所適從。
說起這個專欄的緣起,完全是一種機會巧合。近年來移居海外后,能夠比較沒有障礙地接觸到最新的圖書資訊,視界迅速擴大,業(yè)余時間卻增加了不少。偶然開始受人之邀幫忙選書、評書,又進而審書、譯書,漸漸結(jié)識若干國內(nèi)出版社的朋友,因此得以獲悉不少出版界的行內(nèi)故事,自己也慢慢生出些半個行內(nèi)人的感覺。此后在網(wǎng)上再遇到初學(xué)者因為選書而手足無措時,開始忍不住好為人師,代為指點迷津一番。網(wǎng)上書店或者相關(guān)的技術(shù)論壇更逐漸成為筆得痛快臧否的良所。久而久之,小圈子里都知道我好發(fā)議論,朋友們開始送我一個外號——“嗜評狂”。
今年伊始,收到一位出版界朋友的建議,說《中華讀書報》想開一個專欄,從中立的角度,按類別總結(jié)方式為讀者和發(fā)行渠道推薦國內(nèi)出版的好書,以促進技術(shù)書界優(yōu)勝劣汰,形成良性循環(huán)。這無疑是一件有功的事業(yè)。作為行外人兼海外人,蹙而為此,心里本來頗為躊躇,但是得多位業(yè)界朋友鼓勵,并惠允全面專業(yè)知識的協(xié)助,于是也就斗膽得令,小兵先行了。
名聞國內(nèi)外讀書界的“董氏二兄弟”中董鼎山先生有一本文集叫做《書·人·事》,本專欄名稱即效此而來。筆者的意思,是不完全限于書本身,而是涉及書人、書事。但愿能夠不辱使命。知我者,罪我者,歡迎發(fā)郵件到jch_liu@sohu.com交流溝通。
專欄開山第一篇,我挑當(dāng)今最熱門的語言Java作為主題,大概是最四平八穩(wěn),最無可爭議的選擇了吧。雖然Java的實際使用率應(yīng)該還在C/C 之下,但是輿論似乎已經(jīng)達成共識,Java才是明天的主宰。這不,Readex調(diào)查公司最近所做的一份開發(fā)人員調(diào)查顯示,C/C 和Java在開發(fā)語言使用比例上的優(yōu)勢已經(jīng)牢不可破,而且未來期望一項,Java占據(jù)了極大比例,C/C 以及VB都在明顯下降。C 專家ThomasPlum也做過一個有趣的實驗,使用正則表達式篩選網(wǎng)上招聘中的編程語言要求,結(jié)果Java以43%左右的比例僅略低于老資格的C ,排名第二,遠(yuǎn)超過了C、VB、.NET類語言。《SoftwareDevelopment》雜志最新的讀者調(diào)查結(jié)果來看,Java和J2EE等相關(guān)技術(shù)人員的薪水已經(jīng)穩(wěn)穩(wěn)高出同儕。
在學(xué)界,海外的大專院校幾乎都已經(jīng)清一色地以Java為默認(rèn)教學(xué)語言,數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)乃至編譯、圖形學(xué)等等科目通通采用Java實現(xiàn)。連美國院校委員會(CollegeBoard)針對高中生的AP考試也用Java替換了原來的C 。也難怪高德納(Knuth)的徒孫同時也是該委員開發(fā)主席的MarkWeiss(就是多本數(shù)據(jù)結(jié)構(gòu)教材的那位作者)居然要寫一本《C forJavaProgrammer》了。
Java的熱門,也集中體現(xiàn)在出書上。與Java相關(guān)的圖書所占比例,可能早已大過了技術(shù)本身的市場份額。近年來尤其如此。而且,從業(yè)內(nèi)朋友提供的國內(nèi)圖書銷售數(shù)據(jù)來看,Java圖書的銷售也早已經(jīng)與VB、C/C 相較而有過之無不及了。
需要指出的是,Java本身與其他語言最大的不同,在于它既是一門語言,更是一個平臺,相當(dāng)于C ,C /CLI,VB.NET…… .NET平臺。而且Java平臺又分為J2SE(即所謂Core/DestopJava)、J2EE(Enterprise/ServerJava)和J2ME(Mobile/Wireless)三層,其實此外還有Jini,JXTA,JavaWebServices等無法因此歸入以上類別的平臺技術(shù)。加上Apache、JBoss等大旗下的開源Java技術(shù)和輕量企業(yè)級Java技術(shù)已成燎原之勢,許多互相競爭的框架、產(chǎn)品、技術(shù)甚至開始與Sun公司官方方案爭勝,籠統(tǒng)意義上的Java實際上已經(jīng)成為一個大迷宮,發(fā)展方向也非常不確定,即使是許多專業(yè)Java開發(fā)人員也無法了解全豹了。
在這樣的大背景下評價Java圖書,其實是并不討好的差事。因此,我們將內(nèi)容分為三部分,本期僅討論Java語言層次的綜合類和入門圖書。
綜合/巨著
在國內(nèi),Stroustrup的《C 程序設(shè)計語言(特別版)》和《C Primer中文版》經(jīng)常被人并稱為C 兩大巨著,記得當(dāng)時出版社宣傳中有“倚天屠龍”語,確為妙喻。其實,《C 編程思想》也處在同一等級別,尤其是加上后來出版的第二卷之后。
無獨有偶,在Java世界里,同樣也有并駕齊驅(qū)的巨著雙璧:《Java編程思想》(第二版)BruceEckel著侯捷譯機械工業(yè)出版社定價:99元
本書似乎毋需多言了,它在國內(nèi)名氣之大我早有耳聞:以99元的高價銷售已經(jīng)超過了50000冊(侯捷網(wǎng)站數(shù)據(jù)),遠(yuǎn)遠(yuǎn)甩開了競爭對手,其盛勢甚至超過了海外———其實在國外,本書與《Java核心技術(shù)》、Horton、Deitel的《Java程序設(shè)計教程》、vanLinden的《Java2教程》(英文名JustJava)都在伯仲之間,僅僅是略占優(yōu)勢而已。除Deitel的面向教材市場,售價超過90美元之外,其余的連定價都咬得很緊,無論篇幅多大,均在35美元上下,可見競爭之激烈。
本書的優(yōu)點是對象優(yōu)先,強調(diào)概念的理解,開放的模式帶來了類似開源軟件的群聚效果,有更多人幫助提高圖書質(zhì)量。第三版中對當(dāng)代軟件工程實踐和工具(Ant、XP、Designbycontract)的融入,便于讀者進入職業(yè)角色,也是大大高出一般編程書的地方,體現(xiàn)了Eckel仍身處開發(fā)社區(qū)中央的優(yōu)勢。當(dāng)然,這些特點同時也帶來了一些負(fù)面影響,那就是有些初學(xué)者尤其是缺乏基本編程知識的人由此入門可能會有困難。我的建議是,可以先選擇一本純粹的入門書,比如《Java語言導(dǎo)學(xué)》,再回頭來通過本書打通任督二脈,增進功力。《Java2核心技術(shù)卷I:基礎(chǔ)知識》(第6版)CayS.Horstmann,GaryCornell著程峰等譯機械工業(yè)出版社定價:75元
聽出版社的朋友說,這本書漸漸在國內(nèi)有了追趕前書的勢頭。其實這一點并不奇怪。本書的作者均是從業(yè)界轉(zhuǎn)入教職、有著豐富經(jīng)驗的大學(xué)教授,而且除本書外,均另有多部技術(shù)名著面世,寫作經(jīng)驗也非常老辣:Horstmann寫有直接與Deitel競爭的Java教材以及其他多部暢銷的計算機科學(xué)教材,在Wiley出版;而Cornell是著名的VB、C 技術(shù)作家,同時還是近年來發(fā)展飛速并且收購了大量Wrox版權(quán)的技術(shù)圖書出版社Apress的創(chuàng)始人。圖書的技術(shù)審校有包括Java傳奇人物JoshuaBloch等數(shù)十人,這樣的陣容,威力可想而知。
由于敘述詳細(xì),編排方式近似于國內(nèi)教材,本書已經(jīng)逐漸成為許多讀者受挫于《Java編程思想》之后的替代方案,而且頗有成效。但是作者的原意卻是面向“有堅實編程語言基礎(chǔ)的程序員”的,所以我建議完全不具備編程知識的讀者還是需要另找一塊敲門磚比較理想。本書更準(zhǔn)確的定位Eckel自己在《Java編程思想》后面的資源清單中已經(jīng)為我們說明了:“篇幅巨大,內(nèi)容全面,我在尋找答案的時候第一個就會想到它。”當(dāng)然,Eckel指的是本書的上下兩卷。說到原書的卷II,作者和出版社顯然有所失誤,因為卷II的第6版從來就沒有出版過。如今,兩卷已經(jīng)統(tǒng)一更新到了第七版。《Java程序設(shè)計教程》(第5版)H.M.Deitel著,施平安等譯清華大學(xué)出版社定價:98元《Java編程語言》(第三版)KenArnold,JamesGosling著虞萬融等譯中國電力出版社定價:45元
國內(nèi)圖書中能夠與前兩巨著相提并論的,恐怕應(yīng)該還是這兩本了。Deitel的程序設(shè)計語言教材影響極大,類似于國內(nèi)的譚浩強,綜合而言至今仍然無人能敵。當(dāng)然Deitel技術(shù)上絕無問題,業(yè)界實踐也并不缺,只不過他完全用一個模板方便地不斷重用于各個語言,多年不變,顯得有些不思進取,而且套路性文字在正文中越來越多,有一廂情愿之嫌。這些與前兩本書相比,都是有差距的。不過,如果忽略篇幅和定價因素外,Deitel倒是很好的入門書。我當(dāng)年就是用他的C真正入門的,相比一些同事采用國內(nèi)教材的痛苦回憶和后患無窮,高下立見。Gosling的這本書篇幅是四本中最小的,它容易讓我們聯(lián)想到Kernighan&Ritchie的《C程序設(shè)計語言》和Stroustrup的《C 程序設(shè)計語言(特別版)》。平心而論,此書的地位不如前二者,但是語言之父的凝練文字、嚴(yán)謹(jǐn)定義和書中不經(jīng)意流露出來的思想,仍然彌足珍貴。本書不適合初學(xué)者入門,對于理清概念絕對是最佳讀物。
入 門
入門書似乎是技術(shù)含量低的代名詞,實則不然。要寫一本好的入門書其實是非常難的,否則,當(dāng)年Dryden出版社何以給哈佛的Mankiw(就是當(dāng)今美國總統(tǒng)的經(jīng)濟顧問)徹頭徹尾的一本入門書《經(jīng)濟學(xué)原理》拍出100萬美元預(yù)付金?寫入門書,你不僅需要具有高出所寫內(nèi)容層次許多的技術(shù)深度(這樣才能在選擇、把握材料時游刃有余),還要研究對象的學(xué)習(xí)心理,通常這意味著一定的教學(xué)經(jīng)驗。此外,對語言和敘述方式的要求也是最高的———高端技術(shù)書的讀者大多能夠?qū)捜菽阄墓P的干澀,而對于初學(xué)者,只要他讀得費勁,你的其他優(yōu)點將蕩然無存。最后,你還將面臨激烈的競爭,市場上可能有幾十個形形色色的對手已經(jīng)嚴(yán)陣以待。
同樣,推薦入門書其實也是最難的。原因之一還是同類書太多,幾乎每個參與競爭的相關(guān)出版社都不會輕易放過這一角逐,市場上此類書占總品種比例大概接近了40%。原因之二則是涉及面太廣:初學(xué)者是金字塔之根基,而且今日之高手同樣有初學(xué)記憶,你要是推薦得不中意,他們也會發(fā)表意見的,眾口既然難調(diào),難免不會眾口鑠金。
以上原因,促使得我們不得不謹(jǐn)慎從事。我們的解決辦法,是設(shè)立如下評判標(biāo)準(zhǔn):
1.內(nèi)容選取須反映當(dāng)前實際。這里并沒有嚴(yán)格限定必須遵守最新標(biāo)準(zhǔn)。實際上也沒有必要,至今尚沒有見到國內(nèi)有哪本書反映J2SE5.0(請讀者注意,Ja鄄va平臺的新版本已經(jīng)從原來的1.5統(tǒng)一到5.0)的———本人正在翻譯中的《Java核心技術(shù)》(第7版)可能會是比較早遵循5.0標(biāo)準(zhǔn)的作品。
2.內(nèi)容選取應(yīng)該基本符合J2SE范疇。記得TimO Reilly(出技術(shù)書非常出名的O Reilly公司的老板)曾經(jīng)譏諷當(dāng)時流行的Java傻瓜書和“21天/24小時/10分鐘自學(xué)Java”一類的圖書說,Java本身并不是那么簡單的編程語言,純粹為了炒作而做出多快好省的美妙承諾,這樣的書、作者和出版商都是極不負(fù)責(zé)任的。的確,Java技術(shù)本身的復(fù)雜(雖然簡單是Sun公司為其下的第一個修飾詞),想用一本書講清楚基本的入門內(nèi)容:語言要素、面向?qū)ο蟾拍睢D形界面開發(fā)、事件處理、I/O、applet、異常與調(diào)試等等,控制篇幅都已經(jīng)非常困難,哪里還能再奢談其他?
3.翻譯書的譯校質(zhì)量應(yīng)該達到起碼的要求。
4.市場上容易買到。這條標(biāo)準(zhǔn)其實很難完全量化,一個指標(biāo)是調(diào)查公司所統(tǒng)計的實際銷售數(shù)據(jù)(由出版界朋友提供),一個指標(biāo)是國內(nèi)主要技術(shù)圖書網(wǎng)上書店的銷售排名以及點擊次數(shù)。綜合起來,只要缺貨并不嚴(yán)重即可。
有趣的是,這幾條簡單而明顯的標(biāo)準(zhǔn),衡量起當(dāng)下的圖書時,卻成了巍巍其阿的分水嶺:幾乎所有國內(nèi)的入門圖書都被毫無借口好講地直接淘汰出局了。第1條標(biāo)準(zhǔn)最具殺傷力,我驚奇地發(fā)現(xiàn),國內(nèi)的作者居然近乎完全口口相傳、人云亦云似地還在大講特講AWT圖形組件,而對Swing要么根本不提,要么介紹非常簡略,最后完全弄成喧賓奪主,對于這樣的書,則是堅決槍斃之。畢竟,Swing在圖形界面方面替代AWT,已經(jīng)是1998年1.2發(fā)布時的陳年舊事了,7年過去了,我們的作者、老師還在教授讀者使用實際項目中根本不可能使用的AWT圖形組件,簡直是可怕而又可悲的事情。要知道,國外講AWT的書早已絕版多日了。
第2條上出現(xiàn)的問題有的非常可笑,有幾本書(銷售成績好像還很不錯)居然在煞有其事地討論JavaScript!而不少書本來篇幅就少得可憐,許多該講到的遠(yuǎn)未講透,卻樂滋滋地干起了副業(yè),在最后用幾頁篇幅講JSP、Servlet或者EJB,讓人哭笑不得。
而第3條上折損的也頗有不少,IvorHorton極富盛名的《BeginningJava2》先后幾個版本《Java2入門經(jīng)典》(1.2)(中國電力出版社)、《Java2編程指南》(1.3,1.4)(電子工業(yè)出版社)就都?xì)г诜g上。奇怪的是,最早的版本前幾章還流暢可讀,此外就完全有些亂來了。后面的版本居然將nativeAPI翻譯成“自然API”,真不知道譯者學(xué)的是什么專業(yè)。
那么,最后的幸存者有哪些呢?《Java語言導(dǎo)學(xué)》MaryCampione等著,馬朝暉譯機械工業(yè)出版社定價:39元
Sun公司官方推薦的Java語言初學(xué)教程,作者都是Sun公司內(nèi)部的文檔寫作人員,所以文字和技術(shù)是絕對有保障的,中文翻譯通順可讀。編排上,將ap鄄plet和集合等內(nèi)容放入附錄,也是避重就輕的合理之舉,其實applet在實際項目中很少有使用的機會。常見問題也是一個很有特色的環(huán)節(jié)。不足的地方是圖形組件部分太省,當(dāng)然,這正好可以用《Java核心技術(shù)》等書進行彌補。《Java就業(yè)培訓(xùn)教程》張孝祥著清華大學(xué)出版社定價:39元
張孝祥此書頗有國人特色(比如字符亂碼問題)、局部也很見功力(比如一些穿插在正文中的小經(jīng)驗、小難點解疑),能夠看出作者下了不少功夫,有所積累。國內(nèi)讀者由此應(yīng)該比較容易入門。問題出在圖形組件部分,先講述AWT事件處理模型本來很好,但是繼而用兩節(jié)篇幅講述AWT,Swing卻只有一節(jié),就有些令人遺憾了。《21天學(xué)通Java2》 第三版 RogersCadenhead等著,袁國忠譯人民郵電出版社定價:54元
本書屬于許多人痛批的“21天學(xué)通系列”,其實內(nèi)容不錯,翻譯也算中規(guī)中矩。所不足的地方,是作為敲門磚篇幅稍大,定價較高。如果刪去RMI、聯(lián)網(wǎng)、Servlet和JSP內(nèi)容,也許更加合理。《Java2實用教程》HerbertSchildt著,馬海軍等譯清華大學(xué)出版社定價:48元
實不相瞞,此書原版在國外是一本入門暢銷書,作者名氣很大,寫書多年了,是Osborne的王牌作者。原文講Swing很少,而且例子比較小兒科。中文譯本還沒有讀過,不知如何,需要讀者自己判斷。
下次專欄,我們將繼續(xù)談?wù)剣鴥?nèi)出版的Java好書。
本文的上半部分發(fā)表以后,引起了一些讀者的興趣。有讀者對我所說的“許多普通讀者面對書海,仍然無所適從”大有同感,并且詢問到具體如何選書買書的問題。其實,同樣的問題在各種場合包括論壇、技術(shù)講座上,我曾經(jīng)無數(shù)次被問到,所以在繼續(xù)介紹Java好書之前,我先花一點篇 幅說明一下。
關(guān)于選書的經(jīng)驗之談
以我個人的經(jīng)驗來看,選中適用圖書的關(guān)鍵,在于“知己知彼”。知己,當(dāng)然就是對自己有正確的定位。拿Java來說,你在購買第一本Java圖書之前,需要確定自己處于什么層次。如果編程經(jīng)驗較少,對基本的程序設(shè)計語言概念都知之甚少的話,《Java核心技術(shù)》或者《Java編程思想》就不太合適了,這一層次的巨著都在書的最前面明確說明讀者需要“一定的編程經(jīng)驗”,而《Java語言導(dǎo)學(xué)》、《21天學(xué)通Java2》可能是你的正確選擇。如果你學(xué)習(xí)過其他程序設(shè)計語言,了解“關(guān)鍵字”、“函數(shù)”、“數(shù)據(jù)類型”等等基本概念,但是對面向?qū)ο笸耆情T外漢,那么《Java編程思想》是一個很好的起點,它是典型的對象優(yōu)先(ObjectFirst)教學(xué)法的代表。如果你已經(jīng)是有一定經(jīng)驗的C/C 程序員,《Ja鄄va核心技術(shù)》顯然最適合你,因為書中有許多專門針對C/C 程序員的提示,而且循著“環(huán)境·語言結(jié)構(gòu)·面向?qū)ο蟆表樞蛑v解。其余類別的圖書也可以按照這種思路選擇。
此外,我有一個特別的建議:如果你的英文不錯,建議入門的時候以英文版為主,輔以一本中文基礎(chǔ)教材,尤其是面向?qū)ο蟮母拍罘矫妫⑽闹苯娱喿x理解,往往比中文更加容易。因為面向?qū)ο蟾拍钇鋵嵣婕罢Z言和知識表示中較深層次,恰恰是不同語言區(qū)別較大,不容易移譯的地方。加之國內(nèi)早期翻譯不夠?qū)徤鳎医y(tǒng)一性不足,使用中文術(shù)語體系理解,有時候反而事倍功半。就以“面向?qū)ο蟆币辉~來說,新手對此是很難望文而生義的,這是典型的不良翻譯范例。曾經(jīng)有一個比較夸張的笑話,說有人將《面向?qū)ο蠓椒ā樊?dāng)成談戀愛技巧書買了回去,其實正說中了此譯的弊病。相對而言,海外譯為“物件導(dǎo)向”,要更接近原意。這里的對象=object,就是中文的物體、事物乃至事情,所以《Ja鄄va編程思想》有“萬事萬物皆對象”(ev鄄erthingisanobject)的說法。而這里的面向=oriented,其實是“以……為重點/中心”、“(此方法/領(lǐng)域中)……很重要”的意思。所以面向?qū)ο螅給bject oriented的英文原意,其實是“以事物表示為中心”之義。時至今日,專業(yè)人士當(dāng)然不再可能有出上述笑話的可能,大家反而已經(jīng)習(xí)慣這一術(shù)語體系,并且母語化了。但是學(xué)習(xí)面向?qū)ο蠹夹g(shù)的新手呢,他們?nèi)匀幻獠涣嗽凇邦悺薄ⅰ邦愋汀薄ⅰ敖涌凇薄ⅰ皩嵗薄ⅰ俺蓡T”、“方法”、“實現(xiàn)”、“協(xié)定”、“字段”、“屬性”、“服務(wù)”、“消息”……構(gòu)成的語詞森林中篳路藍(lán)縷。從這一點來說,國內(nèi)高等院校開始雙語教學(xué),是有其益處的。
正確選書的第二個重要環(huán)節(jié)就是知彼了,也即盡量多地了解相關(guān)圖書信息。遺憾的是,目前國內(nèi)客觀而且有內(nèi)容的書評類資料非常缺乏,出版社提供的信息又往往公信力不夠。本專欄的目的之一,就是嘗試對此情況有所補益。當(dāng)然,普通讀者的獲知手段并非沒有。第一手的信息,包括出版社、作譯者的情況,出版前言、作譯序、圖書外裝幀的介紹文字和設(shè)計水平都能透露制作者在此書上花費的功夫幾何。前言和序純屬八股文字的圖書,作譯者用心程度就非常值得懷疑。此外,國內(nèi)各主要專業(yè)網(wǎng)上書店(china pub.com,第二書店,華儲等等)都有類似Amazon的自由書評以及各種銷售排行榜(不少實體書店也會提供銷售排行榜),雖然成色遠(yuǎn)較Amazon為遜色,但還是很值得參考的,畢竟這些都反映著客觀因素。尤其是china pub上外版書有直接到Amazon該書原文版的鏈接,可以很方便地了解原版的評價,然后考慮翻譯質(zhì)量,即可八九不離十了。本報定期刊登的各出版社“銷售熱點”、“書店經(jīng)理薦書榜”等等欄目也是圖書情況的重要參考。至少,你可以了解到某種、某類書市場上哪些銷售良好,哪些是出版社的重點產(chǎn)品。
老實說,目前選書買書的確不是易事。撰寫本文過程中,我所查詢到的Java圖書不下六七百種,但是真正值得評論的卻在30種以內(nèi)。看來,國內(nèi)出版界離正確的方向還有不小的差距。
繼續(xù)我們的Java圖書盛宴。在綜合和入門層次圖書之后,我們已經(jīng)更上一層樓,可以看到更廣闊的Java世界圖景。首先進入我們視野的是語言編程經(jīng)驗和深入層次圖書,面向中級讀者。正如著名程序設(shè)計專家Sun公司杰出工程師GuySteele所說:“對于一門程序設(shè)計語言,你需要了解三樣?xùn)|西:一是語言核心,即語法結(jié)構(gòu);二是語言的詞匯,包括所提供的數(shù)據(jù)結(jié)構(gòu)和功能設(shè)施;三是語言的習(xí)慣用法。”一般的程序設(shè)計圖書只會涉及到前面兩點,而要討論第三點,往往需要作者有大量的代碼開發(fā)和閱讀經(jīng)驗,難度極大,所以,這一層次目前國內(nèi)市場上所見圖書,基本上都是國外翻譯作品。
曾幾何時,國外的Java圖書出現(xiàn)過三大系列鼎足而立的態(tài)勢。這就是Pearson集團旗下的Prentice Hall和Addison Wesley與Sun公司合作推出的Sun Press Java系列,Wrox公司的Java系列和O'Reilly公司的Java系列。比較而言,前者雖然來自技術(shù)本原,又匯集原來兩個系列的實力,權(quán)威性毋庸置疑,但是總體
上技術(shù)文檔氣息比較重,各書之間就寫作水平和易讀性來看很不均衡,既有《Java核心技術(shù)》、《Effective Java》、《Java編程語言》這樣的超級經(jīng)典,又有大量平平之作。后者的規(guī)劃最為嚴(yán)密,叢書的平均水平也最整齊,經(jīng)過多年積累,已經(jīng)出版了70多種,幾乎囊括了Java技術(shù)的方方面面:語言學(xué)習(xí)(以《Head First Java》和《Java in a Nutshell》為代表)、技術(shù)專題(以《Java網(wǎng)絡(luò)編程》、《Java與XML》、《Java Swing》、《Java Server Pages》為代表)、工具(《Eclipse》、《Ant權(quán)威指南》為代表)、企業(yè)級開發(fā)(以《Enterprise JavaBeans》為代表)和實例(《Java經(jīng)典實例》為代表)。而Wrox則是盛極后衰的典型,2001年前后,印著作者頭像大多名為“Beginning”和“Professional”的紅皮書與O Reilly一一針鋒相對,不但出手奇快,而且內(nèi)容涵蓋全面扎實,博得好評一片,聲勢一度壓過了后者,這其中以Ivar Horton的《Java入門經(jīng)典》、《J2EE高級編程》、《Expert One-on-One J2EE Design and Development》為代表。可遺憾的是,此后不久Wrox就由于整個集團在.NET和Java乃至圖形圖像、網(wǎng)站設(shè)計等等多面作戰(zhàn),戰(zhàn)線過長,管理又失控,終于以被收購而告終。其品牌和大部分圖書歸入John Wiley所有,也就是說,現(xiàn)在新的紅皮書都是這家有近200年歷史的公司旗下出品。另外有部分圖書則被開發(fā)類圖書的新銳Apress購買,改用該出版社的封面。兩家目前同時出版“Beginning”冠名的圖書,但是原“Professional”系列Apress改用“Pro”以示區(qū)分。
這三大主流系列之外,還有小型的Manning出版社不可不提。Manning本來也覆蓋各種開發(fā)語言和工具,甚至包括其他出版社很少涉及的PowerBuilder,但是2003年后,幾乎完全轉(zhuǎn)向了Java平臺,與Java開發(fā)社區(qū)的結(jié)合度大概是最緊的———theServerSide網(wǎng)站上就頻繁出現(xiàn)該出版社的圖書預(yù)覽評論。為了避免與大中型競爭對手正面沖突,Manning選擇了更加專業(yè)和前沿的小眾領(lǐng)域,并精益求精,取得了極佳的口碑。在Struts、Hibernate、JUnit、Ant等方面都有最具競爭力的圖書。
雖然本文已經(jīng)進入最后部分,但是從所涉及的Java領(lǐng)域來看,只能說是剛剛開了一個頭———僅僅評完了語言層面的圖書而已。不難發(fā)現(xiàn),目前國內(nèi)市場上值得關(guān)注的引進圖書,幾乎都不出以上四家,當(dāng)然,近來國產(chǎn)圖書也開始有了一些佳作。接下來,讓我們一起盡覽Java圖書大觀園秀色。
工具書
Java是一種簡單但是又復(fù)雜的語言。說它簡單,是指相對C 等前輩而言,許多功能語言能夠直接提供支持,大大減少了開發(fā)工作量;說它復(fù)雜,是指Java語言和平臺提供的功能極為豐富,短時間很難掌握。時至今日,發(fā)展到5.0的Java,光是API的數(shù)量就已經(jīng)是一個驚人的數(shù)字,就更不用說其中細(xì)節(jié)了。Sun公司的API文檔當(dāng)然幫得上忙,但是對于經(jīng)驗不夠以及英文不好的人,無法完全解決問題。這種情況下,可供查閱的工具書就非常必要了。
JAVA技術(shù)手冊(第4版)(影印版)
David Flanagan/著
清華大學(xué)出版社 定價:99元
說起Java工具書,首屈一指的當(dāng)然是Flanagan的傳奇大作了。此書與《Unix技術(shù)手冊》、《Linux技術(shù)手冊》并稱O'Reilly Nutshell(堅果)系列的三大手冊,是該公司早期得以稱雄技術(shù)出版領(lǐng)域的大功臣,與Java的版本保持同步。言簡意賅的敘述和豐富的索引是其招牌特征。此書中沒有涉及AWT、Swing以及J2EE的內(nèi)容,系列中另有兩本書專門講述。需要警告大家的是,第4版是此書最不好的一個版本,最明顯的缺點就是書中切口處沒有印上類似于字典的曾經(jīng)是Nutshell手冊特色的分隔標(biāo)簽。每章開始處的包關(guān)系圖也沒了。國內(nèi)中國電力出版社還出版過此書第三版的中文版,但是翻譯頗受詬病。國外此書的第五版已經(jīng)出版,又迅速攀升到暢銷榜前列。
JAVA Developers ALMANAC 中文版:實例與快速參考(第1.4版 第1卷)
Patrick Chan/著 王衛(wèi)星等/譯
機械工業(yè)出版社 定價:99元
作者作為Java創(chuàng)始小組的主力成員,曾是負(fù)責(zé)可移植性和Windows平臺的架構(gòu)師,也是AWT的設(shè)計者之一。顯然,在版式設(shè)計方面,他也頗有天賦。本書在形式和體例設(shè)計上花費的心思比《Java技術(shù)手冊》可以說是有過之而無不及,因此多年來極受Java程序員青睞。其結(jié)果,是一本非常實用參考書,除按字母逐一講解API之外,還有極為豐富的實例,實例有網(wǎng)絡(luò)版,查詢更加方便。本書有些網(wǎng)上書店有特價銷售,30元左右,可謂大大的物超所值。此書本還有第2卷,討論applet和Swing,但是沒有中文版。清華大學(xué)出版社影印了兩卷,可以參考。
以下我們真正超越基本語言的層面,進入更廣闊的天地。迎面而來的是開發(fā)客戶端程序必不可少的GUI技術(shù),也就是Swing。由于Java在桌面方面的開發(fā)還沒有成為主流,我們在這里只是淺嘗輒止。
Java Swing(第二版)
Marc Loy,Robert Eckstein等/著 R&W組/譯
清華大學(xué)出版社 定價:128.00元
Swing方面的書目前只能推薦這一本了。很抱歉,書很厚,價錢也是個問題。但是權(quán)威性還是有口碑的,翻譯也不錯。而如此篇幅卻仍然會漏掉一些重要內(nèi)容,Swing的瑣細(xì)可以想見了。比較多被人提到的明顯遺漏包括AWT事件模型和一些布局管理器。
國外共有三本比較重要的Swing圖書,除本書外,還有Manning所出的一本,也是近900頁的巨著,在我印象中似乎沒有中文版本。SunPressJava系列中也有一本《JFCSWING標(biāo)準(zhǔn)教材(第二版)》,略薄一些,有中文譯本(電子工業(yè)出版社),但是翻譯不能令人滿意,就不予推薦了。
接下來我們進入企業(yè)級Java的技術(shù)迷宮。這是目前炙手可熱的領(lǐng)域。然而奇怪得很,如此復(fù)雜、內(nèi)涵豐富、大有文章可做的寶庫,國內(nèi)值得推薦圖書的數(shù)量和質(zhì)量卻難以與之相符。
J2EE綜述: __________________________________________________________________________
The J2EE Tutorial中文版
Stephanie Bodoff等/著 顏承等/譯
中國鐵道出版社 定價:47元
網(wǎng)站上常常有讀者詢問J2EE該如何入門,從哪一本書入門的問題,令人遺憾的是,目前這個問題并沒有直截了當(dāng)?shù)拇鸢浮R驗樵贘2EE 1.5(估計Sun會統(tǒng)一為5.0)尤其是EJB3.0定案之前,J2EE的整個發(fā)展方向都并不明確。至少目前,放棄EJB的重量級方案而選用Hibernate、Spring之類的輕型框架正在成為熱點。
本書的好處在于,它直接來自Sun公司,是對J2EE最四平八穩(wěn)的介紹。書中的主干還是對EJB的介紹,對其他方面包括Web層技術(shù)的介紹都比較簡略。由于篇幅所限,通過本書,你只能對J2EE有一個大概的初步印象,真正能夠達到實戰(zhàn)水平,道路還很漫長。順帶提及,本書的新版本(針對1.4)《J2EE1.4標(biāo)準(zhǔn)教材》已經(jīng)由電子工業(yè)出版社出版,其中增加的部分大多與XML、Web服務(wù)和JSP方面的更新以及JSF相關(guān),這正是J2EE1.3到1.4的主要更新。不過新版本已經(jīng)厚達1000頁以上,定價100元,就性價比而言似乎不是那么盡如人愿。
Web層: __________________________________________________________________________
Servlet與JSP核心編程,卷1(第2版)
Marty Hall,Larry Brown/著 趙學(xué)良/譯
清華大學(xué)出版社 定價:59元
按照一般的學(xué)習(xí)地圖,從語言到企業(yè)級Java最好的路徑就是JSP和Servlet。事實上,如果你沒有機會參與大型軟件系統(tǒng)的開發(fā),J2EE中最常用也最實用的也就是Web層技術(shù),開發(fā)動態(tài)網(wǎng)站等等應(yīng)用,即使中小企業(yè)也都用得上。歷史上,Servlet和JSP大多是分別講述的,O'Reilly和Wrox等等出版社都是如此。然而,這兩項技術(shù)不僅本質(zhì)相同(最終都要轉(zhuǎn)換為Servlet,再進行編譯),而且在應(yīng)用中關(guān)系極為密切。因此,MartyHall將兩者結(jié)合講解看似獨辟蹊徑,實則更加貼近開發(fā)實踐。從我個人的經(jīng)驗來看,這樣做是絕對正確的,也正是這樣的處理,使本書得以鶴立雞群。
本書原著和譯筆都非常流暢,講述技術(shù)細(xì)節(jié)體貼周到。作者在闡釋概念方面有獨到之處,常常三言兩語就能說清其他書中長篇大論也說不清的東西。書中對Servlet和JSP兩項技術(shù)區(qū)別和如何集成的敘述就極精彩。Amazon上本書的讀者評論就達到200多條,受歡迎程度可見一斑。
本書的第2卷尚未出版,從內(nèi)容上看應(yīng)該是在機械工業(yè)出版社已經(jīng)出版的《Servlet與JSP權(quán)威指南》(即《More Servlet sand JSP》中文版)一書基礎(chǔ)上的更新和擴充,將涵蓋Struts、JSTL、JSF等內(nèi)容。
JSP設(shè)計(第三版)
Hans Bergsten/著 林琪 朱濤江/譯
中國電力出版社 定價:79元
由于不斷保持更新,在單獨講JSP的引進圖書中本書已經(jīng)穩(wěn)坐頭把交椅。值得稱道的是,這一版的翻譯工作有較大提高。作者的專家身份(JSP和Servlet規(guī)范專家組成員)自然保證了內(nèi)容的權(quán)威性。為了覆蓋更廣的讀者群,尤其是網(wǎng)頁設(shè)計人員,書中不少內(nèi)容起點很低,比如在講解中可能很詳細(xì)地解釋一些編程基礎(chǔ)知識。這種處理顯然是一把雙刃劍,有經(jīng)驗的程序員對此很容易不耐煩,事實上網(wǎng)上對此書不利的評價大多也是由此而引起的。在我看來,想讓一本JSP技術(shù)書籍既滿足網(wǎng)頁設(shè)計人員,又滿足軟件開發(fā)人員幾乎是不可能完成的任務(wù),還是“分而治之”符合計算機科學(xué)原理。
精通Struts:基于MVC的Java Web設(shè)計與開發(fā)
孫衛(wèi)琴/著
電子工業(yè)出版社 定價:49元
Tomcat與Java Web開發(fā)技術(shù)詳解
孫衛(wèi)琴 李洪成/著
電子工業(yè)出版社 定價:45元
這兩本書是2004年國內(nèi)原創(chuàng)圖書中的驚喜。以如此專業(yè)的圖書而獲得一致好評和空前的市場成功(《精通Struts》一書2004年8月出版,到2005年2月已經(jīng)是第5次印刷,而且仍然印刷了5000冊,出版界的朋友告訴我,由此判斷此書銷售應(yīng)該已經(jīng)超過25000冊,在今日的市場中如此銷量,確屬驚人),其含義是非常豐富的:一方面說明技術(shù)圖書市場其實并沒有大多數(shù)人眼中的那么悲觀,一方面說明Java技術(shù)目前在國內(nèi)的熱度確實非常。
關(guān)于這兩本書,一位讀者的評價非常中肯:“優(yōu)點并不在于它提出了多少有突破性、發(fā)明性的思想,但它作為技術(shù)傳播工具,能夠把技術(shù)分析得非常清晰細(xì)致,舉的各種Web應(yīng)用實例循序漸進,恰到好處。”也許恰到好處,貼切符合國人需要,才是原創(chuàng)圖書成功的必由之路。
EJB層:__________________________________________________________________________
精通EJB(第二版)
Ed Roman/著 劉曉華/譯
電子工業(yè)出版社 定價:59元
精通EJB(第二版)
Ed Roman/著 劉曉華/譯
電子工業(yè)出版社 定價:59元
毫無疑問,按Sun公司的本意,EJB應(yīng)該是J2EE架構(gòu)中真正的核心。然而,令人尷尬的是,國內(nèi)已經(jīng)出版的講述E鄄JB的圖書中,居然挑不出一本完全合格的教程類圖書可以推薦。本書原版非常有名,問題又出在翻譯上:后半部分許多地方質(zhì)量差得驚人。好在原作者公開了原版電子文件,讀者能夠一邊看,一邊改,一邊罵了。
此書手稿中的一部分最后演變成了另一本書《EJB設(shè)計模式》,已由機械工業(yè)出版社出版,屬于經(jīng)驗總結(jié)性的讀物,應(yīng)該配合閱讀。
經(jīng)驗T深入T模式:
__________________________________________________________________________
J2EE設(shè)計開發(fā)編程指南
Rod Johnson/著 魏海萍/譯
電子工業(yè)出版社 定價:64元
__________________________________________________________________________
J2EE設(shè)計開發(fā)編程指南
Rod Johnson/著 魏海萍/譯
電子工業(yè)出版社 定價:64元
如果J2EE方面只允許推薦一本書的話,此書的英文版會是很多人的選擇。Johnson所提出的EJB并不是萬靈丹藥,以及對何時使用EJB,不使用EJB時的替代方案等等,在當(dāng)時可以說是振聾發(fā)聵,驚醒了許多人。從書中發(fā)展出來的Spring框架如今已經(jīng)成為J2EE輕量級運動的重要一員。讓人痛心的是,這本書中文版翻譯得慘不忍睹。就憑將Johnson著作無情糟蹋掉這一點,這位譯者已經(jīng)得罪了整個J2EE社區(qū)。電子工業(yè)出版社在Java技術(shù)方面,尤其是J2EE方面出書很多,但是在某些方面(比如說翻譯)常常很難令人滿意,也許應(yīng)該好好總結(jié)一下了。至少,本書的價值到今天仍然不減,Amazon上的排名保持在3000左右,仍然是最暢銷的Java類圖書之一,為什么不考慮一下重新翻譯,利人利己呢?
J2EE核心模式
Deepak Alur等/著 牛志奇等/譯
機械工業(yè)出版社 定價:35元
J2EE領(lǐng)域本書與上一本齊名,匯集了Sun公司和客戶大量經(jīng)驗,是J2EE架構(gòu)師必讀書。糟糕的是,本書的翻譯也是問題多多,只能說比上一本稍好一些。科學(xué)出版社出版了影印版,可以參考。
不過也有好消息,此書已經(jīng)有了第二版,而且中文版由長期擔(dān)任本報特約記者的青年才俊擔(dān)綱翻譯,不日就將由機械工業(yè)出版社出版。想來這次該有滿意的結(jié)果。
其 他
最后是幾本沒有歸入前面的類別,然而我本人認(rèn)為比較重要的好書。
JAVA與模式
閻宏
電子工業(yè)出版社 定價:88元
本書顯然也創(chuàng)造了一個奇跡,高定價仍然暢銷并且常銷,為原創(chuàng)圖書樹立了很好的榜樣。講述模式的好書已經(jīng)很多,但是專門結(jié)合Java講述的,目前應(yīng)該還是以此本最佳。
JAVA實用系統(tǒng)開發(fā)指南
彭晨陽
機械工業(yè)出版社 定價:42元
本書是一本實例驅(qū)動的教程,雖然有些設(shè)計和代碼不夠成熟,但以原創(chuàng)標(biāo)準(zhǔn)衡量,已經(jīng)難能可貴。書中比較詳細(xì)地介紹了設(shè)計思路,并兼顧地介紹相關(guān)模式和技術(shù),是一種很好的寫作模式。
Java與XML(第二版)
Brett McLaugblin/著 劉基誠/譯
中國電力出版社 定價:59元
舉賢不避親。此書正是本人所譯。由于J2EE1.4中增加了大量處理XML以及Web服務(wù)的內(nèi)容,此書的重要性大大提升。翻譯中在語言的平順上下了不少功夫,總體還算滿意。不過編輯校對上的小失誤較多,有一些遺憾。
我們的Java圖書之旅已經(jīng)到站。雖然已經(jīng)盡力,但是限于篇幅、眼力和閱歷,肯定無法反映全貌,批評與意見,請給我們發(fā)郵件:jch-liu@sohu.com。
[后注]:
本文中推薦的書籍:
赫赫有名的《Dr.Dobb sJournal》網(wǎng)上書評ERCB
1990年開始的ACCU書評
起自1995年的Amazon自由書評
侯捷的《Windows程序設(shè)計好書》、《MFC4大天王》、《C /OOP大系》等“無責(zé)任書評”系列
Stroustrup的《C 程序設(shè)計語言(特別版)》和《C Primer中文版》
《Java編程思想》(第二版)BruceEckel著侯捷譯機械工業(yè)出版社定價:99元
《Java核心技術(shù)》?35美元上下
Horton、Deitel的《Java程序設(shè)計教程》?90美元
vanLinden的《Java2教程》(英文名JustJava)?35美元上下
《Java2核心技術(shù)卷I:基礎(chǔ)知識》(第6版)CayS.Horstmann,GaryCornell著 程峰等譯 機械工業(yè)出版社定價:75元
《Java編程語言》(第三版)KenArnold,JamesGosling著 虞萬融等譯 中國電力出版社定價:45元
入門:
《Java語言導(dǎo)學(xué)》MaryCampione等著 馬朝暉譯 機械工業(yè)出版社定價:39元
《Java就業(yè)培訓(xùn)教程》張孝祥著 清華大學(xué)出版社定價:39元
《Java核心技術(shù)》、《Effective Java》、《Java編程語言》?超級經(jīng)典
工具書:
JAVA Developers ALMANAC 中文版:實例與快速參考(第1.4版 第1卷)
Patrick Chan/著 王衛(wèi)星等/譯
機械工業(yè)出版社 定價:99元
J2EE:
Servlet與JSP核心編程,卷1(第2版)
Marty Hall,Larry Brown/著 趙學(xué)良/譯
清華大學(xué)出版社 定價:59元
Servlet與JSP核心編程,卷1(第2版)
Marty Hall,Larry Brown/著 趙學(xué)良/譯
清華大學(xué)出版社 定價:59元
精通Struts:基于MVC的Java Web設(shè)計與開發(fā)
孫衛(wèi)琴/著
電子工業(yè)出版社 定價:49元
Tomcat與Java Web開發(fā)技術(shù)詳解
孫衛(wèi)琴 李洪成/著
電子工業(yè)出版社 定價:45元
精通EJB(第二版)
Ed Roman/著 劉曉華/譯
電子工業(yè)出版社 定價:59元
J2EE設(shè)計開發(fā)編程指南
Rod Johnson/著 魏海萍/譯
電子工業(yè)出版社 定價:64元
J2EE核心模式
Deepak Alur等/著 牛志奇等/譯
機械工業(yè)出版社 定價:35元?
J2EE架構(gòu)師必讀書
JAVA與模式
閻宏
電子工業(yè)出版社 定價:88元
JAVA實用系統(tǒng)開發(fā)指南
彭晨陽
機械工業(yè)出版社 定價:42元