java程序员如何有效正确的阅读JDK源码?

可能的一种阅读顺序是:基本类型的包装类(Character放在最后)String、StringBuffer、StringBuilder、StringJoiner、StringTokenizer(补充正则表达式的知识)CharacterIterator、StringCharacterIterator、CharsetProvider、CharsetEncoder、CharsetDecoder(较难)java.util.function下的函数表达式java.nio下的各种Buffer实现java.lang.ref和jdk.internal.ref下的各种引用:软引用/弱引用/虚引用Unsafe的实现(JDK9之后有两个同名类,一个引用了另一个,建议放在一起阅读)java.util.stream下的流式编程的实现(很难)Thread和ThreadLocalMath、Random、BigInteger、BigDecimaljava.lang.reflect下反射的实现(先掌握JDK 9之后引入的模块系统)ClassLoader的实现javax.lang.model下Java语言模型的实现(可以参考Java官方语法文档)注解(需要彻底掌握)Timer、ResourceBundle、Properties时间日期类型(尤其是Java8新增的部分)java.lang.reflect.Proxy, JDK默认的动态代理java.util.concurrent并发包。阅读源码需要理论先行。在此,我更推荐把源码阅读当成是一项兴趣爱好去做,就好比有的人通过打游戏看直播放松,有的人通过刷新闻追热剧放松,还有的人通过找朋友吹牛逼放松...不同的人会选择不同的劳逸结合方式,我更喜欢不写代码的时候,通过看别人的代码来放松。

前言

如何阅读源码,是每个程序员需要面临的一项挑战。

为什么需要阅读源码?从实用性的角度来看,主要有三个目的:

第一,解决手头的新问题或者新需求;

第二,真正理解一部分理论的落地实现;第三,应对面试。端正心态

在准备投身到阅读源码的事业之前,首先需要端正一下心态:

阅读源码是一场持久战,浅尝辄止的话,顶多能写几篇水文,吸点粉糊弄下新手,对自身实力的提高没有显著作用。

阅读源码是锦上添花,不是雪中送炭。如果你进入一个全新的领域,首要的任务是读文档而不是读源码。

阅读源码不一定会让你成为大神。大神有两个方向:专家型和应用型,无论你的发展偏向哪一方,大量实操才是最根本的保障。

阅读源码需要理论先行。比如阅读Socket通信的代码却不知道TCP/UDP协议,那就像是无头苍蝇在乱撞而已。

在此,我更推荐把源码阅读当成是一项兴趣爱好去做,就好比有的人通过打游戏看直播放松,有的人通过刷新闻追热剧放松,还有的人通过找朋友吹牛逼放松...不同的人会选择不同的劳逸结合方式,我更喜欢不写代码的时候,通过看别人的代码来放松。

作为一名Javaer,朝夕相处的JDK自然是你遇到的第一处宝藏之地。从阅读JDK代码出发,可以深入理解Java的一些新老特性,并学习部分设计模式的应用,以及为将来阅读更庞大的框架打下扎实的理论基础与顽强的心理基础。选择工具

工欲善其事必先利其器,起步之前,需要先选择一款源码阅读工具。在工具的选择上,同行的建议很多,我大致将其分为四类:

文本型工具(该分类可能会有争议,不过这不是重点...)

例如Nodepad++、EditPlus、UEStudio、Sublime、VsCode、Vim等

为您推荐