Java IO vs Java NIO vs Java AIO
함수 호출 관점
동기 | 비동기 | |
---|---|---|
Blocking | Java IO | X |
Non-Blocking | Java NIO (File IO 는 Non Blocking 불가) | Java AIO |
함수의 호출로만 봤을 때 Java IO, Java NIO, Java AIO 는 각각 아래와 같습니다.
- Java IO : 블로킹 방식의 동기 연산입니다.
- Java NIO : 논블로킹 방식의 동기 연산입니다. 다만, File IO 는 Java NIO 에서도 Non Blocking 이 불가능합니다.
- Java AIO : 논블로킹 방식의 비동기 연산이 가능합니다.
IO 모델 관점
동기 | 비동기 | |
---|---|---|
Blocking | Java IO | X |
Non-Blocking | Java NIO, Java AIO | X |
IO 모델 방식으로 따져봤을 때 Java IO, Java NIO, Java AIO 는 각각 아래와 같습니다.
- Java IO : 블로킹 기반의 동기 연산입니다.
- Java NIO : 논블로킹 방식의 동기 연산입니다.
- JAVA AIO : Java AIO 역시 IO 연산작업에 있어서는 블로킹 방식의 동기연산이 됩니다.
Java IO
Java IO 는 Java 1.0 부터 처음 도입되었습니다. Java IO 는 블로킹 방식의 동기연산을 수행합니다. Java IO는 파일과 네트워크에 데이터를 읽고 쓸 수 있는 InputStream, OutputStream API를 제공합니다.