Javadocをよく読む(java.nioパッケージ編)

はじめに

Javadocしっかり読んでみるシリーズ第4弾です。

今回は、今更ながらjava.nioパッケージ配下のJavadocを読んでいきます。

java.nioとは

2002年にJava1.4でリリースされたパッケージです。JSR 51 Section 2: Requestから抜粋すると

  • An API for scalable I/O operations on both files and sockets
  • An API for fast buffered binary(character) I/O
  • An API for character-set converters

とあるので、スケーラブルで高速なIOを実現することが目的で導入されたパッケージです。

java.nioの構成要素

パッケージのJavadoc見てみると主要な構成要素は以下4つのようです。

NIO APIは、主に次の抽象化要素から構成されます。

*「Buffer」。データのコンテナ。

*「Charset」と、それに対応する「デコーダ」および「エンコーダ」(byteとUnicode文字との間の変換を行う)。

* さまざまな種類の「Channel」(入出力操作を実行できるエンティティへの接続を表す)。

*「Selector」と「SelectionKey」(「SelectableChannel」とともに多重化された非ブロック入出力 機能を定義する)。

 

ざっくりのクラス図はこんな感じになっています。
(だいたいのサブクラスは端折ってます)
uml

以下で主要な構成要素のJavadowcを見ていきます。

Buffer

特定のプリミティブ型データのコンテナです。
バッファは、特定のプリミティブ型要素のリニアで有限のシーケンスです。内容のほかに、容量、リミット、位置という必須プロパティがあります。

有限なデータのコンテナというのがポイントのインターフェースです。

Channel

入出力操作に関係するチャネルです。
チャネルは、ハードウェア・デバイス、ファイル、ネットワーク・ソケットのほか、個別の入出力操作(読み込み、書き込みなど)を実行できるプログラム・コンポーネントなどのエンティティへのオープン接続を表します。

入出力操作を実行できるエンティティへのオープン接続を表すというのがポイントのインターフェースです。

SelectableChannel

Selector経由で多重化できるチャネルです。

選択可能チャネルは、複数の並行スレッドで安全に使用できます。

多重化できるチャネルかつ並行スレッドで安全に使えるというのがポイントのインターフェースです。

Selector

SelectableChannelオブジェクトのマルチプレクサです。

セレクタを作成するには、このクラスのopenメソッドを呼び出します。…セレクタは、closeメソッドでクローズされるまでオープンの状態を維持します。

SelectableChannelオブジェクトのマルチプレクサというのがポイントのインターフェースです。(マルチプレクサとは、ふたつ以上の入力をひとつの信号として出力する機構のことです)

SelectoionKey

SelectableChannelがSelectorに登録されていることを示すトークンです。

Selectorに登録されていることを示すトークンというのがポイントのインターフェースです。

Charset

16ビットUnicode コード単位のシーケンスとバイト・シーケンス間の指定マップです。このクラスには、デコーダやエンコーダを作成するメソッドや、文字セットに関連付けられたさまざまな名前を取得するメソッドを定義します。このクラスのインスタンスは不変です。

文字セットに関連付けられたさまざまな名前を取得するメソッドを定義というのがポイントのインターフェースです。

まとめ

java.nioパッケージのJavadocを見てきました。たくさんのパッケージがありますが主要なクラスをみることでおおむねパッケージの意図が把握できました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA