<!doctype linuxdoctr system>

<article>

<title>Java CGI HOWTO
<author>by David H. Silber
<tt><htmlurl url="mailto:javacgi-document@orbits.com"
name="javacgi-document@orbits.com"></tt>
<date>v0.5, 1 December 1998
<trans>藤原輝嘉
<tt><htmlurl url="mailto:fujiwara@linux.or.jp"
name="fujiwara@linux.or.jp"></tt>

<abstract>
<!-- This HOWTO document explains how to set up your server to allow CGI programs
written in Java and how to use Java to write CGI programs. -->
この HOWTO 文書は，Javaで書かれた CGI プログラムを WWW サーバ上で実行
できるように設定する方法と，CGI プログラムを書くための Java の使い方を
説明します．

<!-- Although HOWTO documents are targetted towards use with the Linux operating
system, this particular one is not dependant on the particular version of
unix used. -->
一般に HOWTO 文書は Linux を対象として書かれていますが，この文書に限っ
ては UNIX の種類には依存していません．
</abstract>

<toc>



<!-- Introduction -->
<sect>はじめに
<p>
<!-- Because of the way that Java is designed the programmer does not have
easy access to the system's environment variables.
Because of the way that the Java Development Kit (JDK) is set up, 
it is necessary to use multiple tokens to invoke a program,
which does not mesh very well with the standard HTML forms/CGI
manner of operations.
There are ways around these limitations, and I have implemented one of
them.
Read further for details. -->
Java の設計方針のため，プログラマは簡単にはシステムの環境変数へアクセ
スできません．また，Java 開発キット(JDK, Java Development Kit)の設定の
ため，プログラムを起動するには複数のトークンが必要となりますが，これは 
HTML の FORM や CGI の操作と組み合わせて用いるには不便です．これらの制
限を回避する方法はいくつもありますが，筆者はそのうちの一つを実装しまし
た．詳しくは後の章を見てください．

<!-- Since I wrote the previous paragraph in 1996, there have been many
changes in the Java technology.
It is likely that a better solution to running server-side Java programs
is now available &mdash; perhaps you should take a look at servlets. -->
筆者が前の段落を書いた1996年より，Java の技術は大きく変化しています．
サーバ側で Java プログラムを実行するためのより優れた解が現在は利用でき
ます．サーブレット(servlet)を調べてみてください．


<!-- Prior Knowledge -->
<sect1>本文書で前提とする知識
<p>
<!--I am assuming that you have a general knowledge of HTML and CGI concepts
and at least a minimal knowledge of your HTTP server.
You should also know how to program in Java, or a lot of this will not make
sense. -->
筆者は HTML や CGI の概念についての一般的な知識および読者自身が使う HTTP 
サーバについての最小限の知識を持っていることを前提とします．また，読者
が Java のプログラムの書き方を知っていなければ，本文書の大部分は無意味
になってしまうと思います．


<!-- This Document -->
<sect1>本文書について
<p>
<!-- The latest version of this document can be read at
<htmlurl url="http://www.orbits.com/software/Java_CGI.html"
name="http://www.orbits.com/software/Java_CGI.html">. -->
本文書の最新版は
<htmlurl url="http://www.orbits.com/software/Java_CGI.html"
name="http://www.orbits.com/software/Java_CGI.html">
で読むことができます．


<!-- The Package -->
<sect1>プログラム・パッケージについて
<p>
<!-- The latest version of the package described here can be accessed via
anonymous FTP at
<htmlurl url="ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz"
name="ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz">.
The package distribution includes SGML source for this document. -->
本文書で説明するプログラムのパッケージの最新版は
<htmlurl url="ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz"
name="ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz">
から anonymous FTP で入手できます．
パッケージには本文書の SGML ソースも含まれています．

<!-- The package is distributed under the terms of the GNU Library General
Public License.  This document can be distributed under the terms of the
Linux HOWTO copyright notice. -->
パッケージは GNU Library General Public License の条項に従って配布する
ことができます．本文書そのものは Linux HOWTO copyright notice の条項に
従って配布することができます．
(訳注: 日本語訳も Linux HOWTO copyright notice に従って配布することが
できます．)

<!-- If you use this software, please make some reference to
<htmlurl url="http://www.orbits.com/software/Java_CGI.html"
name="http://www.orbits.com/software/Java_CGI.html">, so that others
will be able to find the Java CGI classes. -->
もしこのソフトウェアを使う場合には，他の人もこの Java CGI クラスを見つ
けることができるように
<htmlurl url="http://www.orbits.com/software/Java_CGI.html"
name="http://www.orbits.com/software/Java_CGI.html">
へのハイパーリファレンスを張っていただけると幸いです．


<!-- I have run out of time to maintain and support this package, so this
will probably be its final release.
If anyone out there is sufficiently enamoured of this software that
they wish to take over the maintenace of it, please contact me at
<tt><htmlurl url="mailto:javacgi-document@orbits.com"
name="javacgi-document@orbits.com"></tt>. -->
筆者はこのパッケージのメンテナンスやサポートを行う時間が取れなくなった
ため，これがおそらく最終リリースとなります．このプログラムが気に入って，
メンテナンスを引き継ごうという方がいらっしゃれば筆者(
<tt><htmlurl url="mailto:javacgi-document@orbits.com"
name="javacgi-document@orbits.com"></tt>)にご連絡ください．


<!-- The Mailing List -->
<sect1>メーリングリスト
<label id="mailing-list">
<p>
<!--
I have created a majordomo list to allow people to help each-other work
through their mutual problems in installing and using this software.
Send a message to 
<tt><htmlurl url="mailto:javacgi-request@orbits.com"
name="javacgi-request@orbits.com"></tt>,
containing the word <em>subscribe</em>.
-->
このソフトウェアのインストールや利用における共通の問題を通してお互いの
作業を助け合えるようにするため，筆者は majordomo のメーリングリストを
作りました．
<tt><htmlurl url="mailto:javacgi-request@orbits.com"
name="javacgi-request@orbits.com"></tt> 宛に本文が <em>subscribe</em> 
であるメールを送ってください．

<!-- Setting Up Your Server to Run Java CGI Programs (With Explanations) -->
<sect>Java の CGI プログラムを実行するためのサーバの設定(説明つき)
<label id="install-long">
<p>
<!-- This section will lead you through installing my <em>Java CGI</em> package
with copious explanations so that you know what the effects of your
actions will be.
If you just want to install the programs and don't care about the
whys & wherefores, skip to <ref id="install-short"
name="Setting Up Your Server to Run Java CGI Programs (The Short Form)">. -->
この章では，<em>Java CGI</em>パッケージのインストールについて，ユーザ
の操作がどのような影響を及ぼすかも分かるように，詳しく説明します．
単にインストールすることが目的で，細かい理由はあまり気にならない人は，こ
の章は飛ばして<ref id="install-short"
name="Java の CGI プログラムを実行するためのサーバの設定(簡略版)">
へ進んでください．

