学海拾遗

生活、技术、思想无处不在学习
posts - 52, comments - 23, trackbacks - 0, articles - 3
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

[转]JAVA盛宴

Posted on 2007-06-25 01:47 tanzek 阅读(502) 评论(0)  编辑  收藏

   笼统意义上的Java实际上已经成为一个大迷宫,发展方向也非常不确定,即使是许多专业Java开发人员也无法了解全豹了。在这样的大背景下评价Java图书,其实是并不讨好的差事。因此,我们将内容分为三部分,本期仅讨论Java语言层次的综合类和入门图书。

入门书似乎是技术含量低的代名词,实则不然,要写一本好的入门书其实是非常难的。比如说吧,笔者惊奇地发现,国内的作者居然近乎完全口口相传、人云亦云似地还在大讲特讲AWT图形组件,而对Swing要么根本不提,要么介绍非常简略,最后完全弄成喧宾夺主,对于这样的书,我们挑选时坚决枪毙之。毕竟,Swing在图形界面方面替代AWT,已经是1998年1.2发布时的陈年旧事了,7年过去了,我们的作者、老师还在教授读者使用实际项目中根本不可能使用的AWT图形组件,简直是可怕而又可悲的事情。要知道,国外讲AWT的书早已绝版多日了。

clip_image001.jpg   

   

缘起 搞技术的人中,像笔者这样喜欢买书看书的,很有不少:同行朋友里家中技术书成山的大有人在。听说,国内互动出版网的五星级会员超过了一万,也可为此佐证。其中原因大部分应该拜我们从事的行业变化太快所赐——不读书,就有朽掉的危险。想来《中华读书报》中《电脑书城》这样的专刊,读者中除了出版界、图书发行界、图书馆界的朋友外,应该还有众多此道同人吧。

算起来,接触电脑,买电脑书,也有20来年历史了。从当年一书难求,到现在屡屡被书店中琳琅满目之势所眩晕,真是恍如隔世。从某种意义上来说,如今买书想要买对,也可以算是一种学问。这种情况下,别人的阅读经验和评论,就非常有意义了。不然,何以Amazon的书评模式会如此引人注目呢。

中国的评论传统,古已有之。月旦评、人物志在前,《文心》、《诗品》于后。而历代诗话、画论云云,可谓浩如烟海。书话之滥觞则始自近代阿英,此后成了非常流行的一种文体,近年来国内书业勃兴(有数字说每年新书就十数万种),更是为此推波助澜。

计算机图书方面的评论介绍性文字,在我们印象中,国外已有多年,比如赫赫有名的《Dr.Dobb sJournal》网上书评ERCB,1990年开始的ACCU书评,当然还有起自1995年的Amazon自由书评,如今已经成为图书方面最具影响力的一种媒体形式。国内早期得到广泛注意的书评性文字,应该是侯捷的《Windows程序设计好书》、《MFC4大天王》、《C /OOP大系》等“无责任书评”系列,陆续使不少原来国内知之甚少的好书开始为众人所瞩目,有许多人都由此开始重视技术图书的品牌与质量。此后,国内相关的网站、杂志都开始出现,书多,有价值的信息也越来越多,荣耀、孟岩等总结的《C程序设计之四书五经》、《C 程序设计之四书五经》等等是其中的代表。但大多数门类上还是徒叹阙如,许多普通读者面对书海,仍然无所适从。

说起这个专栏的缘起,完全是一种机会巧合。近年来移居海外后,能够比较没有障碍地接触到最新的图书资讯,视界迅速扩大,业余时间却增加了不少。偶然开始受人之邀帮忙选书、评书,又进而审书、译书,渐渐结识若干国内出版社的朋友,因此得以获悉不少出版界的行内故事,自己也慢慢生出些半个行内人的感觉。此后在网上再遇到初学者因为选书而手足无措时,开始忍不住好为人师,代为指点迷津一番。网上书店或者相关的技术论坛更逐渐成为笔得痛快臧否的良所。久而久之,小圈子里都知道我好发议论,朋友们开始送我一个外号——“嗜评狂”。

今年伊始,收到一位出版界朋友的建议,说《中华读书报》想开一个专栏,从中立的角度,按类别总结方式为读者和发行渠道推荐国内出版的好书,以促进技术书界优胜劣汰,形成良性循环。这无疑是一件有功的事业。作为行外人兼海外人,蹙而为此,心里本来颇为踌躇,但是得多位业界朋友鼓励,并惠允全面专业知识的协助,于是也就斗胆得令,小兵先行了。

名闻国内外读书界的“董氏二兄弟”中董鼎山先生有一本文集叫做《书·人·事》,本专栏名称即效此而来。笔者的意思,是不完全限于书本身,而是涉及书人、书事。但愿能够不辱使命。知我者,罪我者,欢迎发邮件到jch_liu@sohu.com交流沟通。

