Netty 源码共读(一)如何阅读JDK下sun包的源码

简介: Netty 源码共读(一)如何阅读JDK下sun包的源码

基础文章,就如标题所说,就如何阅读JDK下sun包的源码做出了解答,可能会上推荐,如果大家不感兴趣或不需要,可以直接退出,以免浪费时间。

谢谢~

前言

在写这篇文章前,我先说说我个人的状况。我非常简单的学过 Netty,跑过 Netty 的简单项目,大致了解其中的一些知识。但都停留在理论和demo上,看到这个活动要阅读的是Netty框架时,我个人是有些畏惧的,因为我还没有在项目中使用过 Netty,并且还没能熟练的使用它。

它不认识我,但我已在诸多地方听闻过它的存在,著名 RPC 框架 Dubbo 底层则采用了 Netty 来进行通信,淘宝的消息中间件 RocketMQ 的消息生产者和消息消费者之间,采用 Netty 进行高性能、异步通信。还有 Redis 常用的 Lettuce、搜索引擎Elastic Search 等等~

Netty 官网给的列表:netty.io/wiki/relate…(我觉得是不齐全的hh)

写都写到这里啦,还是补上吧,我觉得这次活动后端难度有点高啦,完全没想到,直接上手Netty啦(我太菜,别骂我,只是我的看法)

源码阅读还没开始,今天只是解决阅读jdk源码的问题~

今天夜晚在宁姐带领下,已经迈开第一步啦,明天或者后天应该能完成任务关卡一啦。

一、克隆张师傅项目并运行起来

克隆项目

git clone https://github.com/arthur-zhang/netty-study.git

idea打开,等个一会~

启动 MyServer~

image.png

复制ServerSocketChannelImpl双击shift,定位到这个文件:

image.png

你会发现,sun 包下的文件,全部都是class文件,变量名也全都变成了 var1、var2等等,也没有注释可以看。

二、解决问题

如果你是像我一样,从Oracle官网上的下载的 Jdk 8,你会发现不能阅读sun包下的源码,这主要是我们下载的 JDK 中的文件src.zip中本身就是没有这部分的源码的。

image.png

下载JDK源码

git clone https://github.com/unofficial-openjdk/openjdk.git #克隆至本地

我这里是克隆啦整个项目,但其实我们只需要 sun.* 代码,可以直接切换至 jdk8u/jdk8u 分支下载,会快很多,因为整个项目大致有1.3G左右,网速稍慢,可能就.... hh

image.png

刚下载下来的样子

git checkout jdk8u/jdk8u # 切换分支

image.png

我们需要的源码文件在

openjdk\jdk\src\share\classes

image.png

替换原JDK下src.zip文件

复制原JDK下src.zip出来备份,然后解压出来里面的内容,将上面的 sun 目录复制到一起,重新打包成src.zip文件

image.png

将重新打包的src.zip替换掉原JDK下的src.zip文件。

解决问题

如果替换时说文件正在打开,关闭掉正打开的class文件或者项目即可。

之后再打开,就可以看到文件已经显示为.java后缀啦,这样我们就可以快乐阅读啦

image.png

三、后语

源码阅读还没开始,今天夜晚在宁姐带领下,已经迈开第一步啦,明天或者后天应该能完成任务关卡一啦。

虽然我也觉得阅读源码,或许应该不是我现在该做的事情,但是有目标的去进行一件事情,总让我的生活变得充实。让我的时间利用达到了最大化,我很喜欢。

并且这也让我停更的博客,又重新的开始写啦, 我觉得还是有意义的。

通过阅读其他人的博客、书籍进行知识的输入,再经以实践,加以自己的理解,最终通过文字进行传播,我觉得还是一件有意义的事情吧。 薪火相传~

用一一说给我听的一句话作为本篇文章的结尾

一:”我们都在努力成为更好的自己,我的天,人生真是美好

:“哪里美好啦呀 ~"

一:”我们成为更好的自己这件事,光看这几个字,就对未来充满热爱


目录
相关文章
|
1月前
|
安全 前端开发 Java
JDK源码级别彻底剖析JVM类加载机制
JDK源码级别彻底剖析JVM类加载机制
|
1月前
|
Java API 容器
《跟闪电侠学Netty》阅读笔记 - 数据载体ByteBuf
《跟闪电侠学Netty》阅读笔记 - 数据载体ByteBuf
97 0
|
1月前
|
缓存 网络协议 算法
《跟闪电侠学Netty》阅读笔记 - Netty入门程序解析
《跟闪电侠学Netty》阅读笔记 - Netty入门程序解析
163 0
|
6天前
|
机器学习/深度学习 缓存 算法
netty源码解解析(4.0)-25 ByteBuf内存池:PoolArena-PoolChunk
netty源码解解析(4.0)-25 ByteBuf内存池:PoolArena-PoolChunk
|
7天前
|
Java
Netty传输object并解决粘包拆包问题
Netty传输object并解决粘包拆包问题
7 0
|
6天前
|
Java
Netty中粘包拆包问题解决探讨
Netty中粘包拆包问题解决探讨
2 0
|
8天前
|
Java Spring
深入解析Spring源码,揭示JDK动态代理的工作原理。
深入解析Spring源码,揭示JDK动态代理的工作原理。
11 0
|
1月前
|
JSON 移动开发 网络协议
数据拆散与黏连:深入剖析Netty中的半包与粘包问题
数据拆散与黏连:深入剖析Netty中的半包与粘包问题
36 0
|
1月前
|
设计模式 Java
根据JDK源码Calendar来看工厂模式和建造者模式
根据JDK源码Calendar来看工厂模式和建造者模式
|
1月前
|
算法 Java 索引
【数据结构与算法】4、双向链表(学习 jdk 的 LinkedList 部分源码)
【数据结构与算法】4、双向链表(学习 jdk 的 LinkedList 部分源码)
44 0