这些新特性主要体现在以下几个方面: · 更加灵活的可伸缩的I/O接口(scalable I/O),包括I/O抽象Channels的出现以及新的多元的(multiplexed),非阻塞(non-blocking)的I/O机制。这使得构建产品级的应用服务更加方便灵活,使你能够轻松应付成千上万个开放的连接,并且可以有效地利用多个处理器。 · 快速缓存(fast buffered)的二进制和字符I/O接口。快速缓存的二进制I/O API使得你可以很容易地编写出操作文件流或者二进制数据流的高性能代码。而快速缓存的字符I/O API使得你可以更加高效地处理字符流和文件,此外它还将正则表达式引入到Java平台中来格式化你的输入输出。 · 字符集的编码器和解码器(Character-set encoders and decoders)。这些字符集转换API使得我们可以直接访问操作系统内置的字符集转换器,同时还支持那些外来的转化器。 · 基于Perl风格正则表达式的模式匹配机制(A pattern-matching facility based on Perl-style regular expressions)。 · 改良的文件系统接口,支持锁定和内存映射(locks and memory mapping)。该特性使得你可以更加容易地处理各种文件系统操作中出现的问题,同时使得你可以更加高效地访问大量的文件属性集。此外如果你确实需要,你还可以访问与平台相关的一些特性。最后,它还提供对非本地文件系统的支持,比如网络文件系统(network filesystems)。 · 新的I/O违例类可以使你更加有针对性地来处理各种I/O错误,让你能够在各种平台上一致地来对待这些错误。 · 增加了对并发的支持,NIO类中的大部分方法都支持多个并发的线程。 
新的包(packages),类(classes)和接口(interfaces)
为了实现上面提到的那些功能,在Java JDK1.4中新增加以下这些部分来提供支持: · java.nio包:主要是和Buffers有关的一些类 · java.nio.channels包:主要包括Channels和selectors · java.nio.charset包:和字符集有关的类 · java.nio.channels.spi包:提供channels服务的类 · java.nio.charset.spi包:提供charsets服务的类 · java.util.regex包:主要是利用正则表达式进行模式匹配的类 · java.lang.CharSequence接口:主要是为java.util.regex包中的一些方法提供一个统一的接口。类String,StringBuffer,java.nio.CharBuffer都重新实现了该接口。 除了这些新增加的类以外,许多原有的类和接口也做了相应的改变。比如FileInputStream和FileOutputStream类中的getChannel、close方法,RandomAccessFile中的getChannel方法等。(1) 几点说明 这些新的I/O APIs的推出,并不意味着原有的I/O APIs的废弃,尽管我们提倡以后尽量使用NIO APIs中的特性。另外,虽然这些NIO APIs都希望做到完全的平台无关性,但是由于I/O工作的特殊性,有些特性还是对操作系统和硬件平台有很大的依赖性,比如可升级的I/O API(scalable I/O API),二进制I/O API(binary I/O API)和新的文件系统接口(new filesystem interface)。所以我们以后在利用这些NIO APIs的时候,应当尽量减少本地代码的部分,做到最大限度的可移植性。