专栏开山第一篇,我挑当今最热门的语言Java作为主题,大概是最四平八稳,最无可争议的选择了吧。虽然Java的实际使用率应该还在C/C 之下,但是舆论似乎已经达成共识,Java才是明天的主宰。这不,Readex调查公司最近所做的一份开发人员调查显示,C/C 和Java在开发语言使用比例上的优势已经牢不可破,而且未来期望一项,Java占据了极大比例,C/C 以及VB都在明显下降。C 专家ThomasPlum也做过一个有趣的实验,使用正则表达式筛选网上招聘中的编程语言要求,结果Java以43%左右的比例仅略低于老资格的C ,排名第二,远超过了C、VB、.NET类语言。《SoftwareDevelopment》杂志最新的读者调查结果来看,Java和J2EE等相关技术人员的薪水已经稳稳高出同侪。

在学界,海外的大专院校几乎都已经清一色地以Java为默认教学语言,数据结构、操作系统乃至编译、图形学等等科目通通采用Java实现。连美国院校委员会(CollegeBoard)针对高中生的AP考试也用Java替换了原来的C 。也难怪高德纳(Knuth)的徒孙同时也是该委员开发主席的MarkWeiss(就是多本数据结构教材的那位作者)居然要写一本《C forJavaProgrammer》了。

Java的热门,也集中体现在出书上。与Java相关的图书所占比例,可能早已大过了技术本身的市场份额。近年来尤其如此。而且,从业内朋友提供的国内图书销售数据来看,Java图书的销售也早已经与VB、C/C 相较而有过之无不及了。

需要指出的是,Java本身与其他语言最大的不同,在于它既是一门语言,更是一个平台,相当于C ,C /CLI,VB.NET…… .NET平台。而且Java平台又分为J2SE(即所谓Core/DestopJava)、J2EE(Enterprise/ServerJava)和J2ME(Mobile/Wireless)三层,其实此外还有Jini,JXTA,JavaWebServices等无法因此归入以上类别的平台技术。加上Apache、JBoss等大旗下的开源Java技术和轻量企业级Java技术已成燎原之势,许多互相竞争的框架、产品、技术甚至开始与Sun公司官方方案争胜,笼统意义上的Java实际上已经成为一个大迷宫,发展方向也非常不确定,即使是许多专业Java开发人员也无法了解全豹了。

在这样的大背景下评价Java图书,其实是并不讨好的差事。因此,我们将内容分为三部分,本期仅讨论Java语言层次的综合类和入门图书。

综合/巨著

在国内,Stroustrup的《C 程序设计语言(特别版)》和《C Primer中文版》经常被人并称为C 两大巨著,记得当时出版社宣传中有“倚天屠龙”语,确为妙喻。其实,《C 编程思想》也处在同一等级别,尤其是加上后来出版的第二卷之后。

无独有偶,在Java世界里,同样也有并驾齐驱的巨著双璧:《Java编程思想》(第二版)BruceEckel著侯捷译机械工业出版社定价:99元

本书似乎毋需多言了,它在国内名气之大我早有耳闻:以99元的高价销售已经超过了50000册(侯捷网站数据),远远甩开了竞争对手,其盛势甚至超过了海外———其实在国外,本书与《Java核心技术》、Horton、Deitel的《Java程序设计教程》、vanLinden的《Java2教程》(英文名JustJava)都在伯仲之间,仅仅是略占优势而已。除Deitel的面向教材市场,售价超过90美元之外,其余的连定价都咬得很紧,无论篇幅多大,均在35美元上下,可见竞争之激烈。

本书的优点是对象优先,强调概念的理解,开放的模式带来了类似开源软件的群聚效果,有更多人帮助提高图书质量。第三版中对当代软件工程实践和工具(Ant、XP、Designbycontract)的融入,便于读者进入职业角色,也是大大高出一般编程书的地方,体现了Eckel仍身处开发社区中央的优势。当然,这些特点同时也带来了一些负面影响,那就是有些初学者尤其是缺乏基本编程知识的人由此入门可能会有困难。我的建议是,可以先选择一本纯粹的入门书,比如《Java语言导学》,再回头来通过本书打通任督二脉,增进功力。《Java2核心技术卷I:基础知识》(第6版)CayS.Horstmann,GaryCornell著程峰等译机械工业出版社定价:75元

听出版社的朋友说,这本书渐渐在国内有了追赶前书的势头。其实这一点并不奇怪。本书的作者均是从业界转入教职、有着丰富经验的大学教授,而且除本书外,均另有多部技术名著面世,写作经验也非常老辣:Horstmann写有直接与Deitel竞争的Java教材以及其他多部畅销的计算机科学教材,在Wiley出版;而Cornell是著名的VB、C 技术作家,同时还是近年来发展飞速并且收购了大量Wrox版权的技术图书出版社Apress的创始人。图书的技术审校有包括Java传奇人物JoshuaBloch等数十人,这样的阵容,威力可想而知。

