標準(java.nio.charset.Charset)および拡張文字セットの実装には、いくつかの改善点があります。 改善点は次のとおりです。
Solarisのイベント・ポート・メカニズムに基づくSolaris向けの新しいSelectorProvider実装。 このSelectorProviderを使用すると、一部のサーバー・ワークロードのパフォーマンスやスケーラビリティが改善される可能性があります。 デフォルトは、引き続き/dev/poll SelectorProviderです。 Solarisのイベント・ポート・メカニズムを使用するには、システム・プロパティjava.nio.channels.spi.Selectorを値sun.nio.ch.EventPortSelectorProviderに設定して実行します。
<JDK_HOME>/jre/lib/charsets.jarファイルのサイズの縮小
java.lang.String(byte[], *)コンストラクタおよびjava.lang.String.getBytes()メソッドのパフォーマンスの改善。
java.nio.fileパッケージ、およびその関連パッケージであるjava.nio.file.attributeは、ファイルの入出力とファイル・システムへのアクセスを包括的にサポートします。 JDK 7では、Zipファイル・システム・プロバイダも使用できます。 詳細は、次のリソースを参照してください。
<Java home>/sample/nio/chatserver/には、java.nio.fileパッケージに含まれる新しいAPIの例を示すサンプルが格納されています<Java home>/demo/nio/zipfs/には、NIO.2 NFS (Network File System)ファイル・システムの例を示すサンプルが格納されていますさらに、次の拡張機能が導入されています。
分野: NIO
標準/プラットフォーム: JDK 7
概要: JDK 7リリースより前では、java.nio.ByteBuffer.allocateDirect(int)を使って割り当てられたダイレクト・バッファがページの境界上に配置されていました。 JDK 7では実装が変更され、ダイレクト・バッファがページの境界上に配置されないようになりました。 これにより、小さいバッファを数多く作成するアプリケーションに必要なメモリー量が削減されます。
RFE: 4837564
次の新しいクラスが1つ追加されました。
Console - 文字ベースのコンソール・デバイスにアクセスするメソッドが含まれます。 readPassword()メソッドは、エコーを無効にすることから、パスワードのような機密データの取得に適しています。 System.console()メソッドは、Java仮想マシンと関係のある一意のコンソールを返します。 次の新しいメソッドがFileに追加されました。
getTotalSpace()はパーティションの容量をバイト数で返しますgetFreeSpace()はパーティションの空き容量をバイト数で返しますgetUsableSpace()は、パーティションで使用可能なバイト数を返すほか、書込み権限とほかのオペレーティング・システムの制限についてチェックします setWritable(boolean writable, boolean ownerOnly)とsetWritable(boolean writable)は所有者または全員の書込み権限を設定します setReadable(boolean readable, boolean ownerOnly)とsetReadable(boolean readable)は所有者または全員の読取り権限を設定します setExecutable(boolean executable, boolean ownerOnly)とsetExecutable(boolean executable)は所有者または全員の実行権限を設定しますcanExecute()は実行権限の値をテストします次のクラスにコンストラクタが追加されました。
IOExceptionは、新しいコンストラクタIOException(String, Throwable)とIOException(Throwable)の追加により、例外チェーンをサポートします。次のメソッドの動作が変更されました。
falseを返すように、File.isFile()のWindows実装が変更されました。以前の戻り値はtrueで、それがUNIXで使用するデバイスの動作と整合していないことから、対象ユーザーはこれをバグと見なしていました。java.nio.channels.SelectorProvider実装が新たに追加されました。 このepoll機能はLinux 2.6以降のカーネルで使用できます。 Selectorに多数のSelectableChannelが登録されている場合、新しいepollベースのSelectorProvider実装は、従来のpollベースのSelectorProvider実装よりもスケーラブルです。 新しいSelectorProvider実装は、2.6カーネルが検出されると、デフォルトで使用されます。 pollベースのSelectorProviderは、2.6より前のカーネルが検出されると使用されます。 sun.nio.ch.disableSystemWideOverlappingFileLockCheckは、FileChannelのほかのインスタンスによって領域がロックされるかどうかをjava.nio.channels.FileChannel.lock()がチェックするかどうかを制御します。 このシステム・プロパティがtrueに設定されていないかぎり、アプリケーションがFileChannelの別のインスタンスによってロックされた領域と重複する領域をロックしようとすると、FileChannel.lock()は OverlappingFileLockExceptionをスローします。 システム・プロパティが存在するのは、JVM全体の重複ファイルロック・チェックを実装していない以前のリリースとの互換性を提供するためです。 javax.net.ssl.SSLEngineが追加されました。 J2SDK v1.4.0での既存の安全な通信インフラストラクチャであるjavax.net.ssl.SSLSocketは、java.net.SocketのI/Oモデルをベースとしています。 SSLEngineクラスはI/Oモデルを無視しているため、開発者は代替のI/Oを使用して通信経路を保護できます。 SSLEngineはNew I/O APIと組み合わせて、安全なブロックまたは非ブロックSocketChannelなどの実装を作成できます。 詳細は、「JSSEリファレンス・ガイド」を参照してください。 FileInputStreamおよびFileOutputStreamクラスでは、ベースとなるFileChannelオブジェクトを返すgetChannelメソッドが追加され、closeメソッドはベースとなるチャネルをクローズするように改訂されました。RandomAccessFileクラスでは、getChannelメソッドが追加され、closeメソッドはベースとなるチャネルをクローズするように改訂されました。 RandomAccessFileコンストラクタが、モード文字「s」と「d」をサポートするようになり、ファイルを開くときに、同期書き込みまたは同期データ書込みを指定できるようになりました。 InputStreamReaderおよびOutputStreamWriterクラスでは、ストリームとCharsetオブジェクトを引数に取るコンストラクタが追加され、getEncodingメソッドが、使用されているエンコーディングの互換名を返すように改訂されました。 既存のCharsetDecoderオブジェクトを取るInputStreamReaderのコンストラクタと、既存のCharsetEncoderオブジェクトを取るOutputStreamWriterのコンストラクタが追加されました。 NewDirectByteBuffer、GetDirectBufferAddressおよびGetDirectBufferCapacity。
java.io.Fileクラスの変更点について説明します。java.ioパッケージの変更点について説明します。