  Java CGI HOWTO
  by David H. Silber javacgi-document@orbits.com
  v0.5, 1 December 1998
  藤原輝嘉 fujiwara@linux.or.jp

  この HOWTO 文書は，Javaで書かれた CGI プログラムを WWW サーバ上で実行
  できるように設定する方法と，CGI プログラムを書くための Java の使い方を
  説明します．一般に HOWTO 文書は Linux を対象として書かれていますが，こ
  の文書に限っては UNIX の種類には依存していません．
  ______________________________________________________________________

  目次

  1. はじめに
     1.1 本文書で前提とする知識
     1.2 本文書について
     1.3 プログラム・パッケージについて
     1.4 メーリングリスト

  2. Java の CGI プログラムを実行するためのサーバの設定(説明つき)
     2.1 要求されるシステム性能
     2.2 Java CGI アドオン・ソフトウェア
     2.3 ソースの展開
     2.4 ローカルパスについての方針の決定
     2.5 インストールのテスト

  3. Java の CGI プログラムを実行するためのサーバの設定(簡略版)
  4. Java CGI プログラムの実行
     4.1 CGI モデルの下で Java を実行する際の障害
        4.1.1 Java のプログラムは普通の実行ファイルのようには実行できない
        4.1.2 Java は環境変数にアクセスする一般的な方法を持たない
     4.2 Java CGI プログラムの実行による問題の解決
        4.2.1 java.cgi スクリプト
        4.2.2 HTML の FORM からの java.cgi の起動

  5. Java CGI クラスの使用
     5.1 CGI
        5.1.1 クラスの文法
        5.1.2 クラスについての説明
        5.1.3 メンバの概略
        5.1.4 参照
        5.1.5 CGI()
        5.1.6 getNames()
        5.1.7 getValue()
     5.2 CGI_Test
        5.2.1 メンバの概略
        5.2.2 参照
        5.2.3 main()
     5.3 Email
        5.3.1 クラスの文法
        5.3.2 Class Description
        5.3.3 メンバの概略
        5.3.4 参照
        5.3.5 Email()
        5.3.6 send()
        5.3.7 sendTo()
        5.3.8 subject()
     5.4 Email_Test
        5.4.1 メンバの概略
        5.4.2 参照
        5.4.3 main()
     5.5 HTML
        5.5.1 クラスの書式
        5.5.2 クラスについての説明
        5.5.3 メンバ概略
        5.5.4 参照
        5.5.5 HTML()
        5.5.6 author()
        5.5.7 definitionList()
        5.5.8 definitionListTerm()
        5.5.9 endList()
        5.5.10 listItem()
        5.5.11 send()
        5.5.12 title()
     5.6 HTML_Test
        5.6.1 メンバの概略
        5.6.2 参照
        5.6.3 main()
     5.7 Text
        5.7.1 クラスの書式
        5.7.2 クラスについての説明
        5.7.3 メンバの概略
        5.7.4 参照
        5.7.5 add()
        5.7.6 addLineBreak()
        5.7.7 addParagraph()

  6. 将来の予定
  7. 更新履歴
     7.1 0.4 から 0.5 での変更点
     7.2 0.3 から0.4 での変更
     7.3 0.2 から0.3 での変更
     7.4 0.1 から0.2 での変更

  ______________________________________________________________________

  1.  はじめに

  Java の設計方針のため，プログラマは簡単にはシステムの環境変数へアクセ
  スできません．また，Java 開発キット(JDK, Java Development Kit)の設定の
  ため，プログラムを起動するには複数のトークンが必要となりますが，これは
  HTML の FORM や CGI の操作と組み合わせて用いるには不便です．これらの制
  限を回避する方法はいくつもありますが，筆者はそのうちの一つを実装しまし
  た．詳しくは後の章を見てください．

  筆者が前の段落を書いた1996年より，Java の技術は大きく変化しています．
  サーバ側で Java プログラムを実行するためのより優れた解が現在は利用でき
  ます．サーブレット(servlet)を調べてみてください．

  1.1.  本文書で前提とする知識

  筆者は HTML や CGI の概念についての一般的な知識および読者自身が使う
  HTTP サーバについての最小限の知識を持っていることを前提とします．ま
  た，読者が Java のプログラムの書き方を知っていなければ，本文書の大部分
  は無意味になってしまうと思います．

  1.2.  本文書について

  本文書の最新版は http://www.orbits.com/software/Java_CGI.html で読むこ
  とができます．

  1.3.  プログラム・パッケージについて

  本文書で説明するプログラムのパッケージの最新版は
  ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz から anonymous FTP
  で入手できます．パッケージには本文書の SGML ソースも含まれています．

  パッケージは GNU Library General Public License の条項に従って配布する
  ことができます．本文書そのものは Linux HOWTO copyright notice の条項に
  従って配布することができます． (訳注: 日本語訳も Linux HOWTO copyright
  notice に従って配布することができます．)

  もしこのソフトウェアを使う場合には，他の人もこの Java CGI クラスを見つ
  けることができるように http://www.orbits.com/software/Java_CGI.html へ
  のハイパーリファレンスを張っていただけると幸いです．

  筆者はこのパッケージのメンテナンスやサポートを行う時間が取れなくなった
  ため，これがおそらく最終リリースとなります．このプログラムが気に入っ
  て，メンテナンスを引き継ごうという方がいらっしゃれば筆者(
  javacgi-document@orbits.com)にご連絡ください．

  1.4.  メーリングリスト

  このソフトウェアのインストールや利用における共通の問題を通してお互いの
  作業を助け合えるようにするため，筆者は majordomo のメーリングリストを
  作りました． javacgi-request@orbits.com 宛に本文が subscribe である
  メールを送ってください．

  2.  Java の CGI プログラムを実行するためのサーバの設定(説明つき)

  この章では，Java CGIパッケージのインストールについて，ユーザの操作がど
  のような影響を及ぼすかも分かるように，詳しく説明します．単にインストー
  ルすることが目的で，細かい理由はあまり気にならない人は，この章は飛ばし
  て``Java の CGI プログラムを実行するためのサーバの設定(簡略版)'' へ進
  んでください．

  2.1.  要求されるシステム性能

  このソフトウェアは Java 開発キットがインストールされているほとんど全て
  の UNIX 系 OS のウェブサーバ上で動作します．筆者は Debian Linux パッ
  ケージを用いており，HTTP デーモンとしては apache を使っています．もし
  あなたが使っているサーバ上で動作しなかった場合には，メーリングリストで
  連絡してください．詳しくは ``メーリングリスト''を参照してください．

  残念ながら Java ランタイムインタプリタはメモリを大量消費するようです．
  Java の CGI プログラムをたくさん実行するようならば，サーバ機のメモリを
  増設した方が良いかもしれません．

  2.2.  Java CGI アドオン・ソフトウェア

  Java による CGI プログラム実行を支援するために私が書いたソフトウェアは
  Java CGIと言います．このパッケージは
  ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz から入手することが
  できます(バージョン番号は変わるかもしれません)．

  2.3.  ソースの展開

  まず，本パッケージを展開する適当なディレクトリを決めます． (各種ソース
  を展開する標準のディレクトリをまだ決めていない場合には，
  /usr/local/srcにするのが良いでしょう．) 次に以下のコマンドでパッケージ
  を展開します．

  gzip -dc java_cgi-0.5.tgz | tar -xvf -

  この操作により java_cgi-0.5 というディレクトリができます．このディレク
  トリ内には，本文書でこれ以降に出てくるファイルがあるはずです．(もし
  バージョン番号が変わっている場合には，これ以降はパッケージに含まれる文
  書の指示に従ってください．)

  2.4.  ローカルパスについての方針の決定

  ここでは，Java CGI パッケージを配置する場所を決める必要があります．こ
  れは一般的にはcgi-binがあるディレクトリにします．私の apacheサーバ
  はcgi-binディレクトリとして /var/www/cgi-binを用いるよう設定しているの
  で，Java CGI のプログラムを置く場所として/var/www/javacgiを使っていま
  す．既に CLASSPATHに含まれているディレクトリに Java CGI のプログラムを
  置くことは好まれないと思います．場所を決めたら，システム設定を反映させ
  るために Makefile を編集します．次に root でログインして，make install
  を実行します．これによって，Java のプログラムがコンパイルさ
  れ，java.cgiスクリプトがシステム設定に応じて修正され，各プログラムが適
  切な場所にインストールされます．これらに加えて本文書の HTML 版やテスト
  用の HTML 文書が必要であれば， make installの代わりにmake allを実行し
  ます．

  2.5.  インストールのテスト

  パッケージによってインストールが行われる HTML 文書は，
  javacgitest.html, javaemailtest.html 及び javahtmltest.htmlです．前節
  でmake allを実行した場合には，これらの文書は Makefile中の WEBDIR で指
  定したディレクトリにあります．そうでない場合には，javacgitest.html-
  dist, javaemailtest.html-dist，javahtmltest.html-dist から各文書を作る
  ためにmake testを実行してください．

  本来はクライアント側では得られないはずの各種情報が表示されていれば，イ
  ンストールが正常にできています．これを確かめた後は， CGI_Test.class,
  Email_Test.class, HTML_Test.classを JAVACGI ディレクトリから，
  javacgitest.html, javaemailtest.html, javahtmltest.html は WEBDIR ディ
  レクトリから削除しても構いません．

  3.  Java の CGI プログラムを実行するためのサーバの設定(簡略版)

  o  Java CGI パッケージを
     ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz から入手します．
     (バージョン番号は変わるかもしれません．)

  o  パッケージを次のコマンドで展開します:

     gzip -dc java_cgi-0.5.tgz | tar -xvf -

  (もしバージョン番号が変わっている場合には，これ以降はパッケージに含ま
  れる文書の指示に従ってください．)

  o  展開によって新しくできたディレクトリ内にあるMakefileを編集し，
     java_cgi-0.5の部分をあなたが使っているシステムに合わせて変更しま
     す．

  o  root になってmake installを実行します．これにより Java プログラムの
     コンパイル，システム特有の情報の適用，各ファイルのインストールが行
     われます．本文書の HTML 版とテスト用の HTML 文書が必要な場合には，
     make installの代わりにmake allを実行します．

  o  以上で準備完了です．

  4.  Java CGI プログラムの実行

  4.1.  CGI モデルの下で Java を実行する際の障害

  WWW サーバから Java のプログラムを実行する際には 2つの大きな問題があり
  ます:

  4.1.1.  Java のプログラムは普通の実行ファイルのようには実行できない

  Java のプログラムを実行するためには，コマンドライン上でJava ランタイ
  ム・インタプリタを実行し，これに初期クラス(実行するプログラム)を与えな
  ければなりません．ところが，HTML の FORM を使う場合，WWW サーバにコマ
  ンドラインを教えることはできません．

  4.1.2.  Java は環境変数にアクセスする一般的な方法を持たない

  Java のプログラムが必要とする環境変数は，明示的に渡してやらなければな
  りません． C言語のgetenv()関数のような方法はありません．

  4.2.  Java CGI プログラムの実行による問題の解決

  これらの問題を解決するため，Java インタプリタが必要とする情報を与える
  ための CGI シェルスクリプトを作りました．

  4.2.1.  java.cgi スクリプト

  このシェルスクリプトは HTTP デーモンと 実行する Java CGI プログラムの
  やりとりを管理します．このスクリプトは，まず実行するプログラムの名前を
  サーバが与えたデータから展開します．次に全ての環境変数をテンポラリファ
  イルに集めます．それから，環境変数についての情報ファイルの名前とプログ
  ラムの名前をコマンドラインに指定してJava インタプリタを実行します．

  ``ローカルパスについての方針の決定'' の節で設定およびインストールされ
  ています．

  4.2.2.  HTML の FORM からの java.cgi の起動

  Java CGI を使う FORM では以下のように FORM のアクションを指定します:

  <form action="/cgi-bin/java.cgi/CGI_Test" method="POST">

  ここで，/cgi-bin/はローカルの CGI ディレクトリであり， java.cgiはWWW上
  での Java の実行を可能にする Java フロントエンドです．そして，CGI_Test
  は実行する Java プログラムの名前の例です．

  5.  Java CGI クラスの使用

  現在は ``CGI'', ``Email'', ``HTML'' の3つの主要クラスがサポートされて
  います．さらに MIME 形式の入出力を扱うクラス(MIMEin と MIMEout)の追加
  を考えています．
  サポートとテストのためのクラスもいくつかあります． ``CGI_Test'',
  ``Email_Test'', ``HTML_Test'' はインストールが正常に行われているかどう
  かテストするために用います．これらのクラスはこのクラスライブラリを用い
  る Java プログラムを作るための出発点としても利用できます． ``Text'' ク
  ラスはEmail クラスと HTML クラス両方のスーパークラスです．

  5.1.  CGI

  5.1.1.  クラスの文法

  public class CGI

  5.1.2.  クラスについての説明

  CGI クラスは「CGI 情報」つまり，WWW サーバによって設定される環境変数と
  submitアクションが選択された時にフォームから送られる名前/値の組を保持
  します．

  このクラスは``Orbits.net''パッケージに含まれます．

  5.1.3.  メンバの概略

  ______________________________________________________________________
          CGI()         //  コンストラクタ
          getNames()    //  名前のリストの取得
          getValue()    //  指定された名前に対応する値の取得
  ______________________________________________________________________

  5.1.4.  参照

  CGI_Test

  5.1.5.  CGI()

     目的
        利用可能な CGI データを含むオブジェクトの生成

     書式
        public CGI()

     説明
        CGI オブジェクトが生成された時，利用可能な CGI 情報は新しいオブ
        ジェクトの局所メモリ領域に全て与えられる．

  5.1.6.  getNames()

     目的
        値と対になる名前を列として与える

     書式
        public Enumeration getNames ()

     説明
        対応する値が定義されている名前を全て含むリストを与える．

     返り値
        定義された名前を全て含む Enumeration．

  5.1.7.  getValue()

     目的
        名前に対応する値を得る．

     書式
        public String getValue ( String name )

     説明
        このメソッドは HTML の FORM より送られる名前 と値 の対応を与え
        る．

     引き数

        name
           値を選択するためのキー．

     戻り値
        指定した名前に対応する値を示す String．

  5.2.  CGI_Test

  このクラスはCGIクラスの使用例の提示と，Java CGIパッケージが正しく動作
  しているか確認するテストのために用いる．

  5.2.1.  メンバの概略

  ______________________________________________________________________
          main()      //  Program main()
  ______________________________________________________________________

  5.2.2.  参照

  CGI

  5.2.3.  main()

     目的
        main() メソッドを与える．

     書式
        public static void main( String argv[] )

     説明
        これは CGI プログラムの基本形であり，動作そのものは行わないが，
        利用可能な名前/値の組とその現在の値をリストとして返す．

     引き数

        argv[]
           java.cgi スクリプトによってプログラムに与えられる引き数．現時
           点では未使用である．

  5.3.  Email

  5.3.1.  クラスの文法

  public class Email extends Text

  5.3.2.  Class Description

  Text クラスの add*() メソッドとこのクラスが追加する電子メール専用のメ
  ソッドによってメッセージを構成する．

  このクラスは ``Orbits.net'' パッケージに含まれる．

  5.3.3.  メンバの概略

  ______________________________________________________________________
          Email()      //  コンストラクタ
          send()       //  電子メールを送信する
          sendTo()     //  メッセージにあて先を付ける
          subject()    //  メッセージのサブジェクトを設定する
  ______________________________________________________________________

  5.3.4.  参照

  Email_Test, Text

  5.3.5.  Email()

     目的
        電子メールのメッセージを含むオブジェクトを生成する．

     書式
        public Email()

     説明
        空のメッセージを生成する．これは Email クラスの各メソッドによっ
        て完成されたメッセージとなる．

     参照
        Text

  5.3.6.  send()

     目的
        電子メールのメッセージを送信する．

     書式
        public void send ()

     説明
        このメソッドはメッセージの書式を整えて送信する．宛先が指定されて
        いない場合には何も行わない．

  5.3.7.  sendTo()

     目的
        メッセージに宛先を追加する．

     書式
        public String sendTo ( String address )

     説明
        address にこのメソッドに対する宛先のリストを追加する．メソッド自
        体は電子メールの宛先の数は制限しない．しかしリストが大きすぎる場
        合には，メール配送システムの制限を越えたり，計算機のメモリを消費
        し尽くす可能性がある．

     引き数

        address
           メッセージを送る宛先

  5.3.8.  subject()

     目的
        メッセージのサブジェクトを設定する．

     書式
        public void subject ( String subject )
     説明
        このメソッドは電子メールの Subject: 行のテキストを設定する．複数
        回呼び出された場合には，最も最後のものがサブジェクトとして用いら
        れる．

     引き数

        subject
           メッセージのSubject: 行のテキスト

  5.4.  Email_Test

  このクラスはEmailクラスの使用例の提示と，Java CGIパッケージが正しく動
  作しているか確認するテストのために用いる．

  5.4.1.  メンバの概略

  ______________________________________________________________________
          main()      //  Program main()
  ______________________________________________________________________

  5.4.2.  参照

  Email

  5.4.3.  main()

     目的
        main() メソッドを与える．

     書式
        public static void main( String argv[] )

     説明
        これは CGI プログラムの基本形であり，利用可能な名前/値の組とその
        現在の値をリストとして返す．また，Email変数で指定したアドレスへ
        リストの内容を送信する．

     パラメータ

        argv[]
           java.cgiスクリプトがプログラムに与える引き数．現時点では未使
           用である．

  5.5.  HTML

  5.5.1.  クラスの書式

  public class HTML extends Text

  5.5.2.  クラスについての説明

  Textクラスのadd*()メソッドとこのクラスによって追加する HTML 専用のメ
  ソッドによってメッセージを作成する．完成したメッセージは指定された場所
  に送られる．

  現時点ではリスト生成メソッドが正しい順番で行われたことを確認するエラー
  チェックは実行していない．従って，HTML 文法違反とならないようにするの
  はプログラマの責任である．

  このクラスは``Orbits.net''パッケージに含まれる．

  5.5.3.  メンバ概略

  ______________________________________________________________________
          HTML()                  //  コンストラクタ
          author()                //  文書の作者の名前を設定
          definitionList()        //  定義リスト開始
          definitionListTerm()    //  定義リストに項目を追加
          endList()               //  リスト終了
          listItem()              //  リストにエントリを追加
          send()                  //  HTMLメッセージを送る
          title()                 //  文書のタイトルを設定
  ______________________________________________________________________

  5.5.4.  参照

  HTML_Test, Text

  5.5.5.  HTML()

     目的
        HTMLメッセージを持つオブジェクトを生成する

     書式
        public HTML()

     説明
        空のメッセージを生成する．メッセージはHTML クラスの各メソッドを
        用いて完成させる．

     参照
        Text

  5.5.6.  author()

     目的
        文書の作者の名前を設定する．

     書式
        public void author ( String author )

     説明
        authorに文書の作者の名前を設定する．

     引き数

        author
           メッセージの作者として用いられるテキスト．

     参照
        title()

  5.5.7.  definitionList()

     目的
        定義リストを開始する．

     書式
        public void definitionList ()

     説明
        定義リストを開始する．定義リストは特別なリストであり，各エント
        リーが項目名とそれに続く定義テキストからなるリストである．定義リ
        ストの開始の後には，(最低)1つの項目名/テキストの組の生成および
        endListメソッドの呼び出しを行わなければならない．現在はリストを
        入れ子にしてはならない点に注意せよ．

     参照
        definitionListTerm(), endList(), listItem()

  5.5.8.  definitionListTerm()

     目的
        定義リストに項目を追加する．

     書式
        public void definitionListTerm ()

     説明
        定義リストに項目を追加する．リストの現在のエントリーの項目名に対
        するテキストは，このメソッドの呼び出しよりも後，かつ対応す
        るlistItemメソッドの呼び出しの前に追加しなければならない．

     参照
        definitionList(), listItem()

  5.5.9.  endList()

     目的
        リストを終了する．

     書式
        public void endList ()

     説明
        リストを終了する．このメソッドはリストを閉じる．現在はリストは入
        れ子になってはならない点に注意せよ．

     参照
        definitionList()

  5.5.10.  listItem()

     目的
        リストにエントリーを追加する．

     書式
        public void listItem ()

        public void listItem ( String item )

        public boolean listItem ( String term, String item )

     説明
        リストに項目を加える．最初の書式が用いられると，現在のリスト要素
        に対するテキストは，このメソッドが呼び出されたよりも後，かつ他の
        リストに関するメソッドが呼び出されるよりも前にメッセージに追加さ
        れなければならない． 2番目，3番目の書式の場合には，要素に対する
        テキストはメッセージに追加されないで(あるいは追加した上でさらに)
        メソッドの引き数として指定される． 3番目の書式は定義リスト特有の
        ものであり，項目名とリストのエントリーの定義の両方を与える．

     引き数

        item
           当該リストのエントリーのテキスト

        term
           当該定義リストのの項目名部分のテキスト

     参照
        definitionList(), definitionListTerm(), endList()

  5.5.11.  send()

     目的
        HTML メッセージを送る．

     書式
        public void send ()

     説明
        HTML メッセージを送る．
  5.5.12.  title()

     目的
        文書のタイトルを示すテキストを設定する．

     書式
        public void title ( String title )

     説明
        文書のタイトルを示すテキストを設定する．

     引き数

        title
           メッセージのタイトルを示すテキスト

     参照
        author()

  5.6.  HTML_Test

  このクラスはHTMLクラスの使用例の提示と，Java CGIパッケージが正しく動作
  しているか確認するテストのために用いる．

  5.6.1.  メンバの概略

  ______________________________________________________________________
          main()      //  Program main()
  ______________________________________________________________________

  5.6.2.  参照

  HTML

  5.6.3.  main()

     目的
        main()メソッドを与える

     書式
        public static void main( String argv[] )

     説明
        これは CGI プログラムの基本形であり，HTML文書内で利用可能な名前/
        値の組とその現在の値をリストとして返し，名前/値のそれぞれの組を
        定義リストの要素として表示する．

     引き数

        argv[]
           java.cgiスクリプトによってプログラムに与えられる引き数．現時
           点では未使用である．

  5.7.  Text

  5.7.1.  クラスの書式

  public abstract class Text

  5.7.2.  クラスについての説明

  このクラスはEmail クラスと HTML クラスのスーパークラスである．メッセー
  ジはこのクラスのメソッドによって生成され，各サブクラスのメソッドを使っ
  て完成させたり整形したりする．

  このクラスは``Orbits.text''パッケージに含まれる．

  5.7.3.  メンバの概略

  ______________________________________________________________________
          Text()            //  コンストラクタ
          add()             //  オブジェクトにテキストを追加
          addLineBreak()    //  行句切りを追加
          addParagraph()    //  段落句切りを追加
  ______________________________________________________________________

  5.7.4.  参照

  Email, HTML

  5.7.5.  add()

     目的
        テキスト項目にテキストを追加する．

     書式
        public void add ( char addition )

        public void add ( String addition )

        public void add ( StringBuffer addition )

     説明
        テキスト項目の内容にadditionを追加する．

     引き数

        addition
           テキスト項目に追加するテキスト

     参照
        addLineBreak(), addParagraph()

  5.7.6.  addLineBreak()

     目的
        テキストの現在位置で行を区切る．

     書式
        public void addLineBreak ()

     説明
        テキストの現在位置に行句切りを追加する．

     参照
        add(), addParagraph()

  5.7.7.  addParagraph()

     目的
        新しい段落を開始する．

     書式
        public void add ()

     説明
        文章の現在位置から新しい段落を開始する．

     参照
        add(), addLineBreak()

  6.  将来の予定

  o  Emailクラスへの追加:

     Email( int capacity )
        メッセージにどれだけの領域の割り当てが必要か調べる時に用いる．

     sendTo( String [] address )
        電子メールのメッセージにプライマリの宛先のリストを追加する．

     sendCc( String address )
        電子メールのメッセージにカーボンコピーの宛先を追加する．

     sendCc( String [] address )
        電子メールのメッセージにカーボンコピーの宛先のリストを追加する．
     sendBcc( String address )
        電子メールのメッセージにブラインド・カーボンコピーの宛先を追加す
        る．

     sendBcc( String [] address )
        電子メールのメッセージにブラインド・カーボンコピーの宛先のリスト
        を追加する．

  o  HTMLクラスへの追加:

     HTML( int capacity )
        メッセージにどれだけの領域の割り当てが必要か調べる時に用いる．

     public void unorderedList()
        順序無しリストを開始する

     public void orderedList()
        順序付きリストを開始する

     public void directoryList()
        ディレクトリリストを開始する

     public void menuList()
        メニューリストを開始する

     void anchor( String anchorName )
        アンカーの指定

     void link( String url, String text )
        リンクの指定

     void applet( String url, String altText )
        アプレットのリンク指定

  o  リストの入れ子を含むHTMLを使えるようにする．

  o  HTML リストを正しい順序にさせるためのエラー判定コードの追加．

  o  環境変数データを書き出すファイルの位置を Makefile で設定できるよう
     にする．

  o  GET メソッドによるデータ転送の際に生じる，空である名前/値の組の除去

  o  連続的に変数名を与えるために，CGI に java.util.Enumeration インタ
     フェースを実装することを考慮する．

  o  このパッケージの全てのメソッドを使う，Testクラスの追加．

  o  デバッグのためにインクリメンタルなテストをできるようにするため，
     CGI_Test, Email_Test, HTML_Testはお互いどのように依存しているかを説
     明する．

  o  本パッケージで利用可能な全ての機能をTest がどのようにして使っている
     かについて説明する．

  7.  更新履歴

  7.1.  0.4 から 0.5 での変更点

  o  このリリースが最終版であることを反映させるように文書とコメントを変
     更した．

  7.2.  0.3 から0.4 での変更

  o  最小限の機能を与えるため，HTMLクラスの機能に肉付けをした．

  o  HTML_Test クラス及び javahtmltest.html-dist を作成した．

  o  HTML クラスのメソッドに定義リストの扱いを追加した．

  7.3.  0.2 から0.3 での変更

  o  Text クラスと Email クラスを追加． HTML クラスも追加したが，現時点
     ではスタブのみである．

  o  さまざまなクラスをパッケージにまとめた．中心となるクラス
     はOrbits.net.*であり，補助クラス Text は Orbits.text.Textに含まれ
     る．

  o  CGItest を CGI_Test に変更．

  o  Email_Test クラスを追加した．

  7.4.  0.1 から0.2 での変更

  o  環境変数を Java インタプリタのコマンドラインに詰め込むのをやめて，
     テンポラリファイルに書き込むようにした． CGI クラスと java.cgi を修
     正した．

  o  javacgitest.html 文書を作成，パッケージに含めた．

  o  インストール時に make が書き換えるテキストファイルを作成した．これ
     らは-distで終る名前にしてある．

