JDK源码(1)-阅读指引

简介: JDK源码(1)-阅读指引

 说在最前面的话:

其实JDK源码的阅读,网上资料特别多,我阅读的最主要目的是自己学习,所以我读的可能不那么好,我的角度是从源码和源码对应的注释读起,顺便还能练练英语。

接下来准备对JDK的常见源码进行一下阅读,特整理一个学习指南出来供大家参考:

一、准备工作

以JDK1.8版本进行阅读。我下载的是比较新的jdk8u版本。

源码下载地址:http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/archive/78d2004f65eb.zip

具体下载方式请参考:openJDK源码下载 - 简书

下载速度太慢,提供个百度网盘:jdk-78d2004f65eb.zip_免费高速下载|百度网盘-分享无限制

二、目录简介

image.gif编辑

1.corba

全称:Common Object Request Broker Architecture(通用对象请求代理架构)

不常用的多语言、分布式通讯接口,基于对象-服务机制设计,类似于 JavaBean 和微软的 COM 技术。>

2.hotspot

全称 :Java HotSpot Performance Engine(Java HotSpot性能引擎)

是 Java 虚拟机的一个实现,包含了服务器版和桌面应用程序版。利用 JIT 及自适应优化技术(自动查找性能热点并进行动态优化)来提高性能。

3.jaxp

全称: Java API for XML Processing(处理 XML 的 Java API)

提供了解析和验证 XML 文档的能力。

4.jaxws

全称: Java API for Web Services(XML Web Services 的 Java API)

JAX-WS 允许开发者选择面向 RPC(RPC-oriented)或是面向消息(Message-oriented)的方式来实现自己的 Web Services。

5.jdk

包含了 JDK 的实现,实现源码位于 jdk/src/share 目录,其目录结构如下图所示:

