【正文】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群