JAVA NIO系列的基本概念
NIO反对面向缓冲区的、基于通道的IO操作。NIO将以更加高效的形式进行文件的读写操作。

Sun官网标榜的个性如下:

为所有的原始类型提供(Buffer)缓存反对

字符集编码解码计划

Channel:一个新的原始I/O形象

反对锁和内存映射文件的文件拜访接口

提供多路(non-blocking)非阻塞式的高伸缩性网络I/O

NIO的创立目标是为了让Java程序员能够实现高速I/O而无需编写自定义的本机代码。NIO将最耗时的I/O操作(即填充和提取缓冲区)转移回操作系统,因此能够极大地提高速度。

Java NIO和IO的次要区别

通道和缓冲区

Java NIO零碎的外围在于:通道(Channel)和缓冲区(Buffer)。 通道示意关上IO设施(比方文件、套接字等)的连贯。若须要应用NIO零碎,须要获取用于连贯IO设施的通道以及用于包容数据的缓冲区。而后操作缓冲区对数据进行解决。

简而言之。Channel负责传输,Buffer负责存储。

JDK7的NIO2个性或者是我最期待的,我始终想基于它写一个高性能的Java Http Server.当初这个想法终于能够施行了。

  自己基于目前最新的JDK7 b76开发了一个HTTP Server性能的确不错。

  在windows平台上NIO2采纳AccpetEx来异步承受连贯,并且读写全都关联到IOCP实现端口。不仅如此,为了不便开发者应用,连IOCP工作线程都封装好了,你只有提供线程池就OK。

  然而要留神,IOCP工作线程的线程池必须是 Fix的,因为你收回的读写申请都关联到相应的线程上,如果线程死了,那读写实现状况是不晓得的。

  作为一个Http Server,传送文件是必不可少的性能,那个别文件的传送都是要把程序里的buffer拷贝到内核的buffer,由内核发送进来的。windows平台上为这种状况提供了很好的解决方案,应用TransmitFile接口

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

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

作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户能够不便的被动获取或者通过告诉机制取得IO操作后果。

Netty无疑是NIO的老大,它的健壮性、性能、性能、可定制性和可扩展性在同类框架都是名列前茅的。HantecMarkets亨达返佣https://www.kaifx.cn/broker/h...,如Hadoop的RPC框架Avro、RocketMQ以及支流的分布式通信框架Dubbo等等。

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

Netty的长处能够总结如下

1、API应用简略,开发门槛低;

2、功能强大,预置了多种编解码性能,反对多种支流协定;

3、定制能力强,能够通过ChannelHandler对通信框架进行灵便地扩大;

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