Javaの基礎

ここ数年でJavaを取り巻く環境も大きく変わって来た。数年前、Javaに触れたときには、まだまだC言語が繁栄する世の中だと思ったものだったが、Java2を迎え入れて、また、JavaChipなるものの実体も見え始めて来て、いよいよプログラミング言語の主流としての太い流れができてきた感がある。

■第1章 JavaアプレットとJavaアプリケーション

Javaプログラムには大別して2種類ある。Javaアプリケーションと、Javaアプレットだ。最近はこれに加えて、JavaServletと呼ばれる、サーバサイドのJavaアプレットのようなものも含まれて、3種類ぐらいになっている。

Javaアプレットは、Webブラウザ用のプログラムだ。Webページに織り込む形のプログラムはこのように呼ばれ、main()を持たない。また、JavaServletはサーブレット対応Webサーバなどからよびだされ、CGIのように使用することができる。Javaアプリケーションは、普通のOS上から呼び出されるアプリケーションだ。


■第2章 JARファイルについて

JARとは、Java ARchiveの略で、tar, ar, zip, lhaなどといった書庫作成アプリケーションと同じような物です。一般的な書庫作成アプリが持つような、パッケージング機能や、圧縮機能の他に、マニフェストファイルと呼ばれるメタ情報を持つことができます。

パッケージング、圧縮をすることで、Javaアプレットなどは、内部的に使用されるグラフィックやサウンドを一つのファイルとしてサーバよりダウンロードすることができます。このため、複数のファイルをダウンロードするときにいちいちセッションを開くこと無く、効率的なファイル転送を実現できます。


■第3章 CLASSPATH???

javaのソースコードをコンパイルしてできたCLASSファイルの位置を指定します。jdk1.1のころなどは、最初にいろいろと指定する必要があったのですが、jdk1.2以降では、jdkの標準クラスについては、指定の必要は無くなったようです。自分で作成したパッケージ(Javaの専門用語としてのパッケージ)等の位置を指定する場合には、CLASSPATHの指定が必要です。
$ javac -classpath . MyWork.java
等のように指定します。上記の例では、カレントディレクトリをCLASSPATHに追加しています。複数指定する場合には、次のようにします。
$ javac -classpath .;c:\temp MyWork.java


■第4章 パッケージのインポート

Javaのでは、C言語で各種の標準関数をinclude文で呼び出せたように、import文にて、標準で提供されているクラスファイルを取り込むことができます。このとき注意すべき点は、クラスは階層構造をなしていますが、パッケージ名と、そのパッケージの差部パッケージ名は無関係だということです。

例えば、java.awtパッケージと、java.awt.eventパッケージは、別物だと考えなくてはいけないということです。インポートのときには、
import java.awt.*
とやっても、java.awt.eventパッケージに含まれるクラスを利用することはできないということです。この場合、
import java.awt.*
import java.awt.event.*
と言う風に、記述が必要になります。


■第5章 JARファイル中のファイルを表すURL

JARファイルは仮想的な階層構造を持つことができるので、JARファイル中のファイルを表す場合に特殊なURL記述で指定します。書式は、
jar:JARファイルURL!/ファイル名
で指定します。例えば、カレントディレクトリにあるtest.jarファイル内のjava.gifファイルを指定する場合には、
jar:file:test.jar!/java.gif
のように記述します。ネットワーク上のJARファイルを指定することももちろん可能です。たとえば、www.unknown.com上のJARファイルunknown.jarファイル内のjava.gifファイルを指定する場合には、
jar:http://www.unknown.com/unknown.jar!/java.gif
ディレクトリ/usr/local/unknown配下のunknown.jarファイルの場合は、
jar:file:/usr/local/unknown/unknown.jar!/java.gif
となります。


■第6章 JARファイルの作り方

JARファイルはtarファイルを作成するように作成することができる。一般的なオプションも、cvf等で指定することで作成できる。ただし、JARファイルにマニフェストファイルを指定する場合、さらにmオプションを指定する必要がある。書式は次の通りでよい。JARファイル名を test.jar マニフェストファイル名をmanifest.txtとすると、
$ jar cvfm test.jar manifest.txt *.class *.html *.gif
でよい。

マニフェストファイルは、最低限以下の記述だけで良い。(デフォルトのクラスをtestClass.classとした場合)
Manifest-Version: 1.0
Main-class: testClass

それでは、JavaアプレットをJARファイル化するにはどうすれば良いだろうか。Javaアプレットは、main()を持たないのでデフォルトで起動されるクラスファイルを指定する必要はない。そこで、この場合はマニフェストファイルをとくに必要とせず、
$ jar cvf test.jar testClass.class
だけで、JARファイルが作成される。


■第7章 JARファイル内のアプレットの呼び出し

JARファイル内のアプレットの呼び出しは、通常のクラスの呼び出しと大差はない。唯一の違いは、JARファイルを指定してあげるだけだ。<applet>タグの引数archive="test.jar"のように、jarファイルを指定する記述を追加するだけで良い。
<applet code="testClass.class" width="400" height="200">
を次のように修正。
<applet archive="test.jar" code="testClass.class" width="400" height="200">