<!-- System Requirements -->
<sect1>要求されるシステム性能
<p>
<!-- This software should work on any unix-like web server that has the Java
Development Kit installed.
I am using it on a <em>Debian Linux</em> system running
<em>apache</em> as the HTTP daemon.
If you find that it does not run on your server, please contact the
mailing list.
See <ref id="mailing-list" name="The Mailing List"> for details. -->
このソフトウェアは Java 開発キットがインストールされているほとんど全て
の UNIX 系 OS のウェブサーバ上で動作します．
筆者は <em>Debian Linux</em> パッケージを用いており，HTTP デーモンとし
ては <em>apache</em> を使っています．
もしあなたが使っているサーバ上で動作しなかった場合には，メーリングリス
トで連絡してください．詳しくは
<ref id="mailing-list" name="メーリングリスト">を参照してください．

<!-- Unfortunatly, the Java run-time interpreter seems to be something of a 
memory hog &mdash; you may want to throw another few megabytes of RAM onto
your server if you will be using Java CGI programs a lot. -->
残念ながら Java ランタイムインタプリタはメモリを大量消費するようです．
Java の CGI プログラムをたくさん実行するようならば，サーバ機のメモリを
増設した方が良いかもしれません．


<!-- Java CGI Add-On Software -->
<sect1>Java CGI アドオン・ソフトウェア
<p>
<!-- The software that I wrote to aid in this is called <em>Java CGI</em>.
You can get it from
<htmlurl url="ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz"
name="ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz">.
(The version number may have changed.) -->
Java による CGI プログラム実行を支援するために私が書いたソフトウェアは
<em>Java CGI</em>と言います．
このパッケージは
<htmlurl url="ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz"
name="ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz">
から入手することができます(バージョン番号は変わるかもしれません)．


<!-- Unpacking the Source -->
<sect1>ソースの展開
<p>
<!-- Find a convenient directory to unpack this package into.
(If you don't already have a standard place to put packages,
I suggest that you use <tt>/usr/local/src</tt>.)
Unpack the distribution with this command: -->
まず，本パッケージを展開する適当なディレクトリを決めます．
(各種ソースを展開する標準のディレクトリをまだ決めていない場合には，
<tt>/usr/local/src</tt>にするのが良いでしょう．)
次に以下のコマンドでパッケージを展開します．
<verb>
gzip -dc java_cgi-0.5.tgz | tar -xvf -
</verb>
<!-- This will create a directory called <tt>java_cgi-0.5</tt>.
In there you will find the files referenced in the rest of this document.
(If the version number has changed, use the instructions from within
that distribution from this point on.) -->
この操作により <tt>java_cgi-0.5</tt> というディレクトリができます．
このディレクトリ内には，本文書でこれ以降に出てくるファイルがあるはずで
す．(もしバージョン番号が変わっている場合には，これ以降はパッケージに
含まれる文書の指示に従ってください．)



<!-- Decide On Your Local Path Policies -->
<sect1>ローカルパスについての方針の決定
<label id="make-programs">
<p>
<!-- You need to decide where you want your Java CGI
programs to live.  Generally, you will want to put them in a directory in
parallel with your <tt>cgi-bin</tt> directory.  My <em>apache</em>
server came configured to use <tt>/var/www/cgi-bin</tt> as the
<tt>cgi-bin</tt> directory, so I use <tt>/var/www/javacgi</tt> as the
directory to put Java CGI programs in.  You probably do not want to
put your Java CGI programs into one of the existing
<tt>CLASSPATH</tt> directories.
Edit the Makefile to reflect your system configuration.
Make sure that you are logged in as the root user and run <tt>make install</tt>.
This will compile the Java programs, modify the <tt>java.cgi</tt> script
to fit in with your system and install the programs in the appropriate
places.
If you want the HTML version of this documentation and an HTML test document
in addition, run <tt>make all</tt> instead.
-->
ここでは，Java CGI パッケージを配置する場所を決める必要があります．
これは一般的には<tt>cgi-bin</tt>があるディレクトリにします．私の
<em>apache</em>サーバは<tt>cgi-bin</tt>ディレクトリとして
<tt>/var/www/cgi-bin</tt>を用いるよう設定しているので，Java CGI のプロ
グラムを置く場所として<tt>/var/www/javacgi</tt>を使っています．既に
<tt>CLASSPATH</tt>に含まれているディレクトリに Java CGI のプログラムを
置くことは好まれないと思います．
場所を決めたら，システム設定を反映させるために Makefile を編集します．
次に root でログインして，<tt>make install</tt>を実行します．
これによって，Java のプログラムがコンパイルされ，<tt>java.cgi</tt>スク
リプトがシステム設定に応じて修正され，各プログラムが適切な場所にインス
トールされます．
これらに加えて本文書の HTML 版やテスト用の HTML 文書が必要であれば，
<tt>make install</tt>の代わりに<tt>make all</tt>を実行します．


<!-- Testing your installation. -->
<sect1>インストールのテスト
<label id="install-test">
<p>
<!-- Installed from the distribution are HTML documents called
<tt>javacgitest.html</tt>, <tt>javaemailtest.html</tt> and
<tt>javahtmltest.html</tt>.
If you installed <tt>all</tt> in the previous section, it will be in the
directory you specified for WEBDIR in the <tt>Makefile</tt>.
If you didn't, you can run <tt>make test</tt> to build them from
<tt>javacgitest.html-dist</tt>, <tt>javaemailtest.html-dist</tt> and
<tt>javahtmltest.html-dist</tt>. -->
パッケージによってインストールが行われる HTML 文書は，
<tt>javacgitest.html</tt>, <tt>javaemailtest.html</tt> 及び
<tt>javahtmltest.html</tt>です．
前節で<tt>make all</tt>を実行した場合には，これらの文書は
<tt>Makefile</tt>中の WEBDIR で指定したディレクトリにあります．
そうでない場合には，<tt>javacgitest.html-dist</tt>,
<tt>javaemailtest.html-dist</tt>，<tt>javahtmltest.html-dist</tt>
から各文書を作るために<tt>make test</tt>を実行してください．


<!-- When you are sure that your installation is working correctly, you may
wish to remove <tt>CGI_Test.class</tt>, <tt>Email_Test.class</tt> and
<tt>HTML_Test.class</tt> from
your JAVACGI directory and <tt>javacgitest.html</tt>,
<tt>javaemailtest.html</tt> and <tt>javahtmltest.html</tt>
from your WEBDIR directory as they show the
user information that is normally only available to the server. -->
本来はクライアント側では得られないはずの各種情報が表示されていれ
ば，インストールが正常にできています．これを確かめた後は，
<tt>CGI_Test.class</tt>, <tt>Email_Test.class</tt>,
<tt>HTML_Test.class</tt>を JAVACGI ディレクトリから，
<tt>javacgitest.html</tt>,
<tt>javaemailtest.html</tt>, <tt>javahtmltest.html</tt> は WEBDIR ディ
レクトリから削除しても構いません．