由于叙述详细,编排方式近似于国内教材,本书已经逐渐成为许多读者受挫于《Java编程思想》之后的替代方案,而且颇有成效。但是作者的原意却是面向“有坚实编程语言基础的程序员”的,所以我建议完全不具备编程知识的读者还是需要另找一块敲门砖比较理想。本书更准确的定位Eckel自己在《Java编程思想》后面的资源清单中已经为我们说明了:“篇幅巨大,内容全面,我在寻找答案的时候第一个就会想到它。”当然,Eckel指的是本书的上下两卷。说到原书的卷II,作者和出版社显然有所失误,因为卷II的第6版从来就没有出版过。如今,两卷已经统一更新到了第七版。《Java程序设计教程》(第5版)H.M.Deitel著,施平安等译清华大学出版社定价:98元《Java编程语言》(第三版)KenArnold,JamesGosling著虞万融等译中国电力出版社定价:45元

国内图书中能够与前两巨著相提并论的,恐怕应该还是这两本了。Deitel的程序设计语言教材影响极大,类似于国内的谭浩强,综合而言至今仍然无人能敌。当然Deitel技术上绝无问题,业界实践也并不缺,只不过他完全用一个模板方便地不断重用于各个语言,多年不变,显得有些不思进取,而且套路性文字在正文中越来越多,有一厢情愿之嫌。这些与前两本书相比,都是有差距的。不过,如果忽略篇幅和定价因素外,Deitel倒是很好的入门书。我当年就是用他的C真正入门的,相比一些同事采用国内教材的痛苦回忆和后患无穷,高下立见。Gosling的这本书篇幅是四本中最小的,它容易让我们联想到Kernighan&Ritchie的《C程序设计语言》和Stroustrup的《C 程序设计语言(特别版)》。平心而论,此书的地位不如前二者,但是语言之父的凝练文字、严谨定义和书中不经意流露出来的思想,仍然弥足珍贵。本书不适合初学者入门,对于理清概念绝对是最佳读物。

入 门

入门书似乎是技术含量低的代名词,实则不然。要写一本好的入门书其实是非常难的,否则,当年Dryden出版社何以给哈佛的Mankiw(就是当今美国总统的经济顾问)彻头彻尾的一本入门书《经济学原理》拍出100万美元预付金?写入门书,你不仅需要具有高出所写内容层次许多的技术深度(这样才能在选择、把握材料时游刃有余),还要研究对象的学习心理,通常这意味着一定的教学经验。此外,对语言和叙述方式的要求也是最高的———高端技术书的读者大多能够宽容你文笔的干涩,而对于初学者,只要他读得费劲,你的其他优点将荡然无存。最后,你还将面临激烈的竞争,市场上可能有几十个形形色色的对手已经严阵以待。

同样,推荐入门书其实也是最难的。原因之一还是同类书太多,几乎每个参与竞争的相关出版社都不会轻易放过这一角逐,市场上此类书占总品种比例大概接近了40%。原因之二则是涉及面太广:初学者是金字塔之根基,而且今日之高手同样有初学记忆,你要是推荐得不中意,他们也会发表意见的,众口既然难调,难免不会众口铄金。

以上原因,促使得我们不得不谨慎从事。我们的解决办法,是设立如下评判标准:

1.内容选取须反映当前实际。这里并没有严格限定必须遵守最新标准。实际上也没有必要,至今尚没有见到国内有哪本书反映J2SE5.0(请读者注意,Ja鄄va平台的新版本已经从原来的1.5统一到5.0)的———本人正在翻译中的《Java核心技术》(第7版)可能会是比较早遵循5.0标准的作品。

2.内容选取应该基本符合J2SE范畴。记得TimO Reilly(出技术书非常出名的O Reilly公司的老板)曾经讥讽当时流行的Java傻瓜书和“21天/24小时/10分钟自学Java”一类的图书说,Java本身并不是那么简单的编程语言,纯粹为了炒作而做出多快好省的美妙承诺,这样的书、作者和出版商都是极不负责任的。的确,Java技术本身的复杂(虽然简单是Sun公司为其下的第一个修饰词),想用一本书讲清楚基本的入门内容:语言要素、面向对象概念、图形界面开发、事件处理、I/O、applet、异常与调试等等,控制篇幅都已经非常困难,哪里还能再奢谈其他?

3.翻译书的译校质量应该达到起码的要求。

4.市场上容易买到。这条标准其实很难完全量化,一个指标是调查公司所统计的实际销售数据(由出版界朋友提供),一个指标是国内主要技术图书网上书店的销售排名以及点击次数。综合起来,只要缺货并不严重即可。

有趣的是,这几条简单而明显的标准,衡量起当下的图书时,却成了巍巍其阿的分水岭:几乎所有国内的入门图书都被毫无借口好讲地直接淘汰出局了。第1条标准最具杀伤力,我惊奇地发现,国内的作者居然近乎完全口口相传、人云亦云似地还在大讲特讲AWT图形组件,而对Swing要么根本不提,要么介绍非常简略,最后完全弄成喧宾夺主,对于这样的书,则是坚决枪毙之。毕竟,Swing在图形界面方面替代AWT,已经是1998年1.2发布时的陈年旧事了,7年过去了,我们的作者、老师还在教授读者使用实际项目中根本不可能使用的AWT图形组件,简直是可怕而又可悲的事情。要知道,国外讲AWT的书早已绝版多日了。

