美文网首页Netty
Java的IO演进(第一章)

Java的IO演进(第一章)

作者: 辛德瑞拉Dangerous | 来源:发表于2018-12-28 21:54 被阅读0次

    Java 1.4之前的早期版本,Java对IO的支持并不完善,Java的同步阻塞IO被大家所诟病,具体表现如下:

    • 没有缓冲区,IO性能存在问题
    • 没有C和C++的Channel、Pipe、Buffer、Selector,只有输入输出流
    • 同步阻塞IO通信(BIO),通常导致通信的线程被长时间阻塞
    • 支持的字符集有限,硬件可移植性差

    2002年发布的JDK1.4,新增了java.nio包,提供了很多异步IO开发的API和类库,表现如下:

    • 异步IO操作的缓冲区ByteBuffer、管道Pipe、Channel(ServerSocketChannel、SocketChannel)
    • 多种字符的编解码
    • 非阻塞IO的多路复用选择器Selector
    • 基于流行的Perl实现的正则表达式
    • 文件通道FileChannel

    NIO极大促进了基于java的异步非阻塞编程的发展和引用,但是仍然有不完善的地方,特别是对文件系统的处理能力不足:

    • 没有统一的文件属性(如读写权限)
    • API能力比较弱,例如目录的级联创建和递归遍历,往往需要自己实现
    • 底层存储系统的一些高级API无法使用
    • 所有文件的操作都是同步阻塞调用,不支持异步文件读写操作

    2011年 JDK1.7发布,对原有的NIO类库进行了升级,成为NIO2.0,表现:

    • 提供了批量获取文件属性的API,这些API与平台无关,不与特性的文件系统相耦合,还提供了标准文件系统的SPI,供各个服务提供商扩展实现
    • 提供了AIO,支持文件的异步和网络套接字的异步操作
    • 完成了JSR-5.1定义的通道功能,包括配置的多播数据报的支持

    相关文章

      网友评论

        本文标题:Java的IO演进(第一章)

        本文链接:https://www.haomeiwen.com/subject/ggoelqtx.html