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源码怎么学

    相关文章
    |
    6月前
    |
    安全 前端开发 Java
    JDK源码级别彻底剖析JVM类加载机制
    JDK源码级别彻底剖析JVM类加载机制
    |
    6月前
    |
    缓存 Dubbo Java
    趁同事上厕所的时间,看完了 Dubbo SPI 的源码,瞬间觉得 JDK SPI 不香了
    趁同事上厕所的时间,看完了 Dubbo SPI 的源码,瞬间觉得 JDK SPI 不香了
    |
    3月前
    |
    算法 安全 Java
    深入JDK源码:揭开ConcurrentHashMap底层结构的神秘面纱
    【8月更文挑战第24天】`ConcurrentHashMap`是Java并发编程中不可或缺的线程安全哈希表实现。它通过精巧的锁机制和无锁算法显著提升了并发性能。本文首先介绍了早期版本中使用的“段”结构,每个段是一个带有独立锁的小型哈希表,能够减少线程间竞争并支持动态扩容以应对高并发场景。随后探讨了JDK 8的重大改进:取消段的概念,采用更细粒度的锁控制,并引入`Node`等内部类以及CAS操作,有效解决了哈希冲突并实现了高性能的并发访问。这些设计使得`ConcurrentHashMap`成为构建高效多线程应用的强大工具。
    54 2
    |
    5月前
    |
    Java Spring
    深入解析Spring源码,揭示JDK动态代理的工作原理。
    深入解析Spring源码,揭示JDK动态代理的工作原理。
    60 0
    |
    6月前
    |
    设计模式 Java
    根据JDK源码Calendar来看工厂模式和建造者模式
    根据JDK源码Calendar来看工厂模式和建造者模式
    |
    6月前
    |
    算法 Java 索引
    【数据结构与算法】4、双向链表(学习 jdk 的 LinkedList 部分源码)
    【数据结构与算法】4、双向链表(学习 jdk 的 LinkedList 部分源码)
    67 0
    |
    6月前
    |
    Java Linux iOS开发
    Spring5源码(27)-静态代理模式和JDK、CGLIB动态代理
    Spring5源码(27)-静态代理模式和JDK、CGLIB动态代理
    48 0
    |
    6月前
    |
    消息中间件 Oracle Dubbo
    Netty 源码共读(一)如何阅读JDK下sun包的源码
    Netty 源码共读(一)如何阅读JDK下sun包的源码
    127 1
    |
    6月前
    |
    算法 安全 Java
    ConcurrentLinkedQueue的源码解析(基于JDK1.8)
    ConcurrentLinkedQueue的源码解析(基于JDK1.8) ConcurrentLinkedQueue是Java集合框架中的一种线程安全的队列,它是通过CAS(Compare and Swap)算法实现的并发队列。在并发场景下,ConcurrentLinkedQueue能够保证队列的线程安全性,同时性能也很不错。
    |
    6月前
    |
    Java
    LinkedBlockingDeque的源码解析(基于JDK1.8)
    LinkedBlockingDeque的源码解析(基于JDK1.8) LinkedBlockingDeque是Java中的一个阻塞双端队列,它继承自AbstractQueue类并实现了BlockingDeque接口。在多线程环境下,LinkedBlockingDeque能够提供高效的并发访问能力。下面我们来看一下它的源码实现。