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

三、后语

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

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

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

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

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

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

:“哪里美好啦呀 ~"

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


目录
相关文章
|
6月前
|
安全 前端开发 Java
JDK源码级别彻底剖析JVM类加载机制
JDK源码级别彻底剖析JVM类加载机制
|
3月前
|
编解码 网络协议 开发者
Netty运行原理问题之NettyTCP的粘包和拆包的问题如何解决
Netty运行原理问题之NettyTCP的粘包和拆包的问题如何解决
|
3月前
|
算法 安全 Java
深入JDK源码:揭开ConcurrentHashMap底层结构的神秘面纱
【8月更文挑战第24天】`ConcurrentHashMap`是Java并发编程中不可或缺的线程安全哈希表实现。它通过精巧的锁机制和无锁算法显著提升了并发性能。本文首先介绍了早期版本中使用的“段”结构,每个段是一个带有独立锁的小型哈希表,能够减少线程间竞争并支持动态扩容以应对高并发场景。随后探讨了JDK 8的重大改进:取消段的概念,采用更细粒度的锁控制,并引入`Node`等内部类以及CAS操作,有效解决了哈希冲突并实现了高性能的并发访问。这些设计使得`ConcurrentHashMap`成为构建高效多线程应用的强大工具。
50 2
|
3月前
|
移动开发 网络协议 算法
(十)Netty进阶篇:漫谈网络粘包、半包问题、解码器与长连接、心跳机制实战
在前面关于《Netty入门篇》的文章中,咱们已经初步对Netty这个著名的网络框架有了认知,本章的目的则是承接上文,再对Netty中的一些进阶知识进行阐述,毕竟前面的内容中,仅阐述了一些Netty的核心组件,想要真正掌握Netty框架,对于它我们应该具备更为全面的认知。
150 2
|
5月前
|
Java
Netty传输object并解决粘包拆包问题
Netty传输object并解决粘包拆包问题
48 0
|
5月前
|
Java
Netty中粘包拆包问题解决探讨
Netty中粘包拆包问题解决探讨
32 0
|
5月前
|
Java Spring
深入解析Spring源码,揭示JDK动态代理的工作原理。
深入解析Spring源码,揭示JDK动态代理的工作原理。
56 0
|
6月前
|
JSON 移动开发 网络协议
数据拆散与黏连:深入剖析Netty中的半包与粘包问题
数据拆散与黏连:深入剖析Netty中的半包与粘包问题
142 0
|
6月前
|
设计模式 Java
根据JDK源码Calendar来看工厂模式和建造者模式
根据JDK源码Calendar来看工厂模式和建造者模式
|
6月前
|
算法 Java 索引
【数据结构与算法】4、双向链表(学习 jdk 的 LinkedList 部分源码)
【数据结构与算法】4、双向链表(学习 jdk 的 LinkedList 部分源码)
66 0