데브허브 | DEVHUB | Java Part3 하 6.1 Java NIO 소개Java Part3 하 6.1 Java NIO 소개
- Java NIO는 기존 동기 방식의 Java IO의 한계를 극복하기 위해 Java 1.4에서 도입된 비동기 입출력(AIO) API입니다. 🚀
- NIO는 단일 스레드 환경에서도 멀티스레드와 유사하거나 더 우수한 고성능 입출력을 제공하며, 이는 실제 입출력 처리가 OS 커널에 의해 비동기적으로 이루어지기 때문입니다. ⚡
- 애플리케이션은 OS에 입출력 요청을 보낸 후 대기하지 않고 다른 작업을 즉시 수행할 수 있어 전반적인 성능이 크게 향상됩니다. 🏃♂️
- NIO의 핵심 구성 요소는 데이터를 담는 '버퍼(Buffer)', 양방향 입출력을 지원하는 '채널(Channel)', 그리고 여러 채널의 입출력 이벤트를 동시에 관리하는 '셀렉터(Selector)'입니다. 🗄️↔️📡
- 버퍼는 입출력 데이터가 저장되는 메모리 블록이며, 채널에 종속되어 데이터를 읽고 쓰는 데 사용됩니다. 자바에서는 가비지 컬렉터가 메모리 관리를 담당하여 개발자의 부담을 줄여줍니다. 🧠
- 셀렉터는 여러 채널을 동시에 감시하며, 입출력 준비가 된 채널을 감지하여 효율적인 처리를 가능하게 하는 IO 멀티플렉싱 개념을 구현합니다. 🚦
- 비동기 처리의 특성상 코드 흐름이 직선적이지 않아 개발자가 이론적 이해를 바탕으로 예측하고 코드를 작성해야 하는 복잡성이 있지만, 이를 해결할 메커니즘이 제공됩니다. 🧩
- NIO는 고성능 서버 개발에 특히 적합하며, 파일 입출력과 네트워크 입출력의 본질적인 유사성 때문에 서버 개발에 활용됩니다. 🌐