JDK源码(1)-阅读指引

说在最前面的话:

其实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

  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十步杀一人_千里不留行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值