第2条上出现的问题有的非常可笑,有几本书(销售成绩好像还很不错)居然在煞有其事地讨论JavaScript!而不少书本来篇幅就少得可怜,许多该讲到的远未讲透,却乐滋滋地干起了副业,在最后用几页篇幅讲JSP、Servlet或者EJB,让人哭笑不得。

而第3条上折损的也颇有不少,IvorHorton极富盛名的《BeginningJava2》先后几个版本《Java2入门经典》(1.2)(中国电力出版社)、《Java2编程指南》(1.3,1.4)(电子工业出版社)就都毁在翻译上。奇怪的是,最早的版本前几章还流畅可读,此外就完全有些乱来了。后面的版本居然将nativeAPI翻译成“自然API”,真不知道译者学的是什么专业。

那么,最后的幸存者有哪些呢?《Java语言导学》MaryCampione等著,马朝晖译机械工业出版社定价:39元

Sun公司官方推荐的Java语言初学教程,作者都是Sun公司内部的文档写作人员,所以文字和技术是绝对有保障的,中文翻译通顺可读。编排上,将ap鄄plet和集合等内容放入附录,也是避重就轻的合理之举,其实applet在实际项目中很少有使用的机会。常见问题也是一个很有特色的环节。不足的地方是图形组件部分太省,当然,这正好可以用《Java核心技术》等书进行弥补。《Java就业培训教程》张孝祥著清华大学出版社定价:39元

张孝祥此书颇有国人特色(比如字符乱码问题)、局部也很见功力(比如一些穿插在正文中的小经验、小难点解疑),能够看出作者下了不少功夫,有所积累。国内读者由此应该比较容易入门。问题出在图形组件部分,先讲述AWT事件处理模型本来很好,但是继而用两节篇幅讲述AWT,Swing却只有一节,就有些令人遗憾了。《21天学通Java2》 第三版 RogersCadenhead等著,袁国忠译人民邮电出版社定价:54元

本书属于许多人痛批的“21天学通系列”,其实内容不错,翻译也算中规中矩。所不足的地方,是作为敲门砖篇幅稍大,定价较高。如果删去RMI、联网、Servlet和JSP内容,也许更加合理。《Java2实用教程》HerbertSchildt著,马海军等译清华大学出版社定价:48元

实不相瞒,此书原版在国外是一本入门畅销书,作者名气很大,写书多年了,是Osborne的王牌作者。原文讲Swing很少,而且例子比较小儿科。中文译本还没有读过,不知如何,需要读者自己判断。

下次专栏,我们将继续谈谈国内出版的Java好书。

本文的上半部分发表以后,引起了一些读者的兴趣。有读者对我所说的“许多普通读者面对书海,仍然无所适从”大有同感,并且询问到具体如何选书买书的问题。其实,同样的问题在各种场合包括论坛、技术讲座上,我曾经无数次被问到,所以在继续介绍Java好书之前,我先花一点篇 幅说明一下。

关于选书的经验之谈

以我个人的经验来看,选中适用图书的关键,在于“知己知彼”。知己,当然就是对自己有正确的定位。拿Java来说,你在购买第一本Java图书之前,需要确定自己处于什么层次。如果编程经验较少,对基本的程序设计语言概念都知之甚少的话,《Java核心技术》或者《Java编程思想》就不太合适了,这一层次的巨著都在书的最前面明确说明读者需要“一定的编程经验”,而《Java语言导学》、《21天学通Java2》可能是你的正确选择。如果你学习过其他程序设计语言,了解“关键字”、“函数”、“数据类型”等等基本概念,但是对面向对象完全是门外汉,那么《Java编程思想》是一个很好的起点,它是典型的对象优先(ObjectFirst)教学法的代表。如果你已经是有一定经验的C/C 程序员,《Ja鄄va核心技术》显然最适合你,因为书中有许多专门针对C/C 程序员的提示,而且循着“环境·语言结构·面向对象”顺序讲解。其余类别的图书也可以按照这种思路选择。

此外,我有一个特别的建议:如果你的英文不错,建议入门的时候以英文版为主,辅以一本中文基础教材,尤其是面向对象的概念方面,英文直接阅读理解,往往比中文更加容易。因为面向对象概念其实涉及语言和知识表示中较深层次,恰恰是不同语言区别较大,不容易移译的地方。加之国内早期翻译不够审慎,而且统一性不足,使用中文术语体系理解,有时候反而事倍功半。就以“面向对象”一词来说,新手对此是很难望文而生义的,这是典型的不良翻译范例。曾经有一个比较夸张的笑话,说有人将《面向对象方法》当成谈恋爱技巧书买了回去,其实正说中了此译的弊病。相对而言,海外译为“物件导向”,要更接近原意。这里的对象=object,就是中文的物体、事物乃至事情,所以《Ja鄄va编程思想》有“万事万物皆对象”(ev鄄erthingisanobject)的说法。而这里的面向=oriented,其实是“以……为重点/中心”、“(此方法/领域中)……很重要”的意思。所以面向对象=object oriented的英文原意,其实是“以事物表示为中心”之义。时至今日,专业人士当然不再可能有出上述笑话的可能,大家反而已经习惯这一术语体系,并且母语化了。但是学习面向对象技术的新手呢,他们仍然免不了在“类”、“类型”、“接口”、“实例”、“成员”、“方法”、“实现”、“协定”、“字段”、“属性”、“服务”、“消息”……构成的语词森林中筚路蓝缕。从这一点来说,国内高等院校开始双语教学,是有其益处的。

