|  | New I/O API | ドキュメントの目次 | 
v1.4 で導入された New I/O (NIO) API は、バッファ管理、スケーラブルなネットワークとファイル入出力、文字セットのサポート、および正規表現マッチングの分野で新しい機能を提供し、パフォー マンスを向上させています。NIO API は、java.ioパッケージの入出力機能を補足するものです。機能
NIO API には、次の機能が含まれています。
- プリミティブ型のデータ用のバッファ
- 文字セットのエンコーダおよびデコーダ
- Perl スタイルの正規表現に基づくパターンマッチング機能
- チャネル (新しいプリミティブ入出力の抽象化)
- ロックとメモリマッピングをサポートするファイルインタフェース
- スケーラブルなサーバに出力するための、多重化された非ブロック入出力機能
拡張
J2SE 5.0 の拡張 - 新しいクラスjavax.net.ssl.SSLEngineが導入されました。J2SDK v1.4.0 での既存の安全な通信インフラストラクチャであるjavax.net.ssl.SSLSocketは、java.net.Socketの I/O モデルを基にしていました。javax.net.ssl.SSLEngineクラスは I/O モデルを無視しているため、開発者は代替の I/O を使用して通信経路を保護することができます。SSLEngineは New I/O API と組み合わせて、安全なブロックまたは非ブロックSocketChannelのような実装を作成できます。 詳細は、「J2SE 5.0 の拡張」を参照してくださ い。例
API の参照先
新しいパッケージ、クラス、およびインタフェース
java.nioパッケージ: バッファ。NIO API 全体で使用される
java.nio.channelsパッケージ: チャネルとセレクタ
java.nio.charsetパッケージ: 文字エンコーディング
java.nio.channels.spiパッケージ: チャネルのためのサービスプロバイダクラス
java.nio.charset.spiパッケージ: 文字セットのためのサービスプロバイダクラス
java.util.regexパッケージ: 正規表現で指定されたパターンに対して文字シーケンスをマッチングするためのクラス
java.lang.CharSequenceインタフェース:java.util.regexパッケージのメソッドに引数として渡せるオブジェクトによって実装されるインタフェース。String、StringBuffer、 およびjava.nio.CharBufferクラスがこのインタフェースを実装する注: 新しい
InetSocketAddressおよびSocketAddressクラスは、厳密には NIO API の一部ではありませんが、NIO API によって使用されます。改訂されたクラスおよびインタフェース
FileInputStreamおよびFileOutputStreamクラスでは、基本となるFileChannelオブジェクトを返すgetChannelメソッドが追加され、closeメソッドは基本となるチャネルをクローズするように改訂された- 同様に、
RandomAccessFileクラスでは、getChannelメソッドが追加され、closeメソッドは基本となるチャネルをクローズするように改訂された。RandomAccessFileコンストラクタが、モード文字「s」と「d」をサポートするようになり、ファイルを開くときに、同期書き込みまたは 同期データ書き込みを指定できるようになった
InputStreamReaderおよびOutputStreamWriterクラスでは、ストリームとCharsetオブジェクトを引数にとるコンストラクタが追加され、getEncodingメソッドが、使用されているエンコーディングの伝統名を返すように改訂された既存のCharsetDecoderオブジェクトをとるInputStreamReaderのコンストラクタと既存のCharsetEncoderオブジェクトをとるOutputStreamWriterのコンストラクタが追加された
Stringクラスでは、2 つのsplitメソッドが新しく追加された。さらに、subSequenceメソッドが追加された (Stringが実装するようになったCharSequenceインタフェースで必要)。matches、replaceAll、およびreplaceFirstという 3 つのメソッドが追加された
StringBufferクラスでは、subSequenceメソッドが追加された (StringBufferが実装するようになったCharSequenceインタフェースで必要)
Threadクラスでは、interruptメソッドが、チャネル入出力操作でブロックされるスレッドに割り込めるように改訂された
DatagramSocketクラスでは、ソケットがチャネルを持ち、そのチャネルが非ブロックモードである場合に、receiveおよびsendメソッドがjava.nio.channels.IllegalBlockingModeExceptionをスローするように改訂された。さらに、closeメソッドがソケットのチャネル (ソケットが持っている場合) をクローズするようになり、基本となるチャネル (存在する場合) を返すgetChannelメソッドが新しく追加された
ServerSocketクラスでは、ソケットがチャネルを持ち、そのチャネルが非ブロックモードである場合に、acceptおよびimplAcceptメソッドがjava.nio.IllegalBlockingModeExceptionをスローするように改訂された。さらに、getChannelメソッドが追加され、closeメソッドが改訂された (DatagramSocketクラスと同じ理由による)
Socketクラスでは、getInputStreamおよびgetOutputStreamメソッドが、ソケットがチャネルを持っている場合に、すべての入出力操作をそのチャネルに委譲するように改訂された。また、ソケットがチャネルを持ち、そ のチャネルが非ブロックモードである場合に、connectがjava.nio.IllegalBlockingModeExceptionをスローするように改訂された。さらに、getChannelメソッドが追加され、closeメソッドが改訂された (DatagramSocketクラスと同じ理由による)ダイレクトバッファをサポートするために、新しい 3 つの関数が Java Native Interface (JNI) に追加されました。詳細は、「v1.4 の JNI 拡張機能」を参照してくださ い。
詳細情報
- New I/O: Additional Documentation
- サポートされているエンコーディング
- JSR-51: New I/O APIs for the Java Platform (注: v1.4 には、この仕様要求で提案されている変更のサブセットが含まれています。)
| Copyright © 2002 Sun Microsystems, Inc. All Rights Reserved.コメントの送付先: java-io@java.sun.com |   Java ソフトウェア |