Netty 和 Mina 我究竟該選擇哪個?
根據我的經驗,無論選擇哪個,都是個正確的選擇。兩者各有千秋,Netty 在內存管理方面更勝一籌,綜合性能也更優。但是,API 變更的管理和兼容性做的不是太好。相比於 Netty,Mina 的前向兼容性、內聚的可維護性功能更多,例如 JMX 的集成、性能統計、狀態機等。
Netty 是業界最流行的 NIO 框架之一,它的健壯性、功能、性能、可定制性和可擴展性在同類框架中都是首屈一指的,它已經得到成百上千的商用項目驗證,例如 Hadoop 的 RPC 框架 Avro 使用 Netty 作為通信框架。很多其它業界主流的 RPC 和分布式服務框架,也使用 Netty 來構建高性能的異步通信能力。
Netty 的優點總結如下:
-
API 使用簡單,開發門檻低;
-
功能強大,預置了多種編解碼功能,支持多種主流協議;
-
定制能力強,可以通過 ChannelHandler 對通信框架進行靈活的擴展;
-
性能高,通過與其它業界主流的 NIO 框架對比,Netty 的綜合性能最優;
-
社區活躍,版本迭代周期短,發現的 BUG 可以被及時修復,同時,更多的新功能會被加入;
-
經歷了大規模的商業應用考驗,質量得到驗證。在互聯網、大數據、網絡游戲、企業應用、電信軟件等眾多行業得到成功商用,證明了它完全滿足不同行業的商用標准。
正是因為這些優點,Netty 逐漸成為 Java NIO 編程的首選框架。