正确选书的第二个重要环节就是知彼了,也即尽量多地了解相关图书信息。遗憾的是,目前国内客观而且有内容的书评类资料非常缺乏,出版社提供的信息又往往公信力不够。本专栏的目的之一,就是尝试对此情况有所补益。当然,普通读者的获知手段并非没有。第一手的信息,包括出版社、作译者的情况,出版前言、作译序、图书外装帧的介绍文字和设计水平都能透露制作者在此书上花费的功夫几何。前言和序纯属八股文字的图书,作译者用心程度就非常值得怀疑。此外,国内各主要专业网上书店(china pub.com,第二书店,华储等等)都有类似Amazon的自由书评以及各种销售排行榜(不少实体书店也会提供销售排行榜),虽然成色远较Amazon为逊色,但还是很值得参考的,毕竟这些都反映着客观因素。尤其是china pub上外版书有直接到Amazon该书原文版的链接,可以很方便地了解原版的评价,然后考虑翻译质量,即可八九不离十了。本报定期刊登的各出版社“销售热点”、“书店经理荐书榜”等等栏目也是图书情况的重要参考。至少,你可以了解到某种、某类书市场上哪些销售良好,哪些是出版社的重点产品

老实说,目前选书买书的确不是易事。撰写本文过程中,我所查询到的Java图书不下六七百种,但是真正值得评论的却在30种以内。看来,国内出版界离正确的方向还有不小的差距。

继续我们的Java图书盛宴。在综合和入门层次图书之后,我们已经更上一层楼,可以看到更广阔的Java世界图景。首先进入我们视野的是语言编程经验和深入层次图书,面向中级读者。正如著名程序设计专家Sun公司杰出工程师GuySteele所说:“对于一门程序设计语言,你需要了解三样东西:一是语言核心,即语法结构;二是语言的词汇,包括所提供的数据结构和功能设施;三是语言的习惯用法。”一般的程序设计图书只会涉及到前面两点,而要讨论第三点,往往需要作者有大量的代码开发和阅读经验,难度极大,所以,这一层次目前国内市场上所见图书,基本上都是国外翻译作品。

曾几何时,国外的Java图书出现过三大系列鼎足而立的态势。这就是Pearson集团旗下的Prentice Hall和Addison Wesley与Sun公司合作推出的Sun Press Java系列,Wrox公司的Java系列和O'Reilly公司的Java系列。比较而言,前者虽然来自技术本原,又汇集原来两个系列的实力,权威性毋庸置疑,但是总体

 

上技术文档气息比较重,各书之间就写作水平和易读性来看很不均衡,既有《Java核心技术》、《Effective Java》、《Java编程语言》这样的超级经典,又有大量平平之作。后者的规划最为严密,丛书的平均水平也最整齐,经过多年积累,已经出版了70多种,几乎囊括了Java技术的方方面面:语言学习(以《Head First Java》和《Java in a Nutshell》为代表)、技术专题(以《Java网络编程》、《Java与XML》、《Java Swing》、《Java Server Pages》为代表)、工具(《Eclipse》、《Ant权威指南》为代表)、企业级开发(以《Enterprise JavaBeans》为代表)和实例(《Java经典实例》为代表)。而Wrox则是盛极后衰的典型,2001年前后,印着作者头像大多名为“Beginning”和“Professional”的红皮书与O Reilly一一针锋相对,不但出手奇快,而且内容涵盖全面扎实,博得好评一片,声势一度压过了后者,这其中以Ivar Horton的《Java入门经典》、《J2EE高级编程》、《Expert One-on-One J2EE Design and Development》为代表。可遗憾的是,此后不久Wrox就由于整个集团在.NET和Java乃至图形图像、网站设计等等多面作战,战线过长,管理又失控,终于以被收购而告终。其品牌和大部分图书归入John Wiley所有,也就是说,现在新的红皮书都是这家有近200年历史的公司旗下出品。另外有部分图书则被开发类图书的新锐Apress购买,改用该出版社的封面。两家目前同时出版“Beginning”冠名的图书,但是原“Professional”系列Apress改用“Pro”以示区分。

  这三大主流系列之外,还有小型的Manning出版社不可不提。Manning本来也覆盖各种开发语言和工具,甚至包括其他出版社很少涉及的PowerBuilder,但是2003年后,几乎完全转向了Java平台,与Java开发社区的结合度大概是最紧的———theServerSide网站上就频繁出现该出版社的图书预览评论。为了避免与大中型竞争对手正面冲突,Manning选择了更加专业和前沿的小众领域,并精益求精,取得了极佳的口碑。在Struts、Hibernate、JUnit、Ant等方面都有最具竞争力的图书。

  虽然本文已经进入最后部分,但是从所涉及的Java领域来看,只能说是刚刚开了一个头———仅仅评完了语言层面的图书而已。不难发现,目前国内市场上值得关注的引进图书,几乎都不出以上四家,当然,近来国产图书也开始有了一些佳作。接下来,让我们一起尽览Java图书大观园秀色。

