说在最前面的话:
其实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
版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: