从森林到咖啡馆——书评《J2EE设计开发编程指南》

类别:软件工程 点击:0 评论:0 推荐:
从森林到咖啡馆 ——一本别样的经典

(本文首发于《程序员》2003年第11期)

撰文/剃刀

《J2EE设计开发编程指南》(Expert One-to-One J2EE Design and Development),Rod Johnson著,Wrox 2002年,电子工业出版社2003年中译本。

我的书架上有十多本书名包含“C++”的书,而且本本堪称经典——Essential C++、Effective C++、Exceptional C++、C++ Primer、The C++ Programming Language、C++ STL……了解行情的读者会知道,这些经典好书大行其道,得益于来自海峡对岸的一阵和风。不过,饶有兴味的是:在这么一堆以“C++”为名的书中,竟然只有一本不那么经典的书(Virtual Machine Design and Implementation in C/C++)真正介绍了“如何用C++做一个实际的东西”。而其他的经典们似乎更关注C++语言本身的诸多限制和幽微晦暗的细节,以及如何用精细的代码技巧来绕过这些“traps and pitfalls”——啊,对了,这也是一本C++经典好书的名字。Ian Joyner曾经说:“学习C++要花那么长时间,花那么长时间还未必掌握编程或者面向对象设计技术。”看来此言不虚。

看起来,Java人似乎要幸运得多了。从诞生的第一天起,Java就被视为一种更简单的编程语言,而虚拟机的运行机制也的确使它(较之C++)大为简化。而且,在以网络为主战场的J2EE世界里,很多代码级的小技巧也已经变得无足轻重(如果不是毫无意义的话)——用StringBuffer(而不是String)做字符串连接将获得性能的提升,but who cares?

可是,当Java的初学者带着满满的自信跨入J2EE的世界时,扑面而来的信息潮涌常常会把他们打一个大跟头。错综复杂的体系结构、无处不在的设计模式、形形色色的框架和类库、层出不穷的技术规范,还有那些魔咒般神秘莫测、令人莫名敬畏的三字母、四字母缩写词,再加上各个阵营永不停息的争执和对Sun的指责。这个魔法森林远不止是“JSP+Servlet+EJB”这么简单,MVC远远不足以绘出寻找宝藏的地图,Open Source的小精灵们常常热心地帮着倒忙。身陷丛林之中的探险者无助地祈求太阳为他们指明道路,换来的却总是那句不冷不热的俏皮话:There's nothing new under the SUN。

所以,Java人从来不会把《J2EE编程指南》这样的大部头看作经典——那顶多是一本或许已经过时的怪物百科全书。他们更喜欢一个谦逊的“领路人”:他或许并不了解这森林的全貌,但他极清楚地知道去某个地方的路线;他甚至从不宣称自己的路线最快捷、最轻松,但探险者们可以放心地跟着他到达自己的目的地。无疑,Rod Johnson的《J2EE设计开发编程指南》就是这些领路人中的佼佼者。

“Expert One-to-One”,Wrox的这套丛书总让我想起周末夜晚的咖啡馆,与一位高手朋友面对面闲坐,喝着Cappuccino,聊着各自对技术的看法。Rod Johnson,这位Servlet规范专家组的成员,就很乐意扮演这样一种“高手朋友”的角色。从一开始,他就没有“文以载道”的打算。不,他根本不想在这本书里面面俱到地介绍J2EE的细枝末节,只想让你知道他如何理解J2EE、如何用J2EE来开发企业级应用。于是,这次聊天开始不久,他就毫不避讳地告诉你:J2EE的“可移植性”在很大程度上只是一个神话,EJB不是实现中间层的唯一技术,他还用30多页的篇幅教你如何测试J2EE应用……这将是一次愉快的交流,你会这样想,因为他有一些新鲜的见解。

突然之间,烛光开始摇曳昏暗,你们之间的交谈陡然变得诡谲迷离——从第7章开始,Rod Johnson进入了他最感兴趣的话题:J2EE应用的数据存取。他毫不留情地指出:软件应用的设计应该由对象模型来驱动还是应该由数据库模型来驱动,这是一个争论已久、并且至今没有唯一答案的“哲学问题”。所以,忽视O/R映射天然存在的“阻抗不匹配”,试图用任何形式的O/R映射一劳永逸地隐藏数据库的存在,这只能是不负责任的广告词。随后,Sun公司推荐的J2EE持久化解决方案——Entity Bean——也遭到了最猛烈的抨击,Rod Johnson甚至直言“Entity Bean只应该是EJB规范的一个可选部分”,而JDO更有理由成为J2EE的持久化技术标准。……唔,我想我应该住口了,这场足以令一个J2EE人汗下如浆的讨论,还是留给读者自己去品味吧。

从这本书的内容出发,Rod Johnson开发了一个名为“Spring”的J2EE框架,这大概可以最好地表明他的立场:他是一位“关心结果胜于意识形态”的实用主义者。与大多数图书的示例代码不同,Spring是一个真正的工业级框架——Rod Johnson将它与Struts和WebWork并列。如果这本书能让你喜欢上Rod Johnson这个人,也许你可以通过Spring更多地了解他。

在这样一篇书评的最后,我应该如何评价这本《J2EE设计开发编程指南》的中文译本呢?也许可以套用一位朋友的话,“一切都尽可能地糟糕”——每读这个译本一段时间,我就不得不把《七缀集》翻出来漱漱口,因为这几位译者的文气弄得我口臭不堪。听说Wrox的书封面上的人头数与书的质量成反比,看来同样的规律也适用于它们的译本。

本文地址:http://com.8s8s.com/it/it37567.htm