穿越时间的蛀洞
熊节
(本文首发于《中华读书报》2003年12月17日号)
对瓦尔特·本雅明来说,时间不是一以贯之的连续体,而是充满着裂缝和捷径——不妨说是“蛀洞”。过往的幽灵总会挑选一个时刻在当前复活,历史以群星灿烂的格局星罗棋布。为这种神秘的论调提供支持的不仅有史料和呈螺旋状的流行风潮,也包括了各种各样的书籍:两本素昧平生的书,其间的联系或许胜于它们各自书架上的邻居;一位突如其来的异乡人,或许能唤起读者最熟稔的记忆。
譬如那本《应用服务器原理与实现》(电子工业出版社2003年6月),在两位朋友的推荐之下,我从新华书店一贯混乱的货架上找到了它。显然,它的出版者看中的是日益升温的J2EE热潮,但阅读它却让我更多地想起潘爱民老师1999年推出的《COM原理与应用》。一个足够热门的话题,加上足以令老读者倍感亲切的内容。唯一的遗憾是:这位可敬的作者似乎乐于用这些弥足珍贵的素材写出一本红头文件。使徒保罗对柯林斯人说:“舌头若不说容易明白的话……就是向空中说话了。”也许“向空中说话”正是作者的愿想?
而这本《Java企业设计模式》(Java Enterprise Design Patterns,电子工业出版社2003年8月)应该算是购买前一本书时的意外收获——新华书店的意外收获,这俨然是一个矛盾修辞了。像一条时光隧道,它连接起的另一端是2001年5月——我痴醉于设计模式的日子。一本新书却成了久别重逢的旧友,勾起了恍若隔世的记忆。不知道有多少人读过Patterns in Java的前两卷(这本《Java企业设计模式》是第三卷),至少在我这里,比起混迹于《Java设计模式》、《模式与Java》……之类书名中无法辨认的中译名,Mark Grand的名字更足以吸引我的目光和购买欲望。
在J2EE的话语甚嚣尘上的日子里,这本书的语词也如同一位穿越时空的异乡人,散发着脱世孑立的高傲,并因此显得与时代格格不入。例如全书最复杂的“持久层”(Persistence Layer)模式,恐怕读者需要花一点时间才会发现它其实正是“数据访问对象”(Data Access Object,DAO)模式和一些基础设施的结合物;而“会话对象”(Session Object)模式早已是J2EE应用服务器内建的功能。在Mark Grand的眼中,J2EE没有任何特殊地位,《Java企业设计模式》直接深入了Java企业级应用的底层技术(事务、并发、分布式、持久化)。如果把这些底层机制视为应用服务器的领地,那么这本书甚至可以成为理解J2EE应用服务器的地图。
另一方面,绕开语词的障碍,应用开发者也不难在这里找到自己熟悉的坐标——陌生的语词也许像异乡人口里的格言,异域的风情在突兀之中给你留下深刻的印象,但追根溯源却可能发现这格言竟是从自己的语言中翻译过去的。C. Alexander说,模式是解决常见问题的方案。浸淫企业级开发二十余年的经验,虽然使Mark Grand的语词略显陈旧,却保证了他收录的模式直指企业应用最常见的问题,从而使这本容量有限的模式集具有了最大化的价值。而且,夜深人静时,这种时空的错位反倒给了我一种新奇的阅读体验:虽然书中的“旧”符码在日新月异的技术领域显得有点不合时宜,但符码的所指却是我在J2EE应用中不时遇到的“新”问题。媒介与内容之间强大的张力,让手中的书成为了“最熟悉的陌生人”——Java人爱打趣地说“there's nothing new under the SUN”,在这里真是一语成谶。
在那本Expert One-to-One J2EE Design and Development里,Rod Johnson有一个精辟的论断:一个优秀的Web应用首先必须是一个优秀的J2EE应用,而一个优秀的J2EE应用首先必须是一个优秀的Java应用。念及此,在J2EE的信息潮涌中拼命挣扎的开发者们大概可以给自己一个理由,暂时忘却那些令人生畏的三字母、四字母缩写词,穿越时间的蛀洞回到那个古雅的时代,用别一种的眼光来看待自己的“J2EE问题”——Mark Grand的Patterns in Java系列,尤其是这本《Java企业设计模式》,应该是一位合格的旅伴。
本文地址:http://com.8s8s.com/it/it37411.htm