<!-- Setting Up Your Server to Run Java CGI Programs (The Short Form) -->
<sect>Java の CGI プログラムを実行するためのサーバの設定(簡略版)
<label id="install-short">
<p>
<itemize>
<item>
<!-- Get the <em>Java CGI</em> package from
<htmlurl url="ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz"
name="ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz">.
(The version number may have changed.) -->
<em>Java CGI</em> パッケージを
<htmlurl url="ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz"
name="ftp://ftp.orbits.com/pub/software/java_cgi-0.5.tgz">
から入手します．
(バージョン番号は変わるかもしれません．)
</item>
<item>
<!-- Unpack the distribution with this command: -->
パッケージを次のコマンドで展開します:
<verb>
gzip -dc java_cgi-0.5.tgz | tar -xvf -
</verb>
<!-- (If the version number has changed, use the instructions from within
that distribution from this point on.) -->
(もしバージョン番号が変わっている場合には，これ以降はパッケージに含ま
れる文書の指示に従ってください．)
</item>
<item>
<!-- Edit the <tt>Makefile</tt> you will find in the newly created directory
<tt>java_cgi-0.5</tt> as appropriate to your system. -->
展開によって新しくできたディレクトリ内にある<tt>Makefile</tt>を編集し，
<tt>java_cgi-0.5</tt>の部分をあなたが使っているシステムに合わせて変更
します．
</item>
<item>
<!-- As root, run <tt>make install</tt>.
This will compile the Java programs, apply your system-specific information
and install the various files.
If you want the HTML version of this documentation and an HTML test document,
run <tt>make all</tt> instead. -->
root になって<tt>make install</tt>を実行します．
これにより Java プログラムのコンパイル，システム特有の情報の適用，各ファ
イルのインストールが行われます．
本文書の HTML 版とテスト用の HTML 文書が必要な場合には，
<tt>make install</tt>の代わりに<tt>make all</tt>を実行します．
</item>
<item>
<!-- You should be ready to go. -->
以上で準備完了です．
</item>
</itemize>



<sect>Java CGI プログラムの実行
<!-- Executing a Java CGI Program -->
<p>



<sect1>CGI モデルの下で Java を実行する際の障害
<!-- Obstacles to Running Java Programs Under the CGI Model -->
<p>
<!-- There are two main problems in running a Java program from a web server: -->
WWW サーバから Java のプログラムを実行する際には 2つの大きな問題があり
ます:

<sect2>Java のプログラムは普通の実行ファイルのようには実行できない
<!-- You can't run Java programs like ordinary executables. -->
<p>
<!-- You need to run the Java run-time interpreter and provide the initial
class (program to run) on the command-line.
With an HTML form, there is no provision for sending a command-line
to the web server. -->
Java のプログラムを実行するためには，コマンドライン上でJava ランタイム・
インタプリタを実行し，これに初期クラス(実行するプログラム)を与えなけれ
ばなりません．
ところが，HTML の FORM を使う場合，WWW サーバにコマンドラインを教える
ことはできません．


<sect2>Java は環境変数にアクセスする一般的な方法を持たない
<!-- Java does not have general access to the environment. -->
<p>
<!-- Every environment variable that will be needed by the Java program 
must be explicitly passed in.
There is no method similar to the <bf>C</bf> <tt>getenv()</tt> function. -->
Java のプログラムが必要とする環境変数は，明示的に渡してやらなければな
りません．
<bf>C</bf>言語の<tt>getenv()</tt>関数のような方法はありません．


<sect1>Java CGI プログラムの実行による問題の解決
<!-- Overcoming Problems in Running Java CGI Programs -->
<p>
<!-- To deal with these obstacles, I wrote a shell CGI program that provides
the information needed by the Java interpreter. -->
これらの問題を解決するため，Java インタプリタが必要とする情報を与える
ための CGI シェルスクリプトを作りました．



<sect2>java.cgi スクリプト
<!-- The java.cgi script. -->
<p>
<!-- This shell script manages the interaction between the HTTP daemon and the
Java CGI program that you wish to use.
It extracts the name of the program that you want to run from the
server-provided data.
It collects all of the environment data into a temporary file.
Then, it runs the Java run-time interpreter with the name of the file of
environment information and the program name added to the command-line. -->
このシェルスクリプトは HTTP デーモンと 実行する Java CGI プログラムの
やりとりを管理します．
このスクリプトは，まず実行するプログラムの名前をサーバが与えたデータか
ら展開します．
次に全ての環境変数をテンポラリファイルに集めます．
それから，環境変数についての情報ファイルの名前とプログラムの名前をコマ
ンドラインに指定してJava インタプリタを実行します．

<!-- The <tt>java.cgi</tt> script was configured and installed in
<ref id="make-programs" name="Decide On Your Local Path Policies">. -->
<ref id="make-programs" name="ローカルパスについての方針の決定">
の節で設定およびインストールされています．


<sect2>HTML の FORM からの java.cgi の起動
<!-- Invoking java.cgi from an HTML form. -->
<p>
<!-- My forms that use Java CGI programs specify a form action as follows: -->
Java CGI を使う FORM では以下のように FORM のアクションを指定します:
<verb>
<form action="/cgi-bin/java.cgi/CGI_Test" method="POST">
</verb>
<!-- Where <tt>/cgi-bin/</tt> is your local CGI binary directory,
<tt>java.cgi</tt> is the Java front-end that allows us to run Java programs
over the web
and <tt>CGI_Test</tt> is an example of the name of the Java program to run. -->
ここで，<tt>/cgi-bin/</tt>はローカルの CGI ディレクトリであり，
<tt>java.cgi</tt>はWWW上での Java の実行を可能にする Java フロントエンド
です．そして，<tt>CGI_Test</tt>は実行する Java プログラムの名前の例です．

<sect>Java CGI クラスの使用
<!-- Using the Java CGI Classes. -->
<p>
<!-- There are currently three main classes supported &mdash;
<ref id="cgi-class" name=CGI>,
<ref id="email-class" name=Email> and
<ref id="html-class" name=HTML>.
I am considering adding classes to deal with MIME-formatted input and
output &mdash; MIMEin & MIMEout, respectively. -->
現在は
<ref id="cgi-class" name=CGI>,
<ref id="email-class" name=Email>,
<ref id="html-class" name=HTML>
の3つの主要クラスがサポートされています．
さらに MIME 形式の入出力を扱うクラス(MIMEin と MIMEout)の追加を考えて
います．

<p>
<!-- There are also a few support and test classes.
<ref id="cgi-test-class" name="CGI_Test">,
<ref id="email-test-class" name="Email_Test"> and
<ref id="email-test-class" name="HTML_Test"> are intended to be used to
test your installation.
They can also be used as a starting-point for your own Java programs
which use this class library.
The <ref id="text-class" name=Text> class is the superclass for both the
<tt>Email</tt> and the <tt>HTML</tt> classes.   -->
サポートとテストのためのクラスもいくつかあります．
<ref id="cgi-test-class" name="CGI_Test">,
<ref id="email-test-class" name="Email_Test">,
<ref id="email-test-class" name="HTML_Test">
はインストールが正常に行われているかどうかテストするために用います．
これらのクラスはこのクラスライブラリを用いる Java プログラムを作るため
の出発点としても利用できます．
<ref id="text-class" name=Text> クラスは<tt>Email</tt> クラスと 
<tt>HTML</tt> クラス両方のスーパークラスです．


