Netty是什么?

Netty是一个高性能、异步事件驱动的NIO框架,他提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是一步非阻塞的,用户可以方便的主动获取或者通过通知机制获得IO操作结果。支持 HTTP、 WebSocket 、 Protobuf、 Binary TCP | 和 UDP, 通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。支持 HTTP、 WebSocket 、 Protobuf、 Binary TCP | 和 UDP, Netty 已经被很多高性能项目作为其 Socket 底层基础。也就是说, Netty是一个基于 NIO 的客户端/服务器端编程框架,使用 Netty可以确保你快速和简单

的开发出一个网络应用。

为什么选择Netty,不使用原生NIO

1)跨平台与兼容性: NIO 算是底层的 API需依赖系统的 IO API。但 Java NIO 发现在不同系统平台会出现问题。大量测试也耗不少时间; NIO2 只支持 JDK1.7+,而且没提供 DatagramSocket,故 NIO2不支持 UDP协议。而 Netty 提供统一接口,同一语句无论在 JDK6.X还是 JDK7.X 都可运行,无需关心底层架构功能!  
 2) JAVA NIO的 ByteBuffer 构造函数私有,无法扩展。 Netty提供了自己的 ByteBuffer实现,通过简单 API 对其进行构造、使用和操作,一此解决 NIO的一些限制。  
 3) NIO对缓冲区的聚合与分散操作可能会导致内存泄漏。直到 JDK1.7 才解决此问题。  
 4) NIO 的类库和 API繁杂,使用麻烦,你需要熟练掌握 Selector、 ServerSocketChannel、 SocketChannel、 ByteBuffer等。
 5)使用 JAVA NIO 需要具备其他的额外技能做铺垫,例如熟悉 Java多线程编程。这是因为 NIO编程涉及到 Reactor模式,你必须对多线程和网路编程非常熟悉,才能编写出高质量的 NIO程序。  
 6)可靠性能力不齐,工作量和难度都非常大。例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常码流的处理等问题

Netty中使用的主要技术

1)回调
2)多线程设计模式
3)IO设计模式
4)设计模式

Netty教程-Netty介绍相关推荐

  1. 【Netty】Netty教程——netty入门(二)

    文章内容 1. 概述 1.1 Netty 是什么? 1.2 Netty 的作者 1.3 Netty 的地位 1.4 Netty 的优势 2. Hello World 2.1 目标 2.2 服务器端 2 ...

  2. java netty教程_明哥教学 - Netty简单入门教程

    作为一个正在Java路上摸爬滚打的小菜鸡,之前在项目中也用过Netty,也因为Netty报名阿里的中间件大赛,但终究功力太浅,最终不了了之,最近工作中又遇到了Netty的小姐妹Mina.此时楼主觉得N ...

  3. java netty 教程_Java NIO框架Netty教程(十六)

    该图是OneCoder通过阅读Netty源码,逐渐记录下来的.基本可以说明Netty服务的启动流程.这里在具体讲解一下. 首先说明,我们这次顺利的流程是基于NioSocketServer的.也就是基于 ...

  4. Java NIO框架Mina、Netty、Grizzly介绍与对比

    Java NIO框架Mina.Netty.Grizzly介绍与对比 原文地址:https://blog.csdn.net/e765741668/article/details/45234711 Min ...

  5. Java Netty 教程

    Netty是用于Java的高性能IO工具包. Netty是开源的,因此可以自由使用它,甚至可以为它做出贡献.该Netty教程将解释Netty的工作方式以及如何开始使用Netty.但本教程不会涵盖Net ...

  6. Netty教程02:Netty实战之TCP服务

    源码地址:https://gitee.com/pidaner/netty-class 官网:https://netty.io/ Netty is an asynchronous event-drive ...

  7. Java NIO框架Mina、Netty、Grizzly介绍与对比(zz)

    Mina: Mina(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应 ...

  8. Netty框架基本介绍

    NIO 1.概述:NIO全称java non-blocking IO ,是指JDK1.4开始,java提供了一系列改进的输入/输出的新特性,被统称为NIO(即New IO ).新增了许多用于处理输入输 ...

  9. java netty教程_Netty学习教程之基础使用篇

    什么Netty? Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 也就是说,Nett ...

最新文章

  1. FormsAuthentication详解
  2. 实施SAP:资源和进度
  3. python分布式爬虫及数据存储_分布式爬虫
  4. view controller lifecycle discussion - onInit
  5. 暑假开始了,大家给力啊
  6. 在优图网,临摹借鉴设计大咖作品|品图标设计:主要趋势
  7. 30 道 MySQL 面试题全放送!
  8. 有序数组转换为二叉搜索树
  9. Jmeter 使用教程
  10. 【Java教程】UDP实现群聊聊天室
  11. 搭建Hadoop高可用集群
  12. 我的世界电脑正版服务器地址大全,《我的世界》服务器地址大全 各个服务器一览分享...
  13. 关系数据库——关系操作和关系完整性
  14. layui table 获取单元格总是多一个
  15. java设计模式-观察者模式(广播机制,消息订阅)
  16. 龙芯开源社区服务器迁移一览
  17. 小程序官网CMS开源项目出炉,Weixin-App-CMS 1.0 版本正式发布
  18. Java的IO流 ,BIO NIO AIO 的区别?
  19. k8s(一)、 1.9.0高可用集群本地离线部署记录
  20. java 杨辉三角(贾宪三角,帕斯卡三角)

热门文章

  1. 创建内联函数matlab,浅析MATLAB中的内联函数、匿名函数和函数函数
  2. Linux中rmp安装mysql
  3. linux 内核调试文件夹,Linux 内核测试和调试(5)
  4. flutter ios 插件开发 appcode 加快索引速度
  5. 第三步:脑波提取alpha,beta,delta,theta
  6. js中的find方法使用
  7. 马上跨年了,如何用代码写一个“跨年倒计时”呢?
  8. 什么是软件性能测试?你真的了解性能测试吗?
  9. java命名规范法则大全
  10. include 和jspinclude和iframe的区别