为什么Netty这么火?与Mina相比有什么优势?

简介: Netty是什么?为什么这么火?Netty是目前最流行的由JBOSS提供的一个Java开源框架NIO框架,Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

Netty是什么?为什么这么火?


Netty是目前最流行的由JBOSS提供的一个Java开源框架NIO框架,Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。


相比JDK原生NIO,Netty提供了相对十分简单易用的API,非常适合网络编程。Netty是完全基于NIO实现的,所以Netty是异步的。


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


Netty无疑是NIO的老大,它的健壮性、功能、性能、可定制性和可扩展性在同类框架都是首屈一指的。它已经得到成百上千的商业/商用项目验证,如Hadoop的RPC框架Avro、RocketMQ以及主流的分布式通信框架Dubbo等等。


为什么这么火,是有原因的。


Netty的优点可以总结如下


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


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


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


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


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


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


7、经历了大规模的商业应用考验,质量得到验证。在互联网、大数据、网络游戏、企业应用、电信软件等众多行业得到成功商用,证明了它已经完全能够满足不同行业的商业应用了。


与Mina相比有什么优势?


1、都是Trustin Lee的作品,Netty更晚;


2、Mina将内核和一些特性的联系过于紧密,使得用户在不需要这些特性的时候无法脱离,相比下性能会有所下降,Netty解决了这个设计问题;


3、Netty的文档更清晰,很多Mina的特性在Netty里都有;


4、Netty更新周期更短,新版本的发布比较快;


5、它们的架构差别不大,Mina靠apache生存,而Netty靠jboss,和jboss的结合度非常高,Netty有对google protocal buf的支持,有更完整的ioc容器支持(spring,guice,jbossmc和osgi);


6、Netty比Mina使用起来更简单,Netty里你可以自定义的处理upstream events或/和downstream events,可以使用decoder和encoder来解码和编码发送内容;


7、Netty和Mina在处理UDP时有一些不同,Netty将UDP无连接的特性暴露出来;而Mina对UDP进行了高级层次的抽象,可以把UDP当成”面向连接”的协议,而要Netty做到这一点比较困难。



相关文章
|
6月前
|
编解码 网络协议 Java
netty有什么优势
Netty 是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。它的主要特点包括:开发门槛低, 定制能力强 ,高性能,活跃的社区.
|
6月前
|
应用服务中间件 Linux Apache
Netty & Mina 入门级总结(转)
Netty & Mina 入门级总结(转)
209 0
|
Java 应用服务中间件 API
你知道为什么Netty这么火吗?与Mina相比又有什么优势?
为什么Netty这么火?与Mina相比有什么优势? **前言: 作为一个学Java的,如果没有研究过Netty,那么你对Java语言的使用和理解仅仅停留在表面水平,会点SSH,写几个MVC,访问数据库和缓存,这些只是初等Java程序员干的事。
2173 0
|
Java 大数据 应用服务中间件
为什么Netty这么火?与Mina相比有什么优势?
image Netty是什么?为什么这么火? Netty是目前最流行的由JBOSS提供的一个Java开源框架NIO框架,Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。
2203 0
|
Android开发 HTML5 移动开发
【读后感】Netty 系列之 Netty 高性能之道 - 相比 Mina 如何 ?
【读后感】Netty 系列之 Netty 高性能之道 - 相比 Mina 如何 ? 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。
1201 0
|
编解码 C++ 网络协议
netty vs mina netty和mina的区别
Netty和mian比较报告 一、数据测试报告 简述:1、启动服务器,等到客户端接入      2、客户端发送链接请求。当已经链接,记录当前时间并向服务端发送约50m数据,每次1kb.            3、当服务端接收到链接,第一次接收到数据后,记录当前时间            4、服务端将接收到的数据再返回给客户端。
1390 0
|
存储 缓存 NoSQL
跟着源码学IM(十一):一套基于Netty的分布式高可用IM详细设计与实现(有源码)
本文将要分享的是如何从零实现一套基于Netty框架的分布式高可用IM系统,它将支持长连接网关管理、单聊、群聊、聊天记录查询、离线消息存储、消息推送、心跳、分布式唯一ID、红包、消息同步等功能,并且还支持集群部署。
13496 1
|
6月前
|
消息中间件 Oracle Dubbo
Netty 源码共读(一)如何阅读JDK下sun包的源码
Netty 源码共读(一)如何阅读JDK下sun包的源码
127 1
|
11月前
|
NoSQL Java Redis
跟着源码学IM(十二):基于Netty打造一款高性能的IM即时通讯程序
关于Netty网络框架的内容,前面已经讲了两个章节,但总归来说难以真正掌握,毕竟只是对其中一个个组件进行讲解,很难让诸位将其串起来形成一条线,所以本章中则会结合实战案例,对Netty进行更深层次的学习与掌握,实战案例也并不难,一个非常朴素的IM聊天程序。 原本打算做个多人斗地主练习程序,但那需要织入过多的业务逻辑,因此一方面会带来不必要的理解难度,让案例更为复杂化,另一方面代码量也会偏多,所以最终依旧选择实现基本的IM聊天程序,既简单,又能加深对Netty的理解。
159 1