<sect1>CGI<label id="cgi-class">
<p>



<sect2>クラスの文法
<!-- Class Syntax -->
<p>
<tt>public class CGI</tt>



<sect2>クラスについての説明
<!-- Class Description -->
<p>
<!-- The CGI class holds the ``CGI Information'' &mdash; Environment variables
set by the web server and the name/value sent from a
form when its  <bf>submit</bf> action is selected.
All information is stored in a <tt>Properties</tt> class object. -->
CGI クラスは「CGI 情報」つまり，WWW サーバによって設定される環境変数と
<bf>submit</bf>アクションが選択された時にフォームから送られる名前/値の
組を保持します．

<!-- This class is in the ``Orbits.net'' package. -->
このクラスは``Orbits.net''パッケージに含まれます．




<sect2>メンバの概略
<!-- Member Summary -->
<p>
<!--	CGI()         //  Constructor.
	getNames()    //  Get the list of names.
	getValue()    //  Get form value by specifying name. -->
<code>
	CGI()         //  コンストラクタ
	getNames()    //  名前のリストの取得
	getValue()    //  指定された名前に対応する値の取得
</code>



<sect2>参照
<!-- See Also -->
<p>
<!-- <tt>CGI_Test</tt>. -->
<tt>CGI_Test</tt>


<sect2>CGI()
<p>
<descrip>
<!-- <tag/Purpose/ Constructs an object which contains the available CGI data.
<tag/Syntax/ <tt>public CGI()</tt>
<tag/Description/ When a CGI object is constructed, all available CGI
information is sucked-up into storage local to the new object. -->
<tag/目的/ 利用可能な CGI データを含むオブジェクトの生成
<tag/書式/ <tt>public CGI()</tt>
<tag/説明/ CGI オブジェクトが生成された時，利用可能な CGI 情報は新しい
オブジェクトの局所メモリ領域に全て与えられる．
</descrip>



<sect2>getNames()
<p>
<descrip>
<!-- <tag/Purpose/ List the names which are defined to have corresponding values.
<tag/Syntax/ <tt>public Enumeration getKeys ()</tt>
<tag/Description/ Provides the full list of names for which coresponding
values are defined.
<tag/Returns/ An <tt>Enumeration</tt> of all the names defined. -->
<tag/目的/ 値と対になる名前を列として与える
<tag/書式/ <tt>public Enumeration getNames ()</tt>
<tag/説明/ 対応する値が定義されている名前を全て含むリストを与える．
<tag/返り値/ 定義された名前を全て含む <tt>Enumeration</tt>．
</descrip>



<sect2>getValue()
<p>
<descrip>
<!-- <tag/Purpose/ Retrieves the <bf>value</bf> associated with the <bf>name</bf>
specified.
<tag/Syntax/ <tt>public String getValue ( String name )</tt>
<tag/Description/ This method provides the corespondence between the
<tt>names</tt> and <tt>values</tt> sent from an HTML form.
<tag>Parameter
 <descrip>
 <tag/name/ The key by which values are selected.
 </descrip>
<tag/Returns/ A <tt>String</tt> containing the value. -->
<tag/目的/ <bf>名前</bf>に対応する<bf>値</bf>を得る．
<tag/書式/ <tt>public String getValue ( String name )</tt>
<tag/説明/ このメソッドは HTML の FORM より送られる<tt>名前</tt> と 
<tt>値</tt> の対応を与える．
<tag>引き数
 <descrip>
  <tag/name/ 値を選択するためのキー．
  </descrip>
<tag/戻り値/ 指定した名前に対応する値を示す <tt>String</tt>．
</descrip>



<sect1>CGI_Test<label id="cgi-test-class">
<p>
<!-- This class provides both an example of how to use the <tt>CGI</tt> class
and a test program which can be used to confirm that the <em>Java CGI</em>
package is functioning correctly. -->
このクラスは<tt>CGI</tt>クラスの使用例の提示と，<em>Java CGI</em>パッ
ケージが正しく動作しているか確認するテストのために用いる．



<sect2>メンバの概略
<!-- Member Summary -->
<p>
<!-- 	main()      //  Program main(). -->
<code>
	main()      //  Program main()
</code>



<sect2>参照
<!-- See Also -->
<p>
<!-- <tt>CGI</tt>. -->
<tt>CGI</tt>


<sect2>main()
<p>
<descrip>
<!-- <tag/Purpose/ Provide a <tt>main()</tt> method.
<tag/Syntax/ <tt>public static void main( String argv[] )</tt>
<tag/Description/ This is the entry point for a CGI program which does
nothing but return a list of the available name/value pairs and their
current values.
<tag>Parameter 
 <descrip>
 <tag/argv&lsqb;&rsqb;/ Arguments passed to the program by
 the <tt>java.cgi</tt> script.
 Currently unused.
 </descrip> -->
<tag/目的/ <tt>main()</tt> メソッドを与える．
<tag/書式/ <tt>public static void main( String argv[] )</tt>
<tag/説明/ これは CGI プログラムの基本形であり，動作そのものは行わない
が，利用可能な名前/値の組とその現在の値をリストとして返す．
<tag>引き数
 <descrip>
 <tag/argv&lsqb;&rsqb;/ <tt>java.cgi</tt> スクリプトによってプログラム
 に与えられる引き数．
  現時点では未使用である．
 </descrip>
</descrip>



<sect1>Email<label id="email-class">
<p>



<sect2>クラスの文法
<!-- Class Syntax -->
<p>
<tt>public class Email extends Text</tt>



<sect2>Class Description
<p>
<!-- Messages are built up with the <tt>Text</tt> class <tt>add*()</tt> methods
and the e-mail-specific methods added by this class.
When complete, the message is sent to its destination. -->
<tt>Text</tt> クラスの <tt>add*()</tt> メソッドとこのクラスが追加する
電子メール専用のメソッドによってメッセージを構成する．

<!-- This class is in the ``Orbits.net'' package. -->
このクラスは ``Orbits.net'' パッケージに含まれる．



<sect2>メンバの概略
<!-- Member Summary -->
<p>
<!--	Email()      //  Constructor.
	send()       //  Send the e-mail message.
	sendTo()     //  Add a destination for message.
	subject()    //  Set the Subject: for message. -->
<code>
	Email()      //  コンストラクタ
	send()       //  電子メールを送信する
	sendTo()     //  メッセージにあて先を付ける
	subject()    //  メッセージのサブジェクトを設定する
</code>



<sect2>参照
<!-- See Also -->
<p>
<!-- <tt>Email_Test, Text</tt>. -->
<tt>Email_Test, Text</tt>


