자바 4부터 추가된 java.nio 패키지에 포함되었다. 자바 7로 올라오면서 자바 IO와 NIO 사이의 비동기 채널 등 네트워크 지원을 대폭 강화한 NIO.2 API가 추가 되었다. NIO.2는 java.nio의 하위 패키지에 통합되어 있음.

기존의 Stream은 읽을 때와 쓸 때 InputStream과 OutputStream으로 구분해서 사용했다. Stream을 통해 흘러다니는 데이터는 기본적으로 byte or byte[]이고, 읽고 쓰는 작업을 지시한 후에는 그 작업이 끝나야 return 되는 blocking 방식이다.
Channel은 데이터 통로라는 점에서 Stream과 역할은 비슷하지만 동작방식이 다르다.
단방향인 Stream과 달리 Channel은 양방향이라서 in/out을 구분하지 않고 byteChannel, FileChannel를 만들어서 읽고, 쓸 수 있다.
Channel은 언제나 Buffer를 통해서만 데이터를 읽거나 쓸 수 있다. Channel에서 데이터를 읽으면 Buffer에 담야만 처리할 수 있고, Channel에 데이터를 쓰려면 먼저 Buffer에 담고, Buffer에 담긴 데이터를 Channel에 써야한다.
Channel은 Non-blocking 방식도 가능. 언제나 Non-blocking 으로 동작하는 것이 아닌, Non-blocking 방식도 가능하다는 뜻.