基础文章,就如标题所说,就如何阅读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~
复制ServerSocketChannelImpl
双击shift
,定位到这个文件:
你会发现,sun 包下的文件,全部都是class文件,变量名也全都变成了 var1、var2等等,也没有注释可以看。
二、解决问题
如果你是像我一样,从Oracle官网上的下载的 Jdk 8,你会发现不能阅读sun包下的源码,这主要是我们下载的 JDK 中的文件src.zip中本身就是没有这部分的源码的。
下载JDK源码
git clone https://github.com/unofficial-openjdk/openjdk.git #克隆至本地
我这里是克隆啦整个项目,但其实我们只需要 sun.* 代码,可以直接切换至 jdk8u/jdk8u 分支下载,会快很多,因为整个项目大致有1.3G左右,网速稍慢,可能就.... hh
刚下载下来的样子
git checkout jdk8u/jdk8u # 切换分支
我们需要的源码文件在
openjdk\jdk\src\share\classes
替换原JDK下src.zip文件
复制原JDK下src.zip出来备份,然后解压出来里面的内容,将上面的 sun 目录复制到一起,重新打包成src.zip文件
将重新打包的src.zip替换掉原JDK下的src.zip文件。
解决问题
如果替换时说文件正在打开,关闭掉正打开的class文件或者项目即可。
之后再打开,就可以看到文件已经显示为.java后缀啦,这样我们就可以快乐阅读啦
三、后语
源码阅读还没开始,今天夜晚在宁姐带领下,已经迈开第一步啦,明天或者后天应该能完成任务关卡一啦。
虽然我也觉得阅读源码,或许应该不是我现在该做的事情,但是有目标的去进行一件事情,总让我的生活变得充实。让我的时间利用达到了最大化,我很喜欢。
并且这也让我停更的博客,又重新的开始写啦, 我觉得还是有意义的。
通过阅读其他人的博客、书籍进行知识的输入,再经以实践,加以自己的理解,最终通过文字进行传播,我觉得还是一件有意义的事情吧。 薪火相传~
用一一说给我听的一句话作为本篇文章的结尾
一:”我们都在努力成为更好的自己,我的天,人生真是美好”
春
:“哪里美好啦呀 ~"一:”我们成为更好的自己这件事,光看这几个字,就对未来充满热爱“