
Java
源码阅读的真实体会
刚才在论坛不经意间, 看到有关源码阅读的帖子。 回想自己前几年, 阅读源码那种兴奋
和成就感 (1),不禁又有一种激动。
源码阅读,我觉得最核心有三点:技术基础 +强烈的求知欲 +耐心。
说到技术基础,我打个比方吧,如果你从来没有学过 Java,或是任何一门编程语言如 C++,
一开始去啃《 Core Java》,你是很难从中吸收到营养的,特别是《深入 Java虚拟机》这类书,
别人觉得好,未必适合现在的你。
虽然 Tomcat 的源码很漂亮,但我绝不建议你一开始就读它。我文中会专门谈到这个,暂时
不展开。
强烈的求知欲, 我认为是阅读源码的最核心驱动力。 我见到绝大多数程序员, 对学习的态度,
基本上就是这几个层次 (很偏激哦 ):
1、只关注项目本身,不懂就 baidu 一下。
2、除了做好项目,还会阅读和项目有关的技术书籍,看 wikipedia 。
3、除了阅读和项目相关的书外,还会阅读 IT 行业的书,比如学 Java时,还会去了解函数语
言,如 LISP。
4、找一些开源项目看看,大量试用第三方框架,还会写写 demo 。
5、阅读基础框架、 J2EE规范、 Debug 服务器内核。
大多数程序都是第 1 种,到第 5 种不光需要浓厚的兴趣,还需要勇气:我能读懂吗?其实,
你能够读懂的。
耐心, 真的很重要。 因为你极少看到阅读源码的指导性文章或书籍, 也没有人要求或建议你
读。你读的过程中经常会卡住,而一卡主可能就陷进了迷宫。这时,你需要做的,可能是暂
时中断一下,再从外围看看它:如 API 结构、框架的设计图。
我就说说如何读 Java源码,以及我曾经的阅读感悟。
Java 源码初接触
如果你进行过一年左右的开发,喜欢用 eclipse 的 debug 功能。好了,你现在就有阅读源码
的技术基础。
我建议从 JDK源码开始读起,这个直接和 eclipse 集成,不需要任何配置。
可以从 JDK的工具包开始, 也就是我们学的 《数据结构和算法》 Java版,如 List接口和 ArrayList、
LinkedList 实现, HashMap 和 TreeMap 等。这些数据结构里也涉及到排序等算法, 一举两得。
面试时,考官总喜欢问 ArrayList 和 Vector 的区别,你花 10 分钟读读源码,估计一辈子都忘
不了。
然后是 core 包,也就是 String、StringBuffer 等。
如果你有一定的 JavaIO 基础,那么不妨读读 FileReader 等类。我建议大家看看《 JavaIn A