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 ソフトウェア |