モジュール java.base

パッケージ java.net

ネットワーク・アプリケーションを実装するためのクラスを提供します。

java.netパッケージは、大きく次の2つの部分に分けられます。

  • 低レベルのAPI: 次の抽象概念を扱います。

    • アドレス: IPアドレスのような、ネットワーク上の識別子です。

    • ソケット: 基本的な双方向データ通信メカニズムです。

    • インタフェース: ネットワーク・インタフェースを記述します。

  • 高レベルのAPI: 次の抽象概念を扱います。

    • URI: Universal Resource Identifierを表します。

    • URL: Universal Resource Locatorを表します。

    • 接続: URLによって参照されるリソースへの接続を表します。

アドレス

アドレスは、ホスト識別子、ソケット端点識別子のいずれかとして、java.net APIの全体で使用されます。

InetAddressクラスは、IP (Internet Protocol)アドレスを表す抽象オブジェクトです。 これには次の2つのサブクラスがあります。

ただし、ほとんどの場合、サブクラスを直接扱う必要はありません。InetAddress抽象オブジェクトが必要な機能の大部分をカバーするはずだからです。

IPv6について

すべてのシステムがIPv6プロトコルをサポートしているわけではありません。また、Javaネットワーク・スタックはIPv6が使用可能な場合はそれを透過的に検出して使用しようとしますが、システム・プロパティを使ってその使用を無効にすることもできます。 IPv6が使用可能でないか明示的に無効化されている場合、Inet6Addressが、大部分のネットワーク操作で有効な引数ではなくなります。 InetAddress.getByName(java.lang.String)のようなメソッドがホスト名を検索する際にInet6Addressを返すことは決してありませんが、リテラルを渡すことでそのようなオブジェクトを生成することは可能です。 その場合、大部分のメソッドは、Inet6Addressを指定して呼び出されると、例外をスローします。

ソケット

ソケットは、ネットワーク上のマシン間で通信リンクを確立するための手段です。 java.netパッケージは次の4種類のソケットを提供します。

TCPソケットによる送受信は、InputStreamとOutputStreamを使って行われます。これらを取得するには、Socket.getInputStream()メソッドとSocket.getOutputStream()メソッドを使用します。

インタフェース

NetworkInterfaceクラスは、ローカル・マシンのすべてのネットワーク・インタフェース(Ethernet接続やPPP端点など)の参照やクエリーを行うためのAPIを提供します。 ローカル・インタフェースのいずれかがIPv6をサポートするように構成されているかどうかをチェックできるのは、このクラスを通じてです。

適合する実装はすべて、NetworkInterfaceオブジェクトを少なくとも1つサポートする必要があります。そのオブジェクトは、ネットワークに接続されているか、同じマシン上のエンティティとだけ通信できる「ループバック」インタフェースであることが必要です。

高レベルのAPI

java.netパッケージ内の多くのクラスは、非常に高レベルの抽象化オブジェクトを提供しており、ネットワーク上のリソースへの容易なアクセスを可能にします。 それらのクラスを次に示します。

  • URI: RFC 2396で規定されているUniversal Resource Identifierを表すクラスです。 名前からわかるように、これは単なる識別子であり、リソースへのアクセス手段を直接的には提供しません。
  • URL: Universal Resource Locatorを表すクラスであり、URIの従来の概念とリソースへのアクセス手段の両方を兼ね備えています。
  • URLConnectionはURLから作成されます。これは、URLが指し示すリソースへのアクセスに使用される通信リンクです。 この抽象クラスは、その処理のほとんどを、HTTPやHTTPSといった基本となるプロトコル・ハンドラに委譲します。
  • HttpURLConnection: URLConnectionのサブクラスであり、HTTPプロトコルに固有の追加機能をいくつか提供します。 このAPIは、新しい「HTTPクライアントAPI」によって置き換えられました。

推奨の使用方法は、URIを使ってリソースを識別したあと、そのリソースにアクセスする段階でそれをURLに変換するというものです。 そのURLから、きめ細かな制御が可能なURLConnectionを取得することも、InputStreamを直接取得することもできます。

次はその例です。

 URI uri = new URI("http://www.example.com/");
 URL url = uri.toURL();
 InputStream in = url.openStream();
 

プロトコル・ハンドラ

