appletとしてもapplicationとしても 実行できるprogramを作ることも可能です。
applet の最後の let は「小さい」という 意味の接尾辞ですので, アプレットとは「小さなアプリケーション」というほどの意味でしょう。
上のような黄色い円を一つ描くアプレットを作ってみましょう。
editorを起動して,次のように打ち込んでください。
import java.awt.*;
public class Applet1 extends java.applet.Applet {
public void paint(Graphics g) {
g.setColor(Color.yellow);
g.fillOval(140, 40, 20, 20);
}
}
これを Applet1.java というファイル名で保存し, アプリケーションの場合と同様に
javac Applet1.java
と打ち込んでコンパイルすると,
Applet1.class というファイルができます。
このファイル名は必ずクラス名(上の場合は Applet1) に .java を付けたものでなければなりません。 アプレットは class の宣言に必ず public と いう指定を付けなければならないのですが, public なクラスを含むプログラム名は必ずクラス名 に .java を付けたものでなければならないのです。 public ということばの意味は後で詳しく説明します。
この Applet1.class をHTMLファイルと同じディレクトリに置いて, HTMLファイルに
<applet code="Applet1.class" width=300 height=100> </applet>
と書いておけば,
Netscape Navigator のような Java対応 browser や
appletviewerで上記のprogramを見ることができます。
appletviewer の使い方は
appletviewer test.html
です。
ただし appletviewer は HTML file 中の <APPLET> tag だけしか 理解できません。 HTML fileの他の部分は Netscape などで確認します。
なお,<APPLET> tag の部分を
<applet code="Applet1.class" width=300 height=100>
<img src="foo.gif">
</applet>
のように書いておけば,Java に対応していないbrowserでは
foo.gif という
画像が applet の代わりに表示されます。
以下ではこのappletについて説明します。
このプログラム中には,Graphics とか Color とか いう言葉が使われていますが,
import java.awt.*;
です。
なお,この java.awt とは, Java言語の開発キット(JDK)に 入っているJava API(Application Programming Interface) と呼ばれる標準ライブラリの中のAWT(Abstract Window Toolkit)という パッケージのことです。 この中のものは appletで必ずといっていいほど使いますので, applet program の先頭では盲目的に
import java.awt.*;
と書くものだと思ってしまってもよいでしょう。
実際には java.awt を使わなくても,
書いておいて実害はないでしょう。
プログラムの2行目の
public class Applet1 extends java.applet.Applet {
の public とは,この Applet1 という class を
公開する(すべての method から利用可能にする)
という意味です。
appletは,Java APIの中の java.applet.Applet という classを拡張(extend)することによって作ります。 「applet とはどういう働きをするか」という, いわば defaultの設定(無指定時の標準設定)が, java.applet.Applet というクラスの中に書き込まれています。 これがJavaのようなオブジェクト指向言語の一つの特長で, 元になるものを拡張して program を作っていきます。
applet を作るときには,
import java.awt.*;
public class アプレット名 extends java.applet.Applet {
...
}
と書くのが決まり文句であると心得ておけばいいでしょう。
なお,java.applet.Applet という正式名も, 冒頭に import 命令を置くことによって省略名が使えます。 つまり,
import java.awt.*;
import java.applet.*;
public class アプレット名 extends Applet {
...
}
と書くことができます。import はいくつあってもかまいませんし,
並べ方の順序もどれを先にしてもかまいませんが,
import 以外の命令よりは先に書きます。
appletの定義の中の,paint methodを定義している部分
public void paint(Graphics g) {
...
}
を見てみましょう。
これも public で始まっています。これも, paint method が誰にでも使ってもらえるようにするためです。
application の場合は,program の中に必ず main method がなければなりませんでした。 applet の paint method も,これとほぼ同様なものです。 applet に必ず paint method がなければならないわけでは ありませんが,特別な事情がない限り paint があるのが普通です。
applet の
public void paint(Graphics g) {
...
}
と、application の
public static void main(String args[]) {
...
}
を比べると,main の場合は static という形容詞が
付いています。
static は、compile した時点でこの method を作ってしまう
ことを意味する言葉です。main が program で最初に実行される
ものであるため、static 宣言する必要があります。
appletの paint に static が付いていないのは, これが本当に applet で最初に実行されるものではないためです。 main に相当するものはWWWブラウザの中にあって, それが paint を必要に応じて呼び出して使っているだけなのです。 この事情は後ほどもっと詳しく説明します。
さて,この paint method は, browser がこの applet を読み込んだときのほか, browser の画面がいったん隠れた後で再び現れたときにも呼び出されて, 描画を実行します。
paint method に与えられている引数(ひきすう) Graphics g は, main の場合の String args[] に似ています。 描画関係の設定(default の色など)についての情報を 持っている Graphics 型の変数 g が, WWW browser から paint method に与えられ, それに基づいて描画をします。
dfault の描画色は黒ですが,ここでは
g.setColor(Color.blue);
としてこれを黄色に変えています。色には
black, blue, cyan, darkGray, gray, green, lightGray, magenta, orange, pink, red, white, yellowが定義されていますが,任意の色を作ることもできます。
最後に,
g.fillOval(140, 40, 20, 20);
が円を描く部分です。
Javaの座標は,画面の左上隅を原点 (0, 0) として, 右に進むほど x 座標が増え, 下に進むほど y 座標が増えます。 fillOval(140, 40, 20, 20); は,左端隅の座標が (140, 40) で, 幅 20,高さ 20 の長方形(この場合は正方形)に内接する楕円の内側を 塗りつぶす命令です。