Netty环境搭建 (源码死磕2)

【正文】netty源码  死磕2: 环境搭建

本小节目录

1. Netty为什么火得屌炸天?

1.1. Netty是什么?

1.2. Netty火到什么程度呢?

1.3. Netty为什么这么火?

2. Netty是面试的必杀器吗?

3. 获取源码的注意事项

4. Netty工程

5. 运行 example

1. Netty为什么火得屌炸天?

1.1. Netty是什么?

Netty是JBOSS提供的一个Java开源框架NIO框架,用以快速开发高并发、高可用、高可靠性的网络服务器程序,和也能开发高可用、高可靠客户端程序。

1.2. Netty火到什么程度呢?

Netty已经得到成百上千的分布式中间件、开源项目、商业项目的应用。比如火爆的kafka、RocketMQ等消息中间件。如火热火热的ElasticSearch开源搜索引擎,都使用了Netty。如大数据处理Hadoop的RPC框架Avro以及主流的分布式通信框架Dubbo,都使用了Netty。

应该来说,使用Netty的火爆项目,已经有点数不过来了..........

1.3. Netty为什么这么火?

Netty提供异步的、事件驱动的网络应用程序框架和工具,相比JDK原生NIO,Netty提供了相对十分简单易用的API,非常适合网络编程。Netty是完全基于NIO实现的,所以Netty是异步的。

作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。

Netty的优点可以总结如下

1、API使用简单,开发门槛低;

2、功能强大,预置了多种编解码功能,支持多种主流协议;

3、定制能力强,可以通过ChannelHandler对通信框架进行灵活地扩展;

4、性能高,通过与其他业界主流的NIO框架对比,Netty的综合性能最优;

5、成熟、稳定,Netty修复了已经发现的所有JDK NIO BUG,业务开发人员不需要再为NIO的BUG而烦恼;

6、社区活跃,版本迭代周期短,发现的BUG可以被及时修复,同时,更多的新功能会加入;

2. Netty是面试的必杀器吗?

Netty 是互联网中间件领域使用最广泛最核心的网络通信框架。几乎所有互联网中间件或者大数据领域均离不开 Netty,掌握 Netty 是作为一名初中级工程师迈向高级工程师最重要的技能之一。

目前来说,主要的互联网公司,比如阿里、腾讯、美团、新浪、淘宝等,在高级工程师的面试过程中,也经常会问一些高性能通讯框架的方面的问题,还会问一些“你有没有读过什么著名框架的源代码?”等类似的问题。

如果掌握了Netty 相关的技术问题,更进一步说,如果你能全面地阅读和掌握 Netty源码,相信面试大公司时,底气十足,成功在握。

闲话少说,进入正题。

代码研究之前,第一步就是要准备环境。

3. 获取源码的注意事项

本系列博客中,以就拿github上的4.0分支进行。源码的获取有两种方式,一种是直接下载,一种是git clone。如果通过直接下载zip文件的方式获取4.0分支的代码的话,在编译的时候,有可能报错。

建议通过git的方式获取,命令如下:

git clone -b netty-4.0.33.Final --single-branch git@github.com:netty/netty.git

在git命令之前,如果是在windows环境,建议执行一条git换行符配置指令,命令如下:

git config --global  core.autocrlf  true

为什么呢?

git上提交代码的人用的系统不一样。有的人用windows,有的人用linux,两个系统对换行符的使用不一样,windows下是/r/n,但是linux下换行是/n。使用git config指令配置之后,git会自动屏蔽换行符的差异。如果没有上面的指令,编译代码是,可能会有line endings的错误。

4. Netty工程

下载源码后,就可以打开netty工程。

使用IDEA工具,打开后,如下:

Netty环境搭建 (源码死磕2)

5. 运行 example

netty源码中,有很多example例子程序,在example目录下。

Netty环境搭建 (源码死磕2)

打开 example 目录, 运行下面的例子了。可以打开,并且运行最简单的例子 example 下的 EchoServer 例子。

Netty环境搭建 (源码死磕2)

运行例子之前,如果遇到 Maven 依赖下不全的问题, 可以刷新Maven依赖后,再运行。

疯狂创客圈:

疯狂创客圈:如果说Java是一个武林,这里的聚集一群武痴, 交流编程体验心得
QQ群链接:疯狂创客圈QQ群

无编程不创客,无案例不学习。 一定记得去跑一跑案例哦

上一篇:Unity的Deferred Shading


下一篇:Java for LeetCode 150 Evaluate Reverse Polish Notation