前述のとおり、URLとURLConnectionはプロトコル・ハンドラに依存しており、それらが存在していなければいけません。そうでない場合は、例外がスローされます。 これがURIとの主な違いです。URIはリソースを識別するだけなので、プロトコル・ハンドラにアクセスする必要はありません。 したがって、URIの作成時には、myproto://myhost.mydomain/resource/のようにどのような種類のプロトコル・スキームでも含めることができるのに対し、同様のURLは、指定されたプロトコルのハンドラをインスタンス化しようとします。そして、そのようなハンドラが存在しない場合は例外がスローされます。

プロトコル・ハンドラはデフォルトで、デフォルトの場所から動的にロードされます。 ただし、追加のプロトコル・ハンドラをservicesとしてデプロイすることは可能です。 URLStreamHandlerProviderのサービス・プロバイダは、「URLコンストラクタ」で指定されているように、実行時に配置されます。

追加仕様

導入されたバージョン:
1.0
  • インタフェースのサマリー 
    インタフェース 説明
    ContentHandlerFactory
    このインタフェースは、コンテンツ・ハンドラのファクトリを定義します。
    CookiePolicy
    CookiePolicy実装は、どのCookieを受け入れ、どのCookieを拒否すべきかを決定します。
    CookieStore
    CookieStoreオブジェクトは、Cookieのストレージを表します。
    DatagramSocketImplFactory
    このインタフェースは、データグラム・ソケット実装のファクトリを定義します。
    FileNameMap
    ファイル名とMIMEタイプ文字列をマップするメカニズムを提供する単純なインタフェースです。
    ProtocolFamily
    通信プロトコルのファミリを表します。
    SocketImplFactory
    このインタフェースは、ソケット実装のファクトリを定義します。
    SocketOption<T>
    ソケットに関連付けられたソケット・オプション。
    SocketOptions
    ソケット・オプションを取得/設定するメソッドのインタフェース。
    URLStreamHandlerFactory
    URLストリーム・プロトコル・ハンドラのファクトリを定義するインタフェースです。
  • クラスのサマリー 
    クラス 説明
    Authenticator
    Authenticatorクラスは、ネットワーク接続に必要な認証を取得するためのオブジェクトを表します。
    CacheRequest
    リソースをResponseCache内に格納するためのチャネルを表します。
    CacheResponse
    ResponseCacheからリソースを取得するためのチャネルを表します。
    ContentHandler
    抽象クラスContentHandlerは、URLConnectionからObjectを読み込むすべてのクラスのスーパー・クラスです。
    CookieHandler
    CookieHandlerオブジェクトは、HTTPプロトコル・ハンドラにHTTP状態管理ポリシー実装を組み込むためのコールバック・メカニズムを提供します。
    CookieManager
    CookieManagerはCookieHandlerの具象実装を提供し、CookieのストレージとCookieの受け入れ/拒否に関するポリシーとを分離します。
    DatagramPacket
    このクラスはデータグラム・パケットを表します。
    DatagramSocket
    このクラスは、データグラム・パケットを送受信するためのソケットを表します。
    DatagramSocketImpl
    抽象データグラムおよびマルチキャスト・ソケットを実装する基底クラスです。
    HttpCookie
    HttpCookieオブジェクトは、サーバーとユーザー・エージェントとの間で状態情報を伝達するHTTP Cookieを表します。
    HttpURLConnection
    HTTP固有の機能をサポートするURLConnectionです。
    IDN
    通常のUnicode表現とASCII互換エンコーディング(ACE)表現との間で国際化ドメイン名(IDN)の変換を行うメソッドを提供します。
    Inet4Address
    このクラスは、インターネット・プロトコル・バージョン4 (IPv4)アドレスを表します。
    Inet6Address
    このクラスは、インターネット・プロトコル・バージョン6 (IPv6)アドレスを表します。
    InetAddress
    IP (Internet Protocol)アドレスを表すクラスです。
    InetSocketAddress
    このクラスは、IPソケット・アドレス(IPアドレス+ポート番号)を実装します。これはペア(ホスト名+ポート番号)にすることもできます。その場合、ホスト名の解決が試みられます。
    InterfaceAddress
    このクラスは、ネットワーク・インタフェース・アドレスを表します。
    JarURLConnection
    JAR (Java ARchive)ファイル、またはJARファイル内にあるエントリへのURL接続です。
    MulticastSocket
    マルチキャスト・データグラム・ソケット・クラスは、IPマルチキャスト・パケットを送受信する場合に役立ちます。
    NetPermission
    このクラスは、各種のネットワーク・アクセス権のために使います。
    NetworkInterface
    このクラスは、名前と、このインタフェースに割り当てられた一連のIPアドレスから成るネットワーク・インタフェースを表します。
    PasswordAuthentication
    クラスPasswordAuthenticationは、オーセンティケータによって使用されるデータ・ホルダーです。
    Proxy
    このクラスはプロキシ設定を表しますが、通常これは、タイプ(http、socks)とソケット・アドレスから成ります。
    ProxySelector
    URLで参照されるネットワーク・リソースへの接続時に使用するプロキシ・サーバーが存在する場合に、それらを選択します。
    ResponseCache
    URLConnectionのキャッシュの実装を表します。
    SecureCacheResponse
    最初にTLSなどのセキュアな方法で取得されたキャッシュ応答を表します。
    ServerSocket
    このクラスはサーバー・ソケットを実装します。
    Socket
    このクラスは、クライアント・ソケット(単に「ソケット」とも呼ばれる)を実装します。
    SocketAddress
    このクラスは、プロトコルに関連付けられていないソケット・アドレスを表します。
    SocketImpl
    抽象クラスSocketImplは、実際にソケットを実装するすべてのクラスに共通のスーパー・クラスです。
    SocketPermission
    このクラスは、ソケットを通じたネットワークへのアクセス権を表します。
    StandardSocketOptions
    標準ソケット・オプションを定義します。
    URI
    URI (Uniform Resource Identifier)参照を表します。
    URL
    URLクラスは、Uniform Resource Locator (ユニフォーム・リソース・ロケータ)、つまりWorld Wide Web上の「リソース」へのポインタを表します。
    URLClassLoader
    このクラス・ローダーは、JARファイルとディレクトリの両方を参照するURLの検索パスから、クラスとリソースをロードするために使用されます。
    URLConnection
    抽象クラスURLConnectionは、アプリケーションとURLとの間の通信リンクを表すすべてのクラスのスーパー・クラスです。
    URLDecoder
    HTML形式をデコードするためのユーティリティ・クラスです。
    URLEncoder
    HTML形式をエンコードするためのユーティリティ・クラスです。
    URLPermission
    ある特定のURLで定義され、ある特定のユーザー設定可能なリクエスト・メソッドおよびリクエスト・ヘッダーのセットで使われるリソースまたはリソース・セットへのアクセス権を表します。
    URLStreamHandler
    抽象クラスURLStreamHandlerは、すべてのストリーム・プロトコル・ハンドラに共通のスーパー・クラスです。
  • 列挙型のサマリー 
    列挙型 説明
    Authenticator.RequestorType
    認証を要求しているエンティティのタイプ。
    Proxy.Type
    プロキシ・タイプを表します。
    StandardProtocolFamily
    通信プロトコルの標準ファミリを定義します。
  • 例外のサマリー 
    例外 説明
    BindException
    ソケットをローカル・アドレスとポートにバインドしようとした際にエラーが発生したことを通知します。
    ConnectException
    ソケットをリモート・アドレスとポートに接続しようとした際にエラーが発生したことを通知します。
    HttpRetryException
    HTTP要求を再試行する必要があるが、ストリーミング・モードが有効になっているために自動的に再試行できないことを示すために、スローされます。
    MalformedURLException
    不正な形式のURLが見つかったことを示すためにスローされます。
    NoRouteToHostException
    ソケットをリモート・アドレスとポートに接続しようとした際にエラーが発生したことを通知します。
    PortUnreachableException
    ICMPポート到達不可能メッセージが接続されたデータグラムに受信されたことを示すシグナルです。
    ProtocolException
    使用しているプロトコルでエラー(TCPエラーなど)が発生したことを表すためにスローされます。
    SocketException
    ソケットの作成中またはアクセス中にエラーが発生したことを示すためにスローされます。
    SocketTimeoutException
    ソケットの読み込みまたは受け入れでタイム・アウトが発生したことを示すシグナルです。
    UnknownHostException
    ホストのIPアドレスが判定できなかった場合にスローされます。
    UnknownServiceException
    未知のサービス例外が発生したことを示すためにスローされます。
    URISyntaxException
    文字列をURI参照として解析できなかったことを示すためにスローされたチェック例外です。