工具书

  Java是一种简单但是又复杂的语言。说它简单,是指相对C 等前辈而言,许多功能语言能够直接提供支持,大大减少了开发工作量;说它复杂,是指Java语言和平台提供的功能极为丰富,短时间很难掌握。时至今日,发展到5.0的Java,光是API的数量就已经是一个惊人的数字,就更不用说其中细节了。Sun公司的API文档当然帮得上忙,但是对于经验不够以及英文不好的人,无法完全解决问题。这种情况下,可供查阅的工具书就非常必要了。

  JAVA技术手册(第4版)(影印版)
  David Flanagan/著
  清华大学出版社 定价:99元

  说起Java工具书,首屈一指的当然是Flanagan的传奇大作了。此书与《Unix技术手册》、《Linux技术手册》并称O'Reilly Nutshell(坚果)系列的三大手册,是该公司早期得以称雄技术出版领域的大功臣,与Java的版本保持同步。言简意赅的叙述和丰富的索引是其招牌特征。此书中没有涉及AWT、Swing以及J2EE的内容,系列中另有两本书专门讲述。需要警告大家的是,第4版是此书最不好的一个版本,最明显的缺点就是书中切口处没有印上类似于字典的曾经是Nutshell手册特色的分隔标签。每章开始处的包关系图也没了。国内中国电力出版社还出版过此书第三版的中文版,但是翻译颇受诟病。国外此书的第五版已经出版,又迅速攀升到畅销榜前列。

  JAVA Developers ALMANAC 中文版:实例与快速参考(第1.4版 第1卷)
  Patrick Chan/著 王卫星等/译
  机械工业出版社 定价:99元

  作者作为Java创始小组的主力成员,曾是负责可移植性和Windows平台的架构师,也是AWT的设计者之一。显然,在版式设计方面,他也颇有天赋。本书在形式和体例设计上花费的心思比《Java技术手册》可以说是有过之而无不及,因此多年来极受Java程序员青睐。其结果,是一本非常实用参考书,除按字母逐一讲解API之外,还有极为丰富的实例,实例有网络版,查询更加方便。本书有些网上书店有特价销售,30元左右,可谓大大的物超所值。此书本还有第2卷,讨论applet和Swing,但是没有中文版。清华大学出版社影印了两卷,可以参考。

以下我们真正超越基本语言的层面,进入更广阔的天地。迎面而来的是开发客户端程序必不可少的GUI技术,也就是Swing。由于Java在桌面方面的开发还没有成为主流,我们在这里只是浅尝辄止。

  Java Swing(第二版)
  Marc Loy,Robert Eckstein等/著 R&W组/译
  清华大学出版社 定价:128.00元

  Swing方面的书目前只能推荐这一本了。很抱歉,书很厚,价钱也是个问题。但是权威性还是有口碑的,翻译也不错。而如此篇幅却仍然会漏掉一些重要内容,Swing的琐细可以想见了。比较多被人提到的明显遗漏包括AWT事件模型和一些布局管理器。

  国外共有三本比较重要的Swing图书,除本书外,还有Manning所出的一本,也是近900页的巨著,在我印象中似乎没有中文版本。SunPressJava系列中也有一本《JFCSWING标准教材(第二版)》,略薄一些,有中文译本(电子工业出版社),但是翻译不能令人满意,就不予推荐了。

  接下来我们进入企业级Java的技术迷宫。这是目前炙手可热的领域。然而奇怪得很,如此复杂、内涵丰富、大有文章可做的宝库,国内值得推荐图书的数量和质量却难以与之相符。

J2EE综述: __________________________________________________________________________

  The J2EE Tutorial中文版
  Stephanie Bodoff等/著 颜承等/译
  中国铁道出版社 定价:47元

  网站上常常有读者询问J2EE该如何入门,从哪一本书入门的问题,令人遗憾的是,目前这个问题并没有直截了当的答案。因为在J2EE 1.5(估计Sun会统一为5.0)尤其是EJB3.0定案之前,J2EE的整个发展方向都并不明确。至少目前,放弃EJB的重量级方案而选用Hibernate、Spring之类的轻型框架正在成为热点。

  本书的好处在于,它直接来自Sun公司,是对J2EE最四平八稳的介绍。书中的主干还是对EJB的介绍,对其他方面包括Web层技术的介绍都比较简略。由于篇幅所限,通过本书,你只能对J2EE有一个大概的初步印象,真正能够达到实战水平,道路还很漫长。顺带提及,本书的新版本(针对1.4)《J2EE1.4标准教材》已经由电子工业出版社出版,其中增加的部分大多与XML、Web服务和JSP方面的更新以及JSF相关,这正是J2EE1.3到1.4的主要更新。不过新版本已经厚达1000页以上,定价100元,就性价比而言似乎不是那么尽如人愿。

