01、JDK源码解析-阅读指引

说在最前面的话:

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

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: