Netty 简介
Netty 是由 JBOSS 提供的一个开源的 java 网络编程框架,主要是对 java 的 nio 包进行了再次封装。Netty 比 java 原生的nio 包提供了更加强大、稳定的功能和易于使用的 api。 netty 的作者是 Trustin Lee,这是一个韩国人,他还开发了另外一个著名的网络编程框架,mina。二者在很多方面都十分相似,它们的线程模型也是基本一致 。不过 netty 社区的活跃程度要 mina 高得多。
版本选择:
3.x 目前企业使用最多的版本,最为稳定。例如dubbo使用的就是3.x版本
4.x 引入了内存池等重大特性,可以有效的降低GC负载,rocketmq使用的就是4.x
5.x 已经被废弃了,具体可参见 https://github.com/netty/netty/issues/4466
所以这里我搭建的源码阅读环境是存在的 4.1 版本。
准备工具
- IDEA 2017
环境搭建
在 IDEA 中导入项目地址:https://github.com/netty/netty.git ,然后就会自动下载项目所有的依赖,但是请注意:
必须在 IDEA 中将 Profiles 中的所有都勾选上,否则会导致很多 jar 包拉不下来,如下图:
然后就是耐心等待了,一直到所有的 jar 包拉取下来。
中途你可能会遇到如下问题:
这里的是 1.5 版本,导致我们如果想用些高级的语法会完全报错。
如果你把这个版本设置为 8 的版本后,
下面会提示你,项目是从 maven 导过来的,如果 maven 配置改变重新 reimport 后,任何在这里的改变都会丢失。
同时你会看到项目的 Java Compile 版本是 1.5 的,如下图:
同样,你在这里修改,如果 maven 配置改变重新 reimport 后,任何在这里的改变也都会丢失。我估计碰到这种问题的不少。
总结起来原因就是 maven 中的编译版本就是 1.5 的,所以才会导致这里的问题发生,如果想完全修改好(一劳永逸)。请直接对 pom 文件动刀,就是干!
只需把大项目(netty-parent)的那个 pom.xml 修改个属性,把版本信息提高到 1.8。
在等待它拉取 jar 包吧
搞完了之后发现还有两个模块(netty-bom、netty-dev-tools)不能设置到 版本,只能手动的和上面那种设置 language level 和 Java compile 为 1.8 了。
最后你会发现这里的完全没有报错了,开心不?
代码行数统计
额,看到项目这么多子模块,你都不知道该从哪里下手开始看,那么我就写了个简单的 Java 脚本去大概的统计每个子项目代码的行数。先看看统计结果:
整个项目差不多 23 万。(过滤了空行、各种注释和 @Override
之后的 Java 代码行数),靠这个数字很吓人!
来看看我的脚本代码吧:
1 | public static void main(String[] args) throws Exception { |
后面我会把我阅读源码的中文注释及解析之类的更新到我的 GitHub 去(欢迎关注、我是来骗 star 的),https://github.com/zhisheng17/netty ,如果你不想去自己设置上面所说的这些(偷懒),那就直接 fork 我的这份吧!
最后
环境搭建就写到这里了,转载请注明地址:http://www.54tianzhisheng.cn/2017/12/08/netty-01-env/