IO vs NIO
Java IO와 NIO는 둘 다 Java에서 입출력을 처리하는 방식이지만, 설계 철학과 구현 방식에서 많은 차이점이 있습니다.
특징
Java IO (Input/Output)
Java NIO (New Input/Output)
NIO.2
버전
JDK 1.0
JDK 1.4 (2002)
JDK 7 (2011)
I/O 방식
블로킹 I/O (Blocking I/O)
논블로킹 I/O (Non-Blocking I/O)
비동기 I/O (Asynchronous I/O)
데이터 처리 방식
스트림 기반 (Stream-Oriented)
버퍼 기반 (Buffer-Oriented)
주요 클래스
InputStream, OutputStream, Reader, Writer
FileChannel, SocketChannel, Selector, ByteBuffer, CharBuffer, ...
Path, Files, FileSystem, WatchService, AsynchronousFileChannel, AsynchronousSocketChannel, ...
설계 철학
간단하고 직관적인 API
높은 유연성과 성능
파일 시스템 접근성 향상, 향상된 비동기 I/O 지
멀티스레딩
멀티스레딩 필요
단일 스레드로도 많은 연결 처리 가능
적용 분야
간단한 파일 입출력, 소규모 네트워크 통신
고성능 네트워크 서버, 대규모 데이터 처리
데이터 구조
연속된 바이트 또는 문자 스트림
고정 크기의 버퍼
Last updated