はじめてのapplet

なお Javaで作れる programには,次の二通りが存在します。
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について説明します。

Package の import

このプログラム中には,Graphics とか Color とか いう言葉が使われていますが,

です。 この java.awt. の部分を省略した省略名を使うという 宣言が,このプログラム冒頭の
    import java.awt.*;
です。

なお,この java.awt とは, Java言語の開発キット(JDK)に 入っているJava API(Application Programming Interface) と呼ばれる標準ライブラリの中のAWT(Abstract Window Toolkit)という パッケージのことです。 この中のものは appletで必ずといっていいほど使いますので, applet program の先頭では盲目的に

    import java.awt.*;
と書くものだと思ってしまってもよいでしょう。 実際には java.awt を使わなくても, 書いておいて実害はないでしょう。

public 宣言

プログラムの2行目の

public class Applet1 extends java.applet.Applet {
の public とは,この Applet1 という class を 公開する(すべての method から利用可能にする) という意味です。

extends java.applet.Applet

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 以外の命令よりは先に書きます。

paint method

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の paintstatic が付いていないのは, これが本当に 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 の長方形(この場合は正方形)に内接する楕円の内側を 塗りつぶす命令です。