美文网首页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 演进之路

    必须明白的几个概念 阻塞(Block)和非阻塞(Non-Block) 阻塞和非阻塞是在缓冲区数据没有准备就绪的情况...

  • Java的IO演进(第一章)

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

  • 《Java 8实战》阅读笔记(1)

    以下为第一章《为什么你应该关注Java 8》的阅读笔记 1.1 为啥Java语言在演进 使用Java 8 可以写...

  • IO 演进

    写程序难免与 IO 打交道,无论是文件 IO、网络 IO,涉及到数据的存储、交换,大多数情况都会见到IO 的身影。...

  • Java的IO和NIO

    Java的IO和NIO 一、Java的IO Java的IO功能在java.io包下,包括输入、输出两种IO流,每种...

  • RPC演进

    架构系统的演进(Doubbo Architerctrure Roadmap) Java开发RPC的演进历史 TCP...

  • Java IO介绍

    Java IO介绍 Java IO主要是指的是java.io和java.nio两个包下提供的对IO操作的功能(由于...

  • Java Socket IO演进(一)-BIO/NIO/AIO

    1. 概览 Java中主要有三种IO模型,分别是同步阻塞IO(BIO)、同步非阻塞IO(NIO)、异步非阻塞IO(...

  • 【JAVA IO】JAVA IO 源码概述

    【JAVA IO】JAVA IO 源码概述 以上的图和表,是经典的JAVA IO的部分,在大量的JAVA语言入门读...

  • Java之IO流详解

    title: Java之IO流详解tags: Java IO流categories: Java IO流 大多数应用...

网友评论

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

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