说在最前面的话:

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

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

一、准备工作

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

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

具体下载方式请参考:https://www.jianshu.com/p/6fe47f6a1b2a

下载速度太慢,提供个百度网盘:https://pan.baidu.com/s/1MhEuyTbYc4Y-DlhSGK8P2g

二、目录简介

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 目录,其目录结构如下图所示:

  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源码的位置如图所示:

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

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

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

3、java.util.concurrent

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

4、java.util.concurrent.atomic

AtomicBoolean
AtomicInteger
AtomicLong
AtomicReference 

5、java.lang.reflect

Field
Method

6、java.lang.annotation

Annotation
Target
Inherited
Retention
Documented
ElementType
Native
Repeatable

7、java.util.concurrent.locks

Lock
Condition
ReentrantLock
ReentrantReadWriteLock

8、java.io

File
InputStream
OutputStream
Reader
Writer

9、java.nio

Buffer
ByteBuffer
CharBuffer
DoubleBuffer
FloatBuffer
IntBuffer
LongBuffer
ShortBuffer

10、java.sql

Connection
Driver
DriverManager
JDBCType
ResultSet
Statement 

11、java.net

Socket
ServerSocket
URI
URL
URLEncoder 

12、java.math

BigDecimal
BigInteger

参考资料:

1.https://blog.csdn.net/weixin_40806611/article/details/82217675

https://blog.csdn.net/weixin_39788856/article/details/94593656

JDK源码(1)-阅读指引相关推荐

  1. JAVA JDK源码在线阅读

    Java的版本是1.8.0_111,我把JDK源码发布到了github上,大家看起来也比较方便,地址: https://github.com/daiqingliang/java_jdk1.8.0_11 ...

  2. 如何更高效地阅读JDK源码

    简介 阅读源码的几个问题: 为什么要看JDK源码 JDK源码的阅读顺序 JDK源码的阅读方法 为什么要看JDK源码 一,JDK源码是其它所有源码的基础,看懂了JDK源码再看其它的源码会达到事半功倍的效 ...

  3. java调用clang编译的so_写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

    好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...

  4. 写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

    好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...

  5. jdk javac运行不了_Intellij IDEA搭建jdk源码阅读环境

    一.找到源码位置 直接找到jdk安装的目录,会看到src.zip的压缩包,这里面就是jdk的源码,例如下图: 在这里解压. 第一次尝试建议使用9或更早版本jdk的源码,否则易造成卡死. 二.Intel ...

  6. jdk源码分析书籍 pdf_如何阅读源码?

    点击上方"IT牧场",选择"设为星标" 技术干货每日送达! 阅读源码是每个优秀开发工程师的必经之路,那么这篇文章就来讲解下为什么要阅读源码以及如何阅读源码. 首 ...

  7. jdk源码阅读-HashMap

    前置阅读: jdk源码阅读-Map : http://www.cnblogs.com/ccode/p/4645683.html 在前置阅读的文章里,已经提到HashMap是基于Hash表实现的,所以在 ...

  8. Mac搭建JDK源码阅读环境

    点赞再看,养成习惯,微信公众号搜索[虚竹讲程序经],获取更多技术干货! 想要读懂JDK源码,需要在自己电脑上搭建JDK的源码阅读环境,正所谓,工欲善其事,必先利其器.下面演示如何在Mac上结合Idea ...

  9. idea 关联jdk源码_idea搭建阅读jdk源码教程(详细版)

    最近正在阅读jdk源码,首先在搭建阅读jdk源码过程中遇到了一些问题,在此分享一下自己的经验,以供大家参考. 1.阅读jdk源码之前要先获得jdk的源码,大家可以在网上下载到jdk源码,在此我提供另外 ...

最新文章

  1. 阿里达摩院2020趋势第一弹:感知智能的“天花板”和认知智能的“野望”(附链接)...
  2. 大家好,给大家介绍一下,这是我的智能伙伴…..
  3. Tracing mysqld Using DTrace
  4. java冒泡排序经典代码6_经典排序算法之冒泡排序
  5. ssis 角本组件更新数据_使用SSIS脚本组件作为数据源
  6. 解决页面textarea初始焦点显示位置不正确的问题
  7. C#制作QQ截图的自动框选功能的个人思路(二)设置Hook
  8. 保存命令行输出信息到log的方法(ubunut下和arm-linux下有效)
  9. 代码制作数字流星雨_js代码实现流星雨
  10. 速达5000进销存PDA条码打印扫码开单-吉度PDA定制
  11. 三农数据(1996-2020)五:农产品产量、就业人数、农村养老等
  12. Kotlin基础学习-入门篇
  13. SQL注入的常见方式
  14. 不使用imrotate 的图像旋转实现
  15. 微积分公式与运算法则
  16. 电脑磁盘(特别是C盘)又满了,不知道删除什么?试试这款磁盘分析工具
  17. 怎么注销百度云服务器账号,百度网盘怎么注销账号?账号注销方法一览
  18. 互联网+大赛作品_“颂中国力量 绘美好梦想”全市中小学生互联网+书画大赛作品展示(二十二)...
  19. 台信M18金属感应开关传感器三线NPN常开
  20. iphonex 测试电池软件,iPhoneX电池容量多大 iPhoneX电池性能评测【详解】

热门文章

  1. ZooKeeper 特点有哪些?
  2. RabbitMQ(三) HelloWorld 单生产者单消费者示例实现
  3. python图像加坐标_Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例...
  4. ps分辨率像素英寸和厘米的区别_关于像素,你想知道的都在这里
  5. SpringBoot 结合 RabbitMQ 简单项目
  6. echarts柱状图x轴文字纵向显示
  7. 微信小程序,格式化千分位并保留两位小数
  8. 首次结算和汇总不一致
  9. Dubbo源码分析系列之-深入Dubbo扩展机制
  10. 那些公司用计算机仪表电缆,计算机及仪表用电缆技术