Here are some of the points which convers the Java NIO.
1) NIO provides high-speed, block-oriented I/O in standard Java code
2) NIO was created to allow Java programmers to implement high-speed I/O without having to write custom native code. NIO moves the most time-consuming I/O activities (namely, filling and draining buffers) back into the operating system, thus allowing for a great increase in speed.
3)
original I/O deals with data in streams, whereas NIO deals with data in blocks.
4) Filtering is simple in streams, as it accepts one byte at a time.. at the same time it is much slower to process the data...
5) Processing & consuming the data will takes place in blocks , so that it becomes much faster than streams.
6) Integrated I/O : In JDK 1.4 IO has intregated NIO...
7) Channels & buffers: channels are like streams in NIO, buffer is the extra thing which added in NIO.
8) Buffer is placed infornt to channel, so any thing which has to be read/ write has pass through the buffer.
9) Buffers provides structured access to data and keeps track ofsystems read/write processes.
10 ) kinds of buffers : all these are instance of the buffer interface.
11 ) Most frequently we use byteBuffer.
12) Channels are bidirectlional , where streams are uin directional.
13) Some of the most frequently used methods in NIO are
fcin.read(buffer); fcout.write( buffer ); buffer.flip();
14) some of the buffer materials which are used in the NIO to process the data fastly.
state variables ( Data to/fro from the channels), accessor( directly deal with the data).
15) In state variables, we have Position, limit, & capcity are present, which describes the state of a particualr variable.
16) In Accessor we have some methods like get(), put().
17) we have some more methods in buffers like allocate(), wrap(), slice().
18) Kinds of buffers
i) Read only buffers : used for protecting data
ii) Direct Buffers: Used to increase IO speed.
iii) Indirect Buffers : Normal buffers, i.e with the channels
19) IN Java NIO there is concept called " file Locking" : they are just like Java object locks. some of the methods are there like lock(), release().
20) Asynchronous IO: It lets you do I/O from a great many inputs and outputs at the same time. The central object in asynchronous I/O is called the Selector.
21) Selectors : A Selector is where you register your interest in various I/O events, and it is the object that tells you when those events occur.
22) some of the methoda are open(), selector, accept(), remove().
A good pdf is posted in the below link.
http://www.cs.brown.edu/courses/cs161/papers/j-nio-ltr.pdf