java.io.File is updated with a toPath() method that returns a java.nio.file.Path object constructed from the abstract path.
java.io.FilePermission is updated to support an action that grants the ability to read a symbolic link.
java.util.Scanner is updated with new constructors that create a text scanner for scanning files located by a java.nio.file.Path.
java.nio.channels.SocketChannel is updated to implement java.nio.channels.NetworkChannel and additionally defines the methods: shutdownInput(), shutdownOutput(), and getRemoteAddress().
java.nio.channels.ServerSocket is updated to implement java.nio.channels.NetworkChannel and additionally defines the method bind(SocketAddress,int).
java.nio.channels.DatagramChannel is updated to implement java.nio.channels.MulticastChannel and additionally defines the methods open(ProtocolFamily) and getRemoteAddress().
java.nio.channels.FileChannel is updated to implement java.nio.channels.SeekableByteChannel and additionally defines new static methods to open/create the file.
java.nio.channels.FileLock is updated to define a new protected constructor for when the lock is acquired via an AsynchronousFileChannel. FileLock is also updated to define the method acquiredBy().
java.nio.channels.Channels is updated with two methods for interoperation between AsynchronousByteChannel types and streams.
BufferPoolMXBean has been moved from the java.nio package to java.lang.management so that it is in the same package as the rest of the platform's management interfaces.
For naming consistency reasons, java.net.StandardSocketOption is renamed to StandardSocketOptions, and java.nio.file.StandardWatchEventKind to StandardWatchEventKinds.
java.nio.file.WatchKey now defines an additional method, watchable(), to return a reference to the object for which the watch key was created.
The parameter to java.nio.file.Path.toRealPath has been changed from a boolean to LinkOption[] so that it is consistent with the other methods.
The Early Draft Review (EDR) proposed the java.nio.filesystems package for the file system API. This has been subsequently refined so that it is now defined in the java.nio.file package. The file system API has also undergone significant revision based on feedback and usage since it was integrated into JDK7 in 2009.
The EDR proposed a new set of buffer classes capable of containing
more than Integer.MAX_VALUE elements. After further
examination, we decided to drop this. The primary motivation in the
I/O area for large buffers is the ability to map huge files
contiguously into memory. A potential solution to this problem is
to examine it in conjunction with support for big arrays in the
platform, something for future decisions and beyond the scope of
this JSR.
The EDR proposed java.nio.channels.AsynchronousDatagramChannel, an asynchronous channel for datagram-oriented sockets. It was included in the EDR for consistency rather than scalability reasons. After further examination we decided to drop this channel type solely for pragmatic reasons. Its specification required re-work and corresponding new development and tests. It's a class that can be re-examined again for a future JSR, maybe Java SE 8.
All feedback is welcome. The API specification included here corresponds to JDK 7 b145.
The OpenJDK NIO Project is where the implementation of this JSR was developed, nio-dev@openjdk.java.net is the development mailing list.
The jsr-203-comments@jcp.org mailing list may also be used to send feedback or comments.
Thank you to the JSR-203 Expert Group for the many conference calls and discussions that lead to the JSR-203 specification.
In particular Mike Edwards (IBM) and Doug Lea for their guidance and time invested in the Asynchronous I/O API; Carl Quinn (formerly Google, now with Netflix), Nick Crossley (Telelogic, now IBM), Kazuhiro Kazama (NTT), and others for their time, feedback, and input to the File System API.
Thank you to Joe Darcy, Xueming Shen, Vincent Ryan, Chris Hegarty, Tom Hawtin, Maurizio Cimadamore, Jon Gibbons, and many other colleagues and former colleagues that provided feedback and assistance. Also a big thank you to Arkadiy Sutchilin, Rajendra Gutupalli, Umashankar Ningaiah, and Sharon Zakhour for the tireless work developing tests and documentation.
Finally, a big thank you to the community and those on the nio-dev and nio-discuss mailing lists for providing feedback on the API and implementation. Special thanks to Rémi Forax for finding many API bugs and ongoing help with reviewing both specification and implementation changes.