Java的盛宴(上) |
|
刘基诚 雷厉风 |
|
笼统意义上的Java实际上已经成为一个大迷宫,发展方向也非常不确定,即使是许多专业Java开发人员也无法了解全豹了。在这样的大背景下评价Java图书,其实是并不讨好的差事。因此,我们将内容分为三部分,本期仅讨论Java语言层次的综合类和入门图书。
入门
书似乎是技术含量低的代名词,实则不然,要写一本好的入门书其实是非常难的。比如说吧,笔者惊奇地发现,国内的作者居然近乎完全口口相传、人云亦云似地还在大讲特讲AWT图形组件,而对Swing要么根本不提,要么介绍非常简略,最后完全弄成喧宾夺主,对于这样的书,我们挑选时坚决枪毙之。毕竟,Swing在图形界面方面替代AWT,已经是1998年1.2发布时的陈年旧事了,7年过去了,我们的作者、老师还在教授读者使用实际项目中根本不可能使用的AWT图形组件,简直是可怕而又可悲的事情。要知道,国外讲AWT的书早已绝版多日了。 |
缘起 搞技术的人中,像笔者这样喜欢买书看书的,很有不少:同行朋友里家中技术书成山的大有人在。听说,国内互动出版网的五星级会员超过了一万,也可为此佐证。其中原因大部分应该拜我们从事的行业变化太快所赐——不读书,就有朽掉的危险。想来《中华读书报》中《电脑书城》这样的专刊,读者中除了出版界、图书发行界、图书馆界的朋友外,应该还有众多此道同人吧。
算起来,接触电脑,买电脑书,也有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等无法因此归入以上类别的平台技术。加上A鄄pache、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好书。
[此贴子已经被作者于2007-2-25 15:26:22编辑过]