Web层: __________________________________________________________________________

  Servlet与JSP核心编程,卷1(第2版)
  Marty Hall,Larry Brown/著 赵学良/译
  清华大学出版社 定价:59元

  按照一般的学习地图,从语言到企业级Java最好的路径就是JSP和Servlet。事实上,如果你没有机会参与大型软件系统的开发,J2EE中最常用也最实用的也就是Web层技术,开发动态网站等等应用,即使中小企业也都用得上。历史上,Servlet和JSP大多是分别讲述的,O'Reilly和Wrox等等出版社都是如此。然而,这两项技术不仅本质相同(最终都要转换为Servlet,再进行编译),而且在应用中关系极为密切。因此,MartyHall将两者结合讲解看似独辟蹊径,实则更加贴近开发实践。从我个人的经验来看,这样做是绝对正确的,也正是这样的处理,使本书得以鹤立鸡群。

  本书原著和译笔都非常流畅,讲述技术细节体贴周到。作者在阐释概念方面有独到之处,常常三言两语就能说清其他书中长篇大论也说不清的东西。书中对Servlet和JSP两项技术区别和如何集成的叙述就极精彩。Amazon上本书的读者评论就达到200多条,受欢迎程度可见一斑。

  本书的第2卷尚未出版,从内容上看应该是在机械工业出版社已经出版的《Servlet与JSP权威指南》(即《More Servlet sand JSP》中文版)一书基础上的更新和扩充,将涵盖Struts、JSTL、JSF等内容。

  JSP设计(第三版)
  Hans Bergsten/著 林琪 朱涛江/译
  中国电力出版社 定价:79元

  由于不断保持更新,在单独讲JSP的引进图书中本书已经稳坐头把交椅。值得称道的是,这一版的翻译工作有较大提高。作者的专家身份(JSP和Servlet规范专家组成员)自然保证了内容的权威性。为了覆盖更广的读者群,尤其是网页设计人员,书中不少内容起点很低,比如在讲解中可能很详细地解释一些编程基础知识。这种处理显然是一把双刃剑,有经验的程序员对此很容易不耐烦,事实上网上对此书不利的评价大多也是由此而引起的。在我看来,想让一本JSP技术书籍既满足网页设计人员,又满足软件开发人员几乎是不可能完成的任务,还是“分而治之”符合计算机科学原理。

  精通Struts:基于MVC的Java Web设计与开发
  孙卫琴/著
  电子工业出版社 定价:49元

  Tomcat与Java Web开发技术详解
  孙卫琴 李洪成/著
  电子工业出版社 定价:45元

  这两本书是2004年国内原创图书中的惊喜。以如此专业的图书而获得一致好评和空前的市场成功(《精通Struts》一书2004年8月出版,到2005年2月已经是第5次印刷,而且仍然印刷了5000册,出版界的朋友告诉我,由此判断此书销售应该已经超过25000册,在今日的市场中如此销量,确属惊人),其含义是非常丰富的:一方面说明技术图书市场其实并没有大多数人眼中的那么悲观,一方面说明Java技术目前在国内的热度确实非常。

  关于这两本书,一位读者的评价非常中肯:“优点并不在于它提出了多少有突破性、发明性的思想,但它作为技术传播工具,能够把技术分析得非常清晰细致,举的各种Web应用实例循序渐进,恰到好处。”也许恰到好处,贴切符合国人需要,才是原创图书成功的必由之路。

EJB层:__________________________________________________________________________

  精通EJB(第二版)
  Ed Roman/著 刘晓华/译
  电子工业出版社 定价:59元

  精通EJB(第二版)
  Ed Roman/著 刘晓华/译
  电子工业出版社 定价:59元

  毫无疑问,按Sun公司的本意,EJB应该是J2EE架构中真正的核心。然而,令人尴尬的是,国内已经出版的讲述E鄄JB的图书中,居然挑不出一本完全合格的教程类图书可以推荐。本书原版非常有名,问题又出在翻译上:后半部分许多地方质量差得惊人。好在原作者公开了原版电子文件,读者能够一边看,一边改,一边骂了。

  此书手稿中的一部分最后演变成了另一本书《EJB设计模式》,已由机械工业出版社出版,属于经验总结性的读物,应该配合阅读。

经验T深入T模式:

__________________________________________________________________________

  J2EE设计开发编程指南
  Rod Johnson/著 魏海萍/译
  电子工业出版社 定价:64元