<sect2>Email()
<p>
<descrip>
<!-- <tag/Purpose/ Constructs an object which will contain an email message.
<tag/Syntax/ <tt>public Email()</tt>
<tag/Description/ Sets up an empty message to be completed by the Email methods.
<tag/See Also/ <tt>Text</tt>. -->
<tag/目的/ 電子メールのメッセージを含むオブジェクトを生成する．
<tag/書式/ <tt>public Email()</tt>
<tag/説明/ 空のメッセージを生成する．これは Email クラスの各メソッドに
よって完成されたメッセージとなる．
<tag/参照/ <tt>Text</tt>
</descrip>



<sect2>send()
<p>
<descrip>
<!-- <tag/Purpose/ Send the e-mail message.
<tag/Syntax/ <tt>public void send ()</tt>
<tag/Description/ This formats and sends the message.
If no destination address has been set, there is no action taken. -->
<tag/目的/ 電子メールのメッセージを送信する．
<tag/書式/ <tt>public void send ()</tt>
<tag/説明/ このメソッドはメッセージの書式を整えて送信する．
宛先が指定されていない場合には何も行わない．
</descrip>



<sect2>sendTo()
<p>
<descrip>
<!-- <tag/Purpose/ Add a destination for this message.
<tag/Syntax/ <tt>public String sendTo ( String address )</tt>
<tag/Description/ Add <tt>address</tt> to the list of destinations for
this method.
There is no set limit to the number of destinations an e-mail message may have.
I'm sure that if you build up the list large enough, you can 
exceed the size of the parameter list that the <em>Mail Transport
Agent</em> can accept or use up your memory.
<tag>Parameter/
 <descrip>
 <tag/address/ A destination to send this message to.
 </descrip> -->
<tag/目的/ メッセージに宛先を追加する．
<tag/書式/ <tt>public String sendTo ( String address )</tt>
<tag/説明/ <tt>address</tt> にこのメソッドに対する宛先のリストを追加す
る．
メソッド自体は電子メールの宛先の数は制限しない．
しかしリストが大きすぎる場合には，<em>メール配送システム</em>の制限を
越えたり，計算機のメモリを消費し尽くす可能性がある．
<tag/引き数/
 <descrip>
 <tag/address/ メッセージを送る宛先
 </descrip>
</descrip>



<sect2>subject()
<p>
<descrip>
<!-- <tag/Purpose/ Set the subject for this message.
<tag/Syntax/ <tt>public void subject ( String subject )</tt>
<tag/Description/ This method sets the text for the e-mail's <tt>Subject:</tt>
line.
If called more than once, the latest subject set is the one that is used.
<tag/Parameter/
 <descrip>
 <tag/subject/ The text of this message's <tt>Subject:</tt> line.
 </descrip> -->
<tag/目的/ メッセージのサブジェクトを設定する．
<tag/書式/ <tt>public void subject ( String subject )</tt>
<tag/説明/ このメソッドは電子メールの <tt>Subject:</tt> 行のテキストを
設定する．
複数回呼び出された場合には，最も最後のものがサブジェクトとして用いられ
る．
<tag/引き数/
 <descrip>
 <tag/subject/ メッセージの<tt>Subject:</tt> 行のテキスト
 </descrip>
</descrip>



<sect1>Email_Test<label id="email-test-class">
<p>
<!-- This class provides both an example of how to use the <tt>Email</tt> class
and a test program which can be used to confirm that the <em>Java CGI</em>
package is functioning correctly. -->
このクラスは<tt>Email</tt>クラスの使用例の提示と，<em>Java CGI</em>パッ
ケージが正しく動作しているか確認するテストのために用いる．


<sect2>メンバの概略
<!-- Member Summary -->
<p>
<!--	main()      //  Program main(). -->
<code>
	main()      //  Program main()
</code>



<sect2>参照
<!-- See Also -->
<p>
<!-- <tt>Email</tt>. -->
<tt>Email</tt>


<sect2>main()
<p>
<descrip>
<!-- <tag/Purpose/ Provide a <tt>main()</tt> method.
<tag/Syntax/ <tt>public static void main( String argv[] )</tt>
<tag/Description/ This is the entry point for a CGI program which returns
a list of the available name/value pairs and their current values.
It will also send this list to the address specified in the <tt>Email</tt>
variable.
<tag>Parameter 
 <descrip>
 <tag/argv&lsqb;&rsqb;/ Arguments passed to the program by
 the <tt>java.cgi</tt> script.
 Currently unused.
 </descrip> -->
<tag/目的/ <tt>main()</tt> メソッドを与える．
<tag/書式/ <tt>public static void main( String argv[] )</tt>
<tag/説明/ これは CGI プログラムの基本形であり，利用可能な名前/値の組とその
現在の値をリストとして返す．
また，<tt>Email</tt>変数で指定したアドレスへリストの内容を送信する．
<tag>パラメータ
 <descrip>
 <tag/argv&lsqb;&rsqb;/ <tt>java.cgi</tt>スクリプトがプログラムに与え
 る引き数．
 現時点では未使用である．
 </descrip>
</descrip>



<sect1>HTML<label id="html-class">
<p>



<sect2>クラスの書式
<!-- Class Syntax -->
<p>
<tt>public class HTML extends Text</tt>



<sect2>クラスについての説明
<!-- Class Description -->
<p>
<!-- Messages are built up with the <tt>Text</tt> class <tt>add*()</tt> methods
and the HTML-specific methods added by this class.
When complete, the message is sent to its destination. -->
<tt>Text</tt>クラスの<tt>add*()</tt>メソッドとこのクラスによって追加す
る HTML 専用のメソッドによってメッセージを作成する．
完成したメッセージは指定された場所に送られる．

<!-- Currently, there is no error checking to confirm that the list-building
methods are being used in a correct order, so the  programmer must take
pains not to violate HTML syntax. -->
現時点ではリスト生成メソッドが正しい順番で行われたことを確認するエラー
チェックは実行していない．従って，HTML 文法違反とならないようにするの
はプログラマの責任である．

<!-- This class is in the ``Orbits.net'' package. -->
このクラスは``Orbits.net''パッケージに含まれる．


<sect2>メンバ概略
<!-- Member Summary -->
<p>
<!--	HTML()                  //  Constructor.
	author()                //  Set the name of the document author.
	definitionList()        //  Start a definition list.
	definitionListTerm()    //  Add a term to a definition list.
	endList()               //  End a list.
	listItem()              //  Add an entry to a list.
	send()                  //  Send the HTML message.
	title()                 //  Set the text for the document title. -->
<code>
	HTML()                  //  コンストラクタ
	author()                //  文書の作者の名前を設定
	definitionList()        //  定義リスト開始
	definitionListTerm()    //  定義リストに項目を追加
	endList()               //  リスト終了
	listItem()              //  リストにエントリを追加
	send()                  //  HTMLメッセージを送る
	title()                 //  文書のタイトルを設定
</code>



<sect2>参照
<!-- See Also -->
<p>
<!-- <tt>HTML_Test, Text</tt>. -->
<tt>HTML_Test, Text</tt>


