Javaのストリームが最大限の威力を発揮するのは、ネットワークの世界においてです。
Javaのネットワーク機能については、後の回で詳しく論ずるつもりですが、
ここでは、ストリームに関連して、いくつかのクラスを紹介したいと思います。
UNIX/Cで、ネットワークのプログラムをするためには、「ソケット(socket)」を
用います。所が、UNIX/Cのプログラミングの中でも、ソケット・プログラミングは、
難物です。そもそも、「ソケットて何だ?」という質問に答えるのが意外と難しい
のです。ソケットは、実際には、「ファイル・ディスクリプタ」と同じものなのですが
「ファイル」と関係があるとは限りません。UNIX/Cの文化は、歴史的には、
ファイル概念の拡大と結びついています。そうした流れの中では、
「ソケットもファイル・ディスクリプタである」という説明も説得力を持つのですが、
そうでない人には、かえってわけが分かりません。よく行われるのは、「ソケット
は、通信の端点である」という説明なのですが、これも当たり前に聞こえて真意が
なかなか伝わりません。
ところが、Javaでは、ソケットなしで、ストリームを使うだけで、ネットワークの プログラムが書けてしまうのです。