아래의 문서를 번역 및 요약하였습니다.
http://www.cs.brown.edu/courses/cs161/papers/j-nio-ltr.pdf

-----------------------------------------------------------

2. Java I/O의 개념
 
2-1. Java IO와의 차이
 기존 IO는 Stream을 이용한 입출력 이었으나 NIO는 block I/O라는 방식이 사용되었다.

2-2. 왜 NIO가 좋은가?
 NIO는 Native Code의 사용없이도 고성능(속도의 측면이 강함)의 I/O를 사용할 수 있게한다.

2-3. Stream vs Blocks
 Original IO와 NIO의 가장 큰 차이는 '데이터가 어떻게 패키징(package)되고 전송(transmit)되느냐'이다.
 앞서 예기했듯 IO는 Stream을 사용하고 NIO는Block을 사용한다
 
 - Stream 방식
 Original IO input/output시에 데이터의 전송단위는 1byte이다. 물론 Buffer를 사용하지만 buffer를 쓰더라도 궁극적으로 하나의 바이트씩 produce와 consume이 발생한다. 이방식의 성능은 그리 좋지 못하다.
 
 - Block 방식
 block-oriented I/O system의 경우 데이터를 블록의 단위로 다룬다(deal with in blocks). block화된 데이터는 단 한번의 처리단위 시간 동안 일괄 처리된다. 블록으로 데이터를 처리하는것이 stream(byte 기반)으로 처리하는것 보다 훨씬 빠르다. 물론, 빠른만큼 개발자의 구현은 기존 IO보다 힘들어 진다.

+ Recent posts