__________________________________________________________________________

  J2EE设计开发编程指南
  Rod Johnson/著 魏海萍/译
  电子工业出版社 定价:64元

  如果J2EE方面只允许推荐一本书的话,此书的英文版会是很多人的选择。Johnson所提出的EJB并不是万灵丹药,以及对何时使用EJB,不使用EJB时的替代方案等等,在当时可以说是振聋发聩,惊醒了许多人。从书中发展出来的Spring框架如今已经成为J2EE轻量级运动的重要一员。让人痛心的是,这本书中文版翻译得惨不忍睹。就凭将Johnson著作无情糟蹋掉这一点,这位译者已经得罪了整个J2EE社区。电子工业出版社在Java技术方面,尤其是J2EE方面出书很多,但是在某些方面(比如说翻译)常常很难令人满意,也许应该好好总结一下了。至少,本书的价值到今天仍然不减,Amazon上的排名保持在3000左右,仍然是最畅销的Java类图书之一,为什么不考虑一下重新翻译,利人利己呢?

  J2EE核心模式
  Deepak Alur等/著 牛志奇等/译
  机械工业出版社 定价:35元

  J2EE领域本书与上一本齐名,汇集了Sun公司和客户大量经验,是J2EE架构师必读书。糟糕的是,本书的翻译也是问题多多,只能说比上一本稍好一些。科学出版社出版了影印版,可以参考。

  不过也有好消息,此书已经有了第二版,而且中文版由长期担任本报特约记者的青年才俊担纲翻译,不日就将由机械工业出版社出版。想来这次该有满意的结果。

其 他

  最后是几本没有归入前面的类别,然而我本人认为比较重要的好书。

  JAVA与模式
  阎宏
  电子工业出版社 定价:88元   

  本书显然也创造了一个奇迹,高定价仍然畅销并且常销,为原创图书树立了很好的榜样。讲述模式的好书已经很多,但是专门结合Java讲述的,目前应该还是以此本最佳。

  JAVA实用系统开发指南
  彭晨阳
  机械工业出版社 定价:42元

  本书是一本实例驱动的教程,虽然有些设计和代码不够成熟,但以原创标准衡量,已经难能可贵。书中比较详细地介绍了设计思路,并兼顾地介绍相关模式和技术,是一种很好的写作模式。

  Java与XML(第二版)
  Brett McLaugblin/著 刘基诚/译
  中国电力出版社 定价:59元

  举贤不避亲。此书正是本人所译。由于J2EE1.4中增加了大量处理XML以及Web服务的内容,此书的重要性大大提升。翻译中在语言的平顺上下了不少功夫,总体还算满意。不过编辑校对上的小失误较多,有一些遗憾。

  我们的Java图书之旅已经到站。虽然已经尽力,但是限于篇幅、眼力和阅历,肯定无法反映全貌,批评与意见,请给我们发邮件:jch-liu@sohu.com


[后注]:
本文中推荐的书籍:
赫赫有名的《Dr.Dobb sJournal》网上书评ERCB
1990年开始的ACCU书评
起自1995年的Amazon自由书评

侯捷的《Windows程序设计好书》、《MFC4大天王》、《C /OOP大系》等“无责任书评”系列

Stroustrup的《C 程序设计语言(特别版)》和《C Primer中文版》

《Java编程思想》(第二版)BruceEckel著侯捷译机械工业出版社定价:99元
《Java核心技术》 35美元上下
Horton、Deitel的《Java程序设计教程》 90美元
vanLinden的《Java2教程》(英文名JustJava) 35美元上下
《Java2核心技术卷I:基础知识》(第6版)CayS.Horstmann,GaryCornell著 程峰等译 机械工业出版社定价:75元
《Java编程语言》(第三版)KenArnold,JamesGosling著 虞万融等译 中国电力出版社定价:45元

入门:
《Java语言导学》MaryCampione等著 马朝晖译 机械工业出版社定价:39元
《Java就业培训教程》张孝祥著 清华大学出版社定价:39元

《Java核心技术》、《Effective Java》、《Java编程语言》 超级经典

工具书:
  JAVA Developers ALMANAC 中文版:实例与快速参考(第1.4版 第1卷)
  Patrick Chan/著 王卫星等/译
  机械工业出版社 定价:99元

J2EE:
  Servlet与JSP核心编程,卷1(第2版)
  Marty Hall,Larry Brown/著 赵学良/译
  清华大学出版社 定价:59元


  Servlet与JSP核心编程,卷1(第2版)
  Marty Hall,Larry Brown/著 赵学良/译
  清华大学出版社 定价:59元

  精通Struts:基于MVC的Java Web设计与开发
  孙卫琴/著
  电子工业出版社 定价:49元

  Tomcat与Java Web开发技术详解
  孙卫琴 李洪成/著
  电子工业出版社 定价:45元

  精通EJB(第二版)
  Ed Roman/著 刘晓华/译
  电子工业出版社 定价:59元

  J2EE设计开发编程指南
  Rod Johnson/著 魏海萍/译
  电子工业出版社 定价:64元

  J2EE核心模式
  Deepak Alur等/著 牛志奇等/译
  机械工业出版社 定价:35元 
  J2EE架构师必读书

  JAVA与模式
  阎宏
  电子工业出版社 定价:88元   

  JAVA实用系统开发指南
  彭晨阳
  机械工业出版社 定价:42元


只有注册用户登录后才能发表评论。


网站导航: