There are several improvements to the standard
(java.nio.charset.Charset
) and extended charset
implementations. They include:
New SelectorProvider
implementation for Solaris based on the Solaris event port mechanism. This SelectorProvider
may improve performance or scalability for some server workloads. The /dev/poll SelectorProvider
continues to be the default. To use the Solaris event port mechanism, run with the system property java.nio.channels.spi.Selector
set to the value sun.nio.ch.EventPortSelectorProvider
.
Decrease in the size of <JDK_HOME>/jre/lib/charsets.jar file
Performance improvement for the java.lang.String(byte[],
*)
constructor and the
java.lang.String.getBytes()
method.
The java.nio.file
package and its related package, java.nio.file.attribute
,
provide comprehensive support for file I/O and for accessing the
file system. A zip file system provider is also available in JDK 7.
The following resources provide more information:
<Java
home>/sample/nio/chatserver/
contains samples that
demonstrate the new APIs contained in the
java.nio.file
package<Java
home>/demo/nio/zipfs/
contains samples that
demonstrate the NIO.2 NFS (Network File System) file systemIn addition, the following enhancement is introduced:
Area: NIO
Standard/Platform: JDK 7
Synopsis: Prior to the JDK 7 release, direct buffers
allocated using java.nio.ByteBuffer.allocateDirect(int)
were aligned on a page boundary. In JDK 7, the implementation has
changed so that direct buffers are no longer page aligned. This
should reduce the memory requirements of applications that create
lots of small buffers.
RFE: 4837564
One new class is provided:
Console
-
Contains methods to access a character-based console device. The
readPassword()
methods disable echoing thus they are
suitable for retrieval of sensitive data such as passwords. The
method System.console()
returns the unique console associated with the Java Virtual
Machine.The following new methods were added to File
:
getTotalSpace()
returns the size of the partition in bytesgetFreeSpace()
returns the number of unallocated bytes in the partitiongetUsableSpace()
returns the number of bytes available on the partition and includes
checks for write permissions and other operating system
restrictions
setWritable(boolean writable, boolean ownerOnly)
and
setWritable(boolean
writable)
set the owner's or everybody's write
permission
setReadable(boolean readable, boolean ownerOnly)
and
setReadable(boolean
readable)
set the owner's or everybody's read
permission
setExecutable(boolean executable, boolean ownerOnly)
and
setExecutable(boolean
executable)
set the owner's or everybody's execute
permissioncanExecute()
tests the value of the execute permissionConstructors were added to the following class:
IOException
supports exception chaining via the addition of the new
constructors
IOException(String, Throwable)
and
IOException(Throwable)
.The behavior of the following method was modified:
File.isFile()
Windows implementation has been modified to always return
false
for reserved device names such as CON, NUL, AUX,
LPT, etc. Previously it returned true
, which customers
considered a bug because it was inconsistent with behavior for
devices on UNIX.java.nio.channels.SelectorProvider
implementation that is based on the Linux epoll event notification
facility is included. The epoll facility is available in the Linux
2.6, and newer, kernels. The new epoll-based
SelectorProvider
implementation is more scalable than
the traditional poll-based SelectorProvider
implementation when there are thousands of SelectableChannel
s
registered with a Selector
.
The new SelectorProvider
implementation will be used
by default when the 2.6 kernel is detected. The poll-based
SelectorProvider
will be used when a pre-2.6 kernel is
detected.sun.nio.ch.disableSystemWideOverlappingFileLockCheck
controls whether java.nio.channels.FileChannel.lock()
checks whether regions are locked by other instances of
FileChannel
. Unless this system property is set to
true
, FileChannel.lock()
will throw an
OverlappingFileLockException
if an application attempts
to lock a region that overlaps one that is locked by another
instance of FileChannel
. The system property exists to
provide compatibility with previous releases which do not implement
the JVM-wide overlapping file lock check.javax.net.ssl.SSLEngine
was added. The existing J2SDK 1.4.0 secure communication
infrastructure, javax.net.ssl.SSLSocket
,
was based on the I/O model of java.net.Socket. The
SSLEngine
class abstracts away the I/O model, and
leaves developers free to secure communication pathways using
alternate types of I/O. SSLEngine
can be combined with
the New I/O APIs to create implementations such as secure blocking
or non-blocking SocketChannel
s. For details see the
JSSE Reference
Guide.FileInputStream
and FileOutputStream
classes, getChannel
methods have been added to return
the underlying FileChannel
object, and the
close
methods have been revised to close the
underlying channel.RandomAccessFile
class, a getChannel
method has been added and the
close
method has been revised to close the underlying
channel. The RandomAccessFile
constructors now support
the mode characters "s" and "d" to allow the
specification, at file-open time, of synchronous writes or
synchronous-data writes.InputStreamReader
and OutputStreamWriter
classes, constructors have been added that take a stream and a
Charset
object, and the getEncoding
methods have been revised to return the historical name of the
encoding being used. Constructors to InputStreamReader
and OutputStreamWriter
have been added that take
existing CharsetDecoder
and
CharsetEncoder
objects, respectively.java.io.File
class.java.io
package.