likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 51

基础文章,就如标题所说,就如何阅读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~

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

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

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

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

二、解决问题

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

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

下载JDK源码

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

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

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

刚下载下来的样子

git checkout jdk8u/jdk8u # 切换分支

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

我们需要的源码文件在

openjdk\jdk\src\share\classes

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

替换原JDK下src.zip文件

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

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

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

解决问题

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

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

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

三、后语

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

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

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

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

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

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

:“哪里美好啦呀 ~"

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

写于 2022 年 11 月 29 日晚,作者:宁在春

转载自:https://juejin.cn/post/7171465905480663048
评论
请登录