前言

搞IT技术已经有十多年的历史了,接触Java语言也有一定的时间了。为什么到现在才要写这本书呢?几年前我开发过一个ORM模型框架,当时的思路居然与iBATIS框架有一些类似(可见英雄所见略同)。于是,为了更好地实现这个ORM框架,我仔细阅读了iBATIS框架的源码。在阅读过程中,由于iBATIS框架代码层层叠叠、峰回路转、跌宕起伏,为了理清框架的主要思路和核心实现方式、加快理解速度和加深理解深度,我用PowerDesigner画了一些UML图,并做了一些阅读笔记和备忘录。一个月下来,基本上从总体架构上了解了iBATIS框架的实现。这时候阅读笔记和备忘录已大约积累了好几万字。我想,如果能把这些笔记和备忘录进行系统化、简单化、章节化的整理,就可以给更多iBATIS爱好者使用。同样,这些学习心得对软件架构师、软件开发工程师等都非常有价值,所谓它山之石,可以攻玉。于是,我决定写一本关于iBATIS框架源码剖析的书籍。而在实际操作中,我觉得在讲述iBATIS源码的同时,已经涉及很多关于ORM的内容,也有一些Java的基础处理和编程技巧,甚至还包括一些经典的设计模式。

在国内介绍和讲述开源软件的书可谓是琳琅满目,不胜枚举。但这些书基本上都归纳为应用型或工具型,更趋向于软件的使用说明或使用指南之类。而且,在全球这么多开源框架代码中,我国做出的贡献还是非常少的。分析原因,主要是我们热衷于拿来主义,直接就用,能解决问题就行。而对于源码,也许只有在使用过程中遇到了障碍,为了解决问题才做一些源码阅读和分析,这也是国内许多人很少去分析开源框架源码的原因,而且介绍开源软件实现的书籍也是凤毛麟角。我写这本书的目的,就是希望在这方面能与大家多分享一些学习心得和体会。

对于开源代码,能读懂并搞明白是一回事。但是理解了源代码,把这些东西用文字表述出来,让别人也能理解却是另一回事。我觉得后者的难度远远大于前者。当然,如果仅仅是简单地介绍iBATIS框架,我相信只要有几句话就能说清楚。但是要把一个实现框架说得条理清晰、层次鲜明,这不仅仅要求有一定的技术背景,还要有文字语言的表达和掌控能力。我用一个月时间就基本上搞明白了iBATIS框架的内容,但是要把它写出来,的确非常头疼。有的时候要非常细致地去推敲,因为很多琐碎的细节决定了整个框架的核心,这需要有一定的耐心和抽象能力。同时阅读和理解程序源码是一种实践性非常强的工作,所谓读书破万卷,下笔如有神,这是一个真理。但若阅读并理解了几十万行程序代码后,再来编写程序代码,那基本上就可以非常有章法并有一定的深度了。事实上,我国大学目前计算机教育的水平是基础性质的,对于如何去阅读源码没有相关的课程来进行讲授。对于源码的分析有什么办法、手段和策略,即如何把那些复杂的程序代码用简单的语言表达出来,让别人能迅速地理解并掌握,我国的教育还是做得不够的,也没有专人或学者来搞这方面的研究。但笔者觉得这项工作是非常重要,而且也是很有意义的。事实上,每个开发人员和设计人员在实践中都有自己的一套读取和分析源码方法。当然这也是仁者见仁、智者见智的事。我的方法和手段只是其中之一而已。所以说我在编写这本书时对源码的剖析只是做了一些非常粗浅但是有意义的尝试,以试图弥补国内软件行业在这方面的缺陷。

当然,阅读本书也要具备一定的基础知识,否则,有些术语和解释还是比较难以理解的。

我在本书的编写过程中花费了大量的时间。而且,这些工作都是在业余时间内完成的,每天都要照常上班,只有到了晚上或者节假日,才有闲暇写这些东西。一般技术人员都喜欢新鲜事物,如果说去阅读和理解开源代码,也许还有一些挑战性,大家可能都有兴趣去做这件事情,但是要把这些东西用文字表述出来并给别人讲述,则许多人就不太愿意干了,原因是这是一项非常枯燥的任务,写作的艰辛旁人是很难理解的。很高兴的是我还是坚持下来了,度过了无数个寂寞和孤单的晚上终于把这本书奉献给了读者。

在这期间,我要感谢我的家人对我的理解和支持。我要感谢我的妻子在这期间承担了全部的家务,同时也要感谢我女儿在我撰写书稿的时候没给我添太多的麻烦,她一直没有搞明白爸爸总是待在电脑前做什么。我要感谢我的父母,他们肯定不知道我写的内容,但是无论我做什么,有没有成绩,他们都是一如既往地给予鼓励。我把这里的一切都献给他们。

我还要感谢本书的编辑高洪霞和顾慧芳。没有她们耐心的指导和完善,这本书也许只是一个读书笔记,我也要感谢本书的策划编辑袁金敏,是她给我信心让我继续下去,否则这些资料只能是束之高阁。我还要感谢那些在编写本书作出贡献的所有人,他们都是默默无闻的后台工作者。

当然,由于笔者水平有限,书中的错误和缺点在所难免,希望读者能给予批评和指正。笔者的联系方式:rengang66@sina.com。

编者

2009年12月于深圳