<sect2>HTML()
<p>
<descrip>
<!-- <tag/Purpose/ Constructs an object which will contain an HTML message.
<tag/Syntax/ <tt>public HTML()</tt>
<tag/Description/ Sets up an empty message to be completed by the HTML methods.
<tag/See Also/ <tt>Text</tt>. -->
<tag/目的/ HTMLメッセージを持つオブジェクトを生成する
<tag/書式/ <tt>public HTML()</tt>
<tag/説明/ 空のメッセージを生成する．
メッセージはHTML クラスの各メソッドを用いて完成させる．
<tag/参照/ <tt>Text</tt>
</descrip>



<sect2>author()
<p>
<descrip>
<!-- <tag/Purpose/ Set the name of the document author.
<tag/Syntax/ <tt>public void author ( String author )</tt>
<tag/Description/ Set the name of the document author to <tt>author</tt>.
<tag>Parameter/
 <descrip>
 <tag/author/ The text to use as the author of this message.
 </descrip>
<tag/See Also/ <tt>title()</tt>. -->
<tag/目的/ 文書の作者の名前を設定する．
<tag/書式/ <tt>public void author ( String author )</tt>
<tag/説明/ <tt>author</tt>に文書の作者の名前を設定する．
<tag/引き数/
 <descrip>
 <tag/author/ メッセージの作者として用いられるテキスト．
 </descrip>
<tag/参照/ <tt>title()</tt>
</descrip>



<sect2>definitionList()
<p>
<descrip>
<!-- <tag/Purpose/ Start a definition list.
<tag/Syntax/ <tt>public void definitionList ()</tt>
<tag/Description/ Start a definition list.
A <em>definition list</em> is a list specialized so that each entry in
the list is a <em>term</em> followed by the definition <em>text</em>
for that term.
The start of a definition list should be followed by the creation of
(at least) one term/text pair and a call to the <tt>endList()</tt> method.
<em>Note that, currently, lists cannot be nested.</em>
<tag/See Also/ <tt>definitionListTerm()</tt>, <tt>endList()</tt>,
<tt>listItem()</tt>. -->
<tag/目的/ 定義リストを開始する．
<tag/書式/ <tt>public void definitionList ()</tt>
<tag/説明/ 定義リストを開始する．
<em>定義リスト</em>は特別なリストであり，各エントリーが<em>項目名</em>
とそれに続く定義<em>テキスト</em>からなるリストである．
定義リストの開始の後には，(最低)1つの項目名/テキストの組の生成および
<tt>endList</tt>メソッドの呼び出しを行わなければならない．
<em>現在はリストを入れ子にしてはならない点に注意せよ．</em>
<tag/参照/ <tt>definitionListTerm()</tt>, <tt>endList()</tt>,
<tt>listItem()</tt>
</descrip>



<sect2>definitionListTerm()
<p>
<descrip>
<!-- <tag/Purpose/ Add a term to a definition list.
<tag/Syntax/ <tt>public void definitionListTerm ()</tt>
<tag/Description/ Add a term to a definition list.
The text for the term part of the current list entry should be appended
to the message after this method is called and before a corresponding
<tt>listItem</tt> method is called.
<tag/See Also/ <tt>definitionList()</tt>, <tt>listItem()</tt>. -->
<tag/目的/ 定義リストに項目を追加する．
<tag/書式/ <tt>public void definitionListTerm ()</tt>
<tag/説明/ 定義リストに項目を追加する．
リストの現在のエントリーの項目名に対するテキストは，このメソッドの呼び
出しよりも後，かつ対応する<tt>listItem</tt>メソッドの呼び出しの前に追
加しなければならない．
<tag/参照/ <tt>definitionList()</tt>, <tt>listItem()</tt>
</descrip>



<sect2>endList()
<p>
<descrip>
<!-- <tag/Purpose/ End a list.
<tag/Syntax/ <tt>public void endList ()</tt>
<tag/Description/ End a list.
This method closes out a list.
<em>Note that, currently, lists cannot be nested.</em>
<tag/See Also/ <tt>definitionList()</tt>. -->
<tag/目的/ リストを終了する．
<tag/書式/ <tt>public void endList ()</tt>
<tag/説明/ リストを終了する．
このメソッドはリストを閉じる．
<em>現在はリストは入れ子になってはならない点に注意せよ．</em>
<tag/参照/ <tt>definitionList()</tt>
</descrip>



<sect2>listItem()
<p>
<descrip>
<!-- <tag/Purpose/ Add an entry to a list.
<tag/Syntax/ <tt>public void listItem ()</tt>
<tag// <tt>public void listItem ( String item )</tt>
<tag// <tt>public boolean listItem ( String term, String item )</tt>
<tag/Description/ Add an entry to a list.
If the first form is used, the text for the current list item should be
appended to the message after this method is called and before any other
list methods are called.
In the second and third forms, the <tt>item</tt> text is specified as a
parameter to the method instead of (or in addition to) being appended to
the message.
The third form is specific to definition lists and provides both the
term and the definition of the list entry.
<tag/Parameters/
 <descrip>
 <tag/item/ The text of this list entry.
 <tag/term/ The text of this definition list entry's term part.
 </descrip>
<tag/See Also/ <tt>definitionList()</tt>, <tt>definitionListTerm()</tt>,
<tt>endList()</tt>. -->
<tag/目的/ リストにエントリーを追加する．
<tag/書式/ <tt>public void listItem ()</tt>
<tag// <tt>public void listItem ( String item )</tt>
<tag// <tt>public boolean listItem ( String term, String item )</tt>
<tag/説明/ リストに項目を加える．
最初の書式が用いられると，現在のリスト要素に対するテキストは，このメ
ソッドが呼び出されたよりも後，かつ他のリストに関するメソッドが呼び出さ
れるよりも前にメッセージに追加されなければならない．
2番目，3番目の書式の場合には，<tt>要素</tt>に対するテキストはメッセージ
に追加されないで(あるいは追加した上でさらに)メソッドの引き数として指定さ
れる．
3番目の書式は定義リスト特有のものであり，項目名とリストのエントリーの
定義の両方を与える．
<tag/引き数/
 <descrip>
 <tag/item/ 当該リストのエントリーのテキスト
 <tag/term/ 当該定義リストのの項目名部分のテキスト
 </descrip>
<tag/参照/ <tt>definitionList()</tt>, <tt>definitionListTerm()</tt>,
<tt>endList()</tt>
</descrip>



<sect2>send()
<p>
<descrip>
<!-- <tag/Purpose/ Send the HTML message.
<tag/Syntax/ <tt>public void send ()</tt>
<tag/Description/ Send the HTML message. -->
<tag/目的/ HTML メッセージを送る．
<tag/書式/ <tt>public void send ()</tt>
<tag/説明/ HTML メッセージを送る．
</descrip>



