Netty 实战精髓篇

教程说明:

关于《Netty 实战精髓篇》


《Netty 实战精髓篇》原标题《Netty 实战(精髓)》,经作者waylau授权转载至W3Cschool.cn

《Netty 实战精髓篇》是对 Norman Maurer 的 《Netty in Action》(基于 MEAP v10)的一个中文精简。《Netty 实战 精髓篇》取其精华,去其糟粕,带你快速掌握 Netty ,其中插入的配图,以图文并茂的方式减少用户在理解上的困难。本书是作者利用业余时间编写的,所以在时间的分配上较为紧凑,作者受限于精力和能力,因此书中未免有纰漏和错误,望读者能够热忱斧正。

对于初学者,也推荐参阅《Netty 4.x 用户指南》。与之类似的 NIO 框架还有 MINA, 可参阅《Apache MINA 2 用户指南》


Netty的介绍


Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty 是一个基于NIO的客户,服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty相当简化和流线化了网络应用的编程开发过程,例如,TCP和UDP的socket服务开发。

Netty有哪些新增特性?


  1. 能够更简单地处理大容量数据流;
  2. 能够更简单地处理协议编码和单元测试;
  3. I/O超时和idle状态检测;
  4. 应用程序的关闭更简单,更安全;
  5. 更可靠的OutOfMemoryError预防。

Netty与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做到这一点比较困难。

在线阅读


W3Cschool https://www.w3cschool.cn/essential_netty_in_action

W3Cschool上的参考资料


《Netty 4.x 用户指南》

《Java教程》

javascript教程


温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }