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工具,打开后,如下:

5. 运行 example
netty源码中,有很多example例子程序,在example目录下。
打开 example 目录, 运行下面的例子了。可以打开,并且运行最简单的例子 example 下的 EchoServer 例子。
运行例子之前,如果遇到 Maven 依赖下不全的问题, 可以刷新Maven依赖后,再运行。
疯狂创客圈:
疯狂创客圈:如果说Java是一个武林,这里的聚集一群武痴, 交流编程体验心得
QQ群链接:疯狂创客圈QQ群
无编程不创客,无案例不学习。 一定记得去跑一跑案例哦
Netty环境搭建 (源码死磕2)的更多相关文章
- Pipeline模式(netty源码死磕6)
精进篇:netty源码死磕6 巧夺天工--Pipeline模式揭秘 1. 巧夺天工--Pipeline模式揭秘 1.1. Pipeline模式简介 管道的发名者叫,Malcolm Douglas M ...
- ChannelHandler揭秘(Netty源码死磕5)
精进篇:netty源码死磕5 揭开 ChannelHandler 的神秘面纱 目录 1. 前言 2. Handler在经典Reactor中的角色 3. Handler在Netty中的坐标位置 4. ...
- JAVA NIO 简介 (netty源码死磕1.1)
[基础篇]netty 源码死磕1.1: JAVA NIO简介 1. JAVA NIO简介 Java 中 New I/O类库 是由 Java 1.4 引进的异步 IO.由于之前老的I/O类库是阻塞I/ ...
- Java NIO Buffer(netty源码死磕1.2)
[基础篇]netty源码死磕1.2: NIO Buffer 1. Java NIO Buffer Buffer是一个抽象类,位于java.nio包中,主要用作缓冲区.Buffer缓冲区本质上是一块可 ...
- EventLoop(netty源码死磕4)
精进篇:netty源码 死磕4-EventLoop的鬼斧神工 目录 1. EventLoop的鬼斧神工 2. 初识 EventLoop 3. Reactor模式回顾 3.1. Reactor模式的组 ...
- Netty源码死磕一(netty线程模型及EventLoop机制)
引言 好久没有写博客了,近期准备把Netty源码啃一遍.在这之前本想直接看源码,但是看到后面发现其实效率不高, 有些概念还是有必要回头再细啃的,特别是其线程模型以及EventLoop的概念. 当然在开 ...
- hadoop源码eclipse环境搭建-源码获取阶段
就目前了解,结合eclipse阅读和编译hadoop源码用两种方式:svn和git. 根据官方指南http://wiki.apache.org/hadoop/EclipseEnvironment 推荐 ...
- qgroundcontrol开发环境搭建源码编译
qgroundcontrol是一款无人机地面站开源软件,C++/QT开发 在https://github.com/mavlink/qgroundcontrol上就能找到,选择稳定版下载最新的是2.6 ...
- 【Java】用IDEA搭建源码阅读环境
用IDEA搭建源码阅读环境 参考自CodeSheep的Mac源码环境搭建, https://www.bilibili.com/video/BV1V7411U78L 但是实际上在Windows搭建的差别 ...
随机推荐
- StreamingContext、DStream、Receiver深度剖析
本课分成四部分讲解,第一部分对StreamingContext功能及源码剖析:第二部分对DStream功能及源码剖析:第三部分对Receiver功能及源码剖析:最后一部分将StreamingConte ...
- 利用eolinker实现api接口mock测试(mock server)
转载:http://blog.csdn.net/naicha_qin/article/details/78276172 前后端分离或者是进行单元测试的时候,必须要用mock api替换掉第三方调用或者 ...
- ContentProvider之通过ContentResolver获取图像、视频、音频举例
MediaStore中定义了一系列的数据表格,通过ContentResolver提供的查询接口,我们能够得到各种须要的媒体信息.通过下面两个URI能够扫描设备外部和内部的媒体文件.Android系统提 ...
- 开关按钮(ToggleButton&Switch)
开关按钮,很实用的小东西. 下面上实例: -------------------------------我是邪恶的分割线--------------------------------------- ...
- Java之Jackson框架
在Jackson框架中,提供了三种方式用来处理JSON数据: 流式API 在该方式下,使用JsonParser读取JSON数据,使用JsonGenerator写JSON数据.这种方式性能最佳(最低开销 ...
- Android_编程规范与经常使用技巧
一.Android编码规范 1.java代码中不出现中文,最多凝视中能够出现中文 2.局部变量命名.静态成员变量命名 仅仅能包括字母,单词首字母出第一个外.都为大写,其它字母都为小写 3.常量命名 仅 ...
- R 介绍
R定义:一个能够自由有效地用于统计计算和绘图的语言和环境,它提供了广泛的统计分析和绘图技术. R语言的使用很大程度上可以说是借助各种各种各样R包的辅助,从某种程度上说,运用R的插件来满足不同的需求. ...
- PHP面试题及答案解析(7)—Linux系统命令
1.请解释下列10个shell命令的用途.top.ps.mv.find.df.cat.chmod.chgrp.grep.wc top:该命令提供了实时对系统处理器状态的监控,它能够实时显示系统中各个进 ...
- java中常用的类型转换
1.将字符串转换成整数(String--->int)方法一: (1) int i = Integer.parseInt(String s); 其中(1)其实就是我们经常用到的将s转换为10进 ...
- 微软同步发行Windows 10和Windows 10 Mobile系统更新
微软今天同步公布了新的 Windows 10 Redstone PC 和 Windows 10 Mobile 预览版. PC 版本是 Build 14271.Mobile 版本是 Build 1426 ...