<sect2>title()
<p>
<descrip>
<!-- <tag/Purpose/ Set the text for the document title.
<tag/Syntax/ <tt>public void title ( String title )</tt>
<tag/Description/ Set the text for the document title.
<tag/Parameter/
 <descrip>
 <tag/title/ The text of this message's title.
 </descrip>
<tag/See Also/ <tt>author()</tt>. -->
<tag/目的/ 文書のタイトルを示すテキストを設定する．
<tag/書式/ <tt>public void title ( String title )</tt>
<tag/説明/ 文書のタイトルを示すテキストを設定する．
<tag/引き数/
 <descrip>
 <tag/title/ メッセージのタイトルを示すテキスト
 </descrip>
<tag/参照/ <tt>author()</tt>
</descrip>



<sect1>HTML_Test<label id="html-test-class">
<p>
<!-- This class provides both an example of how to use the <tt>HTML</tt> class
and a test program which can be used to confirm that the <em>Java CGI</em>
package is functioning correctly. -->
このクラスは<tt>HTML</tt>クラスの使用例の提示と，<em>Java CGI</em>パッ
ケージが正しく動作しているか確認するテストのために用いる．


<sect2>メンバの概略
<!-- Member Summary -->
<p>
<!--	main()      //  Program main(). -->
<code>
	main()      //  Program main()
</code>



<sect2>参照
<!-- See Also -->
<p>
<!-- <tt>HTML</tt>. -->
<tt>HTML</tt>



<sect2>main()
<p>
<descrip>
<!-- <tag/Purpose/ Provide a <tt>main()</tt> method.
<tag/Syntax/ <tt>public static void main( String argv[] )</tt>
<tag/Description/ This is the entry point for a CGI program which returns
a list of the available name/value pairs in an HTML document, with
each name/value pair displayed in a definition list element.
<tag>Parameter 
 <descrip>
 <tag/argv&lsqb;&rsqb;/ Arguments passed to the program by
 the <tt>java.cgi</tt> script.
 Currently unused.
 </descrip> -->
<tag/目的/ <tt>main()</tt>メソッドを与える
<tag/書式/ <tt>public static void main( String argv[] )</tt>
<tag/説明/ これは CGI プログラムの基本形であり，HTML文書内で利用可能な
名前/値の組とその現在の値をリストとして返し，名前/値のそれぞれの組を定
義リストの要素として表示する．
<tag>引き数
 <descrip>
  <tag/argv&lsqb;&rsqb;/ <tt>java.cgi</tt>スクリプトによってプログラム
  に与えられる引き数．
 現時点では未使用である．
 </descrip>
</descrip>



<sect1>Text<label id="text-class">
<p>



<sect2>クラスの書式
<!-- Class Syntax -->
<p>
<tt>public abstract class Text</tt>



<sect2>クラスについての説明
<!-- Class Description -->
<p>
<!-- This class is the superclass of the <tt>Email</tt> and <tt>HTML</tt>
classes.
Messages are built up with the methods in this class and completed and
formatted with the methods in subclasses.  -->
このクラスは<tt>Email</tt> クラスと <tt>HTML</tt> クラスのスーパークラ
スである．
メッセージはこのクラスのメソッドによって生成され，各サブクラスのメソッ
ドを使って完成させたり整形したりする．

<!-- This class is in the ``Orbits.text'' package. -->
このクラスは``Orbits.text''パッケージに含まれる．



<sect2>メンバの概略
<!-- Member Summary -->
<p>
<!--	Text()            //  Constructor.
	add()             //  Add text to this object.
	addLineBreak()    //  Add a line break.
	addParagraph()    //  Add a paragraph break. -->
<code>
	Text()            //  コンストラクタ
	add()             //  オブジェクトにテキストを追加
	addLineBreak()    //  行句切りを追加
	addParagraph()    //  段落句切りを追加
</code>



<sect2>参照
<!-- See Also -->
<p>
<!-- <tt>Email</tt>, <tt>HTML</tt>. -->
<tt>Email</tt>, <tt>HTML</tt>



<sect2>add()
<p>
<descrip>
<!-- <tag/Purpose/ Add text to this item.
<tag/Syntax/ <tt>public void add ( char addition )</tt>
<tag// <tt>public void add ( String addition )</tt>
<tag// <tt>public void add ( StringBuffer addition )</tt>
<tag/Description/ Add <tt>addition</tt> to the contents of this text item.
<tag/Parameter/
 <descrip>
 <tag/addition/ Text to be added to the text item.
 </descrip>
<tag/See Also/ <tt>addLineBreak()</tt>, <tt>addParagraph()</tt>. -->
<tag/目的/ テキスト項目にテキストを追加する．
<tag/書式/ <tt>public void add ( char addition )</tt>
<tag// <tt>public void add ( String addition )</tt>
<tag// <tt>public void add ( StringBuffer addition )</tt>
<tag/説明/ テキスト項目の内容に<tt>addition</tt>を追加する．
<tag/引き数/
 <descrip>
 <tag/addition/ テキスト項目に追加するテキスト
 </descrip>
<tag/参照/ <tt>addLineBreak()</tt>, <tt>addParagraph()</tt>
</descrip>



<sect2>addLineBreak()
<p>
<descrip>
<!-- <tag/Purpose/ Force a line break at this point in the text.
<tag/Syntax/ <tt>public void addLineBreak ()</tt>
<tag/Description/ Add a line break to the text at the current point.
<tag/See Also/ <tt>add()</tt>, <tt>addParagraph()</tt>. -->
<tag/目的/ テキストの現在位置で行を区切る．
<tag/書式/ <tt>public void addLineBreak ()</tt>
<tag/説明/ テキストの現在位置に行句切りを追加する．
<tag/参照/ <tt>add()</tt>, <tt>addParagraph()</tt>
</descrip>



<sect2>addParagraph()
<p>
<descrip>
<!-- <tag/Purpose/ Start a new paragaph.
<tag/Syntax/ <tt>public void add ()</tt>
<tag/Description/ Start a new paragraph at this point in the text flow.
<tag/See Also/ <tt>add()</tt>, <tt>addLineBreak()</tt>. -->
<tag/目的/ 新しい段落を開始する．
<tag/書式/ <tt>public void add ()</tt>
<tag/説明/ 文章の現在位置から新しい段落を開始する．
<tag/参照/ <tt>add()</tt>, <tt>addLineBreak()</tt>
</descrip>



<sect>将来の予定
<!-- Future Plans -->
<p>
<itemize>
<item>
<!-- Add to the Email class:
 <descrip>
 <tag/Email( int capacity )/ Used when we know how much space the message
	will need to have allocated.
 <tag/sendTo( String [] address )/ Add a list of primary destinations to
	the e-mail message.
 <tag/sendCc( String address )/ Add a Carbon-Copy destination to the
	e-mail message.
 <tag/sendCc( String [] address )/ Add a list of Carbon-Copy
	destinations to the e-mail message.
 <tag/sendBcc( String address )/ Add a Blind Carbon-Copy destination to
	the e-mail message.
 <tag/sendBcc( String [] address )/ Add a list of Blind Carbon-Copy
	destinations to the e-mail message.
 </descrip> -->
Emailクラスへの追加:
 <descrip>
 <tag/Email( int capacity )/ メッセージにどれだけの領域の割り当てが必
 要か調べる時に用いる．
 <tag/sendTo( String [] address )/ 電子メールのメッセージにプライマリ
 の宛先のリストを追加する．
 <tag/sendCc( String address )/ 電子メールのメッセージにカーボンコピー
 の宛先を追加する．
 <tag/sendCc( String [] address )/ 電子メールのメッセージにカーボンコピー
 の宛先のリストを追加する．
 <tag/sendBcc( String address )/ 電子メールのメッセージにブラインド・
 カーボンコピーの宛先を追加する．
 <tag/sendBcc( String [] address )/ 電子メールのメッセージにブラインド・
 カーボンコピーの宛先のリストを追加する．
 </descrip>
</item>
<item>
<!-- Add to the HTML class:
 <descrip>
 <tag/HTML( int capacity )/ Used when we know how much space the message
	will need to have allocated.
 <tag/public void unorderedList()/ Start an unordered list.
 <tag/public void orderedList()/  Start an ordered list.
 <tag/public void directoryList()/  Start a directory list.                   
 <tag/public void menuList()/  Start a menu list.               
 <tag/void anchor( String anchorName )/  Specify an anchor.
 <tag/void link( String url, String text )/  Specify a link.
 <tag/void applet( String url, String altText )/  Specify an applet link.
 </descrip> -->
HTMLクラスへの追加:
 <descrip>
 <tag/HTML( int capacity )/ メッセージにどれだけの領域の割り当てが必要
 か調べる時に用いる．
 <tag/public void unorderedList()/ 順序無しリストを開始する
 <tag/public void orderedList()/  順序付きリストを開始する
 <tag/public void directoryList()/  ディレクトリリストを開始する
 <tag/public void menuList()/  メニューリストを開始する
 <tag/void anchor( String anchorName )/  アンカーの指定
 <tag/void link( String url, String text )/  リンクの指定
 <tag/void applet( String url, String altText )/  アプレットのリンク指定
 </descrip>
</item>
<item>
<!-- Allow HTML lists to be nested. -->
リストの入れ子を含むHTMLを使えるようにする．
</item>
<item>
<!-- Add error checking code to enforce correct ordering of HTML list
formatting codes. -->
HTML リストを正しい順序にさせるためのエラー判定コードの追加．
</item>
<item>
<!-- The location of the file of environment data should be configurable
from the <tt>Makefile</tt>. -->
環境変数データを書き出すファイルの位置を <tt>Makefile</tt> で設定でき
るようにする．
</item>
<item>
<!-- Get rid of the spurious empty name/value pair that appears in the list when we
are dealing with the GET method of data transfer. -->
GET メソッドによるデータ転送の際に生じる，空である名前/値の組の除去
</item>
<item>
<!-- Consider having CGI implement the java.util.Enumeration interface to
successively provide variable names. -->
連続的に変数名を与えるために，CGI に java.util.Enumeration インタフェー
スを実装することを考慮する．
</item>
<item>
<!-- Add a <tt>Test</tt> class, which would use every method in this package. -->
このパッケージの全てのメソッドを使う，<tt>Test</tt>クラスの追加．
</item>
<item>
<!-- Document how <tt>CGI_Test</tt>, <tt>Email_Test</tt> and
<tt>HTML_Test</tt> build on each other to provide incremental tests for
debugging purposes. -->
デバッグのためにインクリメンタルなテストをできるようにするため，
<tt>CGI_Test</tt>, <tt>Email_Test</tt>, <tt>HTML_Test</tt>はお互いどの
ように依存しているかを説明する．
</item>
<item>
<!-- Document how Test uses every feature available in this package. -->
本パッケージで利用可能な全ての機能をTest がどのようにして使っているか
について説明する．
</item>
</itemize>



<sect>更新履歴
<!-- Changes -->
<p>



<sect1>0.4 から 0.5 での変更点
<!-- Changes from 0.4 to 0.5 -->
<p>
<itemize>
<item>
<!-- Changed documentation and comments to reflect the final nature of this
release. -->
このリリースが最終版であることを反映させるように文書とコメントを変更した．
</item>
</itemize>



<sect1>0.3 から0.4 での変更
<!-- Changes from 0.3 to 0.4 -->
<p>
<itemize>
<item>
<!-- Fleshed out the HTML class to provide minimal functionality. -->
最小限の機能を与えるため，HTMLクラスの機能に肉付けをした．
</item>
<item>
<!-- Wrote the HTML_Test class and javahtmltest.html-dist. -->
HTML_Test クラス及び javahtmltest.html-dist を作成した．
</item>
<item>
<!-- Added the HTML methods to deal with a definition list. -->
HTML クラスのメソッドに定義リストの扱いを追加した．
</item>
</itemize>



<sect1>0.2 から0.3 での変更
<!-- Changes from 0.2 to 0.3 -->
<p>
<itemize>
<item>
<!-- Added the Text and Email classes.
HTML was also added, but it is merely a stub at this point. -->
Text クラスと Email クラスを追加．
HTML クラスも追加したが，現時点ではスタブのみである．
</item>
<item>
<!-- Put the various classes into packages.  
The main classes are in <tt>Orbits.net.*</tt>, the support class
<tt>Text</tt> is in <tt>Orbits.text.Text</tt>. -->
さまざまなクラスをパッケージにまとめた．
中心となるクラスは<tt>Orbits.net.*</tt>であり，補助クラス 
<tt>Text</tt> は <tt>Orbits.text.Text</tt>に含まれる．
</item>
<item>
<!-- Changed <tt>CGItest</tt> to <tt>CGI_Test</tt>. -->
<tt>CGItest</tt> を <tt>CGI_Test</tt> に変更．
</item>
<item>
<!-- Added the <tt>Email_Test</tt> class. -->
<tt>Email_Test</tt> クラスを追加した．
</item>
</itemize>



<sect1>0.1 から0.2 での変更
<!-- Changes from 0.1 to 0.2 -->
<p>
<itemize>
<item>
<!-- The environment variables are put into a temportary file instead of being
crammed into the Java inperpreter command-line.
The <tt>CGI</tt> class and <tt>java.cgi</tt> had to be modified. -->
環境変数を Java インタプリタのコマンドラインに詰め込むのをやめて，テン
ポラリファイルに書き込むようにした．
<tt>CGI</tt> クラスと <tt>java.cgi</tt> を修正した．
</item>
<item>
<!-- The <tt>javacgitest.html</tt> document is made part of the distribution. -->
<tt>javacgitest.html</tt> 文書を作成，パッケージに含めた．
</item>
<item>
<!-- The text files which are modified by <tt>make</tt> upon installation are
provided with names that end with <em>-dist</em>. -->
インストール時に <tt>make</tt> が書き換えるテキストファイルを作成した．
これらは<em>-dist</em>で終る名前にしてある．
</item>
</itemize>

</article>
