提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
在JDK1.4推出JavaNIO之前,基于Java的所有Socket通信都采用了同步阻塞模式
(BIO),这种一请求一应答的通信模型简化了上层的应用开发,但是在性能和可靠性方面
却存在着巨大的瓶颈。因此,在很长一段时间里,大型的应应用服务器都采用C或者C++
语言开发,因为它们可以直接使用操作系统提供的异步I/O或者AIO能力。当并发访问量
增大、响应时间延迟增大之后,采用JavaBIO开发的服务端软件只有通过硬件的不断扩容
来满足高并发和低时延,它极大地增加了企业的成本,并且随着集群规模的不断膨胀,系
统的可维护性也面临巨大的挑战,只能通过采购性能更高的的硬件服务器来解决问题,这会
导致恶性循环。
正是由于Java传统BIO的拙劣表现,才使得Java支持非且塞I/O的呼声日渐高涨,
最终,JDK1.4版本提供了新的NIO类库,Java终于也可以支持非阻塞I/O了。
从JDK1.0到JDK1.3,Java的I/O类库都非常原始,很多UNIX网络编程中的概念或
者接口在1/0类库中都没有体现,例如Pipe、Channel、Buffer和Selector等。2002年发布
JDK1.4时,NIO以JSR-51的身份正式随JDK发布。它新增了个java.nio包,提供了很多
进行异步1/0开发的API和类库
主要的类和接口如下。
解了UNIX网络编程的5种I/O模型,学习了I/0多路复用
技术的基础知识。通过对JavaI/O演进历史的总结和介绍,相信大家对Java的I/O演进有
了一个更加直观的认识。