【正文】netty源碼 死磕2: 環境搭建linux
1. Netty爲何火得屌炸天?
1.1. Netty是什麼?
1.2. Netty火到什麼程度呢?
1.3. Netty爲何這麼火?
2. Netty是面試的必殺器嗎?
3. 獲取源碼的注意事項
4. Netty工程
5. 運行 examplegit
Netty是JBOSS提供的一個Java開源框架NIO框架,用以快速開發高併發、高可用、高可靠性的網絡服務器程序,和也能開發高可用、高可靠客戶端程序。github
Netty已經獲得成百上千的分佈式中間件、開源項目、商業項目的應用。好比火爆的kafka、RocketMQ等消息中間件。如火熱火熱的ElasticSearch開源搜索引擎,都使用了Netty。如大數據處理Hadoop的RPC框架Avro以及主流的分佈式通訊框架Dubbo,都使用了Netty。面試
應該來講,使用Netty的火爆項目,已經有點數不過來了..........編程
Netty提供異步的、事件驅動的網絡應用程序框架和工具,相比JDK原生NIO,Netty提供了相對十分簡單易用的API,很是適合網絡編程。Netty是徹底基於NIO實現的,因此Netty是異步的。windows
做爲一個異步NIO框架,Netty的全部IO操做都是異步非阻塞的,經過Future-Listener機制,用戶能夠方便的主動獲取或者經過通知機制得到IO操做結果。服務器
Netty的優勢能夠總結以下網絡
一、API使用簡單,開發門檻低;併發
二、功能強大,預置了多種編解碼功能,支持多種主流協議;框架
三、定製能力強,能夠經過ChannelHandler對通訊框架進行靈活地擴展;
四、性能高,經過與其餘業界主流的NIO框架對比,Netty的綜合性能最優;
五、成熟、穩定,Netty修復了已經發現的全部JDK NIO BUG,業務開發人員不須要再爲NIO的BUG而煩惱;
六、社區活躍,版本迭代週期短,發現的BUG能夠被及時修復,同時,更多的新功能會加入;
Netty 是互聯網中間件領域使用最普遍最核心的網絡通訊框架。幾乎全部互聯網中間件或者大數據領域均離不開 Netty,掌握 Netty 是做爲一名初中級工程師邁向高級工程師最重要的技能之一。
目前來講,主要的互聯網公司,好比阿里、騰訊、美團、新浪、淘寶等,在高級工程師的面試過程當中,也常常會問一些高性能通信框架的方面的問題,還會問一些「你有沒有讀過什麼著名框架的源代碼?」等相似的問題。
若是掌握了Netty 相關的技術問題,更進一步說,若是你能全面地閱讀和掌握 Netty源碼,相信面試大公司時,底氣十足,成功在握。
閒話少說,進入正題。
代碼研究以前,第一步就是要準備環境。
本系列博客中,以就拿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的錯誤。
下載源碼後,就能夠打開netty工程。
使用IDEA工具,打開後,以下:
netty源碼中,有不少example例子程序,在example目錄下。
打開 example 目錄, 運行下面的例子了。能夠打開,而且運行最簡單的例子 example 下的 EchoServer 例子。
運行例子以前,若是遇到 Maven 依賴下不全的問題, 能夠刷新Maven依賴後,再運行。
瘋狂創客圈:若是說Java是一個武林,這裏的彙集一羣武癡, 交流編程體驗心得
QQ羣連接:瘋狂創客圈QQ羣