在学习Netty之前,有必要了解下我们为什么要学习Netty。
什么是Netty
Netty是一个提供异步事件驱动的网络应用框架,是一个用以快速开发高性能、可扩展协议的服务器和客户端的工具。
换句话说,Netty 是一个 NIO 客户端服务器框架,使用它可以快速简单地开发网络应用程序,比如服务器和客户端的协议。Netty 大大简化了网络编程,比如 TCP 和 UDP 的 socket 服务的开发。
为什么要使用Netty
开发网络应用只能用Netty吗?网络应用框架只有Netty吗?如果不是,为什么我要使用它呢?
不是所有的Java网络编程都要使用Netty。
Java的通信模型有同步阻塞I/O模型(BIO)、伪异步I/O模型、非阻塞I/O(NIO)、异步I/O(AIO)四种方式。BIO和伪异步I/O模型对应Java中的java.io
。NIO和AIO对应Java中的java.nio
。而Netty则是一种NIO框架,同为NIO框架的还有Mina、Grizzly。接下来将逐一介绍这几种通信模型和它们的缺点,并解释为什么要选择Netty而不是原生NIO或者其他NIO框架来进行网络