image.gif编辑

    1. classes 目录包含的是 Java 实现,native 目录包含的是 C++ 实现
    2. back、instrument、javavm、npt、transport 等目录包含了实现 Java 的基础部分的 C++ 源码,在这里可以从最底层理解 Java。
    3. sample 和 demo 目录包含一些示例。

    6.langtools

    Java 语言工具,包含 javac、javap 等实用程序的源码。

    7.nashorn

    JVM 上的 JavaScript 运行时,基于 JSR-223 协议,Java 开发者可在 Java 程序中嵌入 JavaScript 代码。

    三、源码的阅读顺序

    我们主要研究的是jdk源码,中间可能会穿插一些其他的c语言实现来提升逼格,而jdk源码的位置如图所示:

    image.gif编辑

    网上有一份整理的非常好的指引,我计划就按这个顺序来读了。

    1.java.lang

    Object
    String
    AbstractStringBuilder
    StringBuffer
    StringBuilder
    Boolean
    Byte
    Double
    Float
    Integer
    Long
    Short
    Thread
    ThreadLocal
    Enum
    Throwable
    Error
    Exception
    Class
    ClassLoader
    Compiler
    System
    Package
    Void
    Number
    Math

    image.gif

    2.java.util

    AbstractList 
    AbstractMap
    AbstractSet 
    ArrayList 
    LinkedList
    HashMap 
    Hashtable
    HashSet
    LinkedHashMap
    LinkedHashSet
    TreeMap
    TreeSet
    Vector
    Queue
    Stack
    SortedMap
    SortedSet 
    Collections
    Arrays
    Comparator
    Iterator
    Base64 
    Date
    EventListener
    Random 
    SubList 
    Timer 
    UUID 
    WeakHashMap

    image.gif

    3、java.util.concurrent

    ConcurrentHashMap
    Executor
    AbstractExecutorService 
    ExecutorService 
    ThreadPoolExecutor
    BlockingQueue
    AbstractQueuedSynchronizer
    CountDownLatch
    FutureTask
    Semaphore
    CyclicBarrier
    CopyOnWriteArrayList 
    SynchronousQueue
    BlockingDeque 
    Callable

    image.gif

    4、java.util.concurrent.atomic

    AtomicBoolean
    AtomicInteger
    AtomicLong 
    AtomicReference

    image.gif

    5、java.lang.reflect

    Field
    Method

    image.gif

    6、java.lang.annotation

    Annotation
    Target
    Inherited
    Retention
    Documented
    ElementType
    Native 
    Repeatable

    image.gif

    7、java.util.concurrent.locks

    Lock 
    Condition
    ReentrantLock
    ReentrantReadWriteLock

    image.gif

    8、java.io

    File
    InputStream
    OutputStream
    Reader
    Writer

    image.gif

    9、java.nio

    Buffer
    ByteBuffer
    CharBuffer
    DoubleBuffer
    FloatBuffer
    IntBuffer
    LongBuffer
    ShortBuffer

    image.gif

    10、java.sql

    Connection
    Driver 
    DriverManager 
    JDBCType 
    ResultSet
    Statement

    image.gif

    11、java.net

    Socket 
    ServerSocket 
    URI 
    URL
    URLEncoder

    image.gif

    12、java.math

    BigDecimal
    BigInteger

    image.gif

    参考资料:

    1.JDK源码学习手册(一)_青黄接不接?的博客-CSDN博客_jdk源码剖析手册

    JDK源码学习_书呆子Eric的博客-CSDN博客_jdk源码怎么学

    相关文章
    |
    4天前
    |
    安全 前端开发 Java
    JDK源码级别彻底剖析JVM类加载机制
    JDK源码级别彻底剖析JVM类加载机制
    |
    4天前
    |
    缓存 Dubbo Java
    趁同事上厕所的时间,看完了 Dubbo SPI 的源码,瞬间觉得 JDK SPI 不香了
    趁同事上厕所的时间,看完了 Dubbo SPI 的源码,瞬间觉得 JDK SPI 不香了
    |
    8月前
    |
    Java 容器
    阿里内部流传的JDK源码剖析手册!GitHub已获上千万的访问量
    相信现在已经有很多小伙伴知道了“微软”要对JDK下手了! JDK是什么? jdk是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。jdk是整个java开发的核心,它包含了JAVA的运行环境和JAVA工具。相对而言,没有jdk的话,无法编译Java程序(指java源码.java文件),如果想只运行Java程序(指class或jar或其它归档文件),要确保已安装相应的JRE。
    208 0
    |
    4天前
    |
    缓存 Java Spring
    Spring 源码阅读 66:基于 JDK 的 AOP 代理如何获取拦截器链(4)- 将 Advice 封装为拦截器
    【1月更文挑战第1天】本文分析了 Advice 被封装成 MethodInterceptor 的过程,Spring AOP 用到的五种 Advice 中,有些本身就是 MethodInterceptor 的实现类,而有些需要通过适配器的封装。
    44 0
    |
    8月前
    |
    设计模式 Java 程序员
    太爆了!阿里最新出品2023版JDK源码学习指南,Github三天已万赞
    最近后台收到很多粉丝私信,说的是程序员究竟要不要去读源码?当下行情,面试什么样的薪资/岗位才会被问到源码? 对此,我的回答是:一定要去读,并且要提到日程上来! 据不完全统计,现在市面上不管是初级,中级,还是高级岗,面试的时候都有可能会问到源码中的问题,它已经成为程序员常规必备的一个技术点。如果你当下想通过一个面试,或者想把中级薪资要到相对于比较高的话,源码这块就必须要会。
    100 0
    |
    4天前
    |
    算法 Java 索引
    【数据结构与算法】4、双向链表(学习 jdk 的 LinkedList 部分源码)
    【数据结构与算法】4、双向链表(学习 jdk 的 LinkedList 部分源码)
    35 0
    |
    4天前
    |
    设计模式 Java
    根据JDK源码Calendar来看工厂模式和建造者模式
    根据JDK源码Calendar来看工厂模式和建造者模式
    |
    4天前
    |
    Java Linux iOS开发
    Spring5源码(27)-静态代理模式和JDK、CGLIB动态代理
    Spring5源码(27)-静态代理模式和JDK、CGLIB动态代理
    24 0
    |
    4天前
    |
    XML Java 数据格式
    Spring 源码阅读 70:基于 JDK 的 AOP 代理拦截器链执行(4)- 容易被忽略的 ExposeInvocationInterceptor
    【1月更文挑战第5天】本文分析了 Spring AOP 拦截器链中的一个特殊拦截器 ExposeInvocationInterceptor 的注册的时机以及它的作用。至此,基于 JDK 的 AOP 代理拦截器链执行的逻辑就分析完了。
    450 0
    |
    4天前
    |
    Java 索引 Spring
    Spring 源码阅读 69:基于 JDK 的 AOP 代理拦截器链执行(3)- MethodInterceptor 分析
    【1月更文挑战第4天】本文详细分析了 Spring AOP 中五种增强类型对应的拦截器中增强方法的执行逻辑,结合上一篇中分析的 ReflectiveMethodInvocation 中proceed方法的执行逻辑,就组成了完整的拦截器链递归调用的逻辑。
    35 0