1. Appletのつくりかた

ブラウザ上で動作するプログラムがアプレットです。

(1) アプレット

 入門編では Java の文法を Java アプリケーションという形でみてきました。 今回の中級編の1回目では、Java のプログラムの作り方のもう1つの形である Applet の作り方について説明します。 Applet とは、ブラウザ上で動く Java プログラムです。

 アプリケーションとアプレットでは、少し違うところがあります。まず、今までのアプリケーションプログラムは自分のコンピュータに実行するプログラムがあり、これを実行します。これに対して、アプレットでは他のコンピュータ(インターネットでは Web サーバのようなコンピュータ)に実行したいプログラムがあり、これを自分のコンピュータにダウンロードして実行します。

 Java では java.net パッケージを使うと簡単に通信プログラムを作成する事ができます。このときアプリケーションプログラムでは特に制限はありませんが、アプレットプログラムでは通信できるコンピュータに制限があります。アプレットでは原則としてプログラムをダウンロードしてきたコンピュータ(サーバ)としか通信ができません

 また、ローカルディスクの読み書きに関する制限もあり、アプリケーションプログラムではローカルディスクに対するアクセスは制限されませんが、アプレットプログラムでは、こちらも原則としてローカルディスクに対する一切のアクセスは禁止されます

このようなアプレットプログラムのセキュリティに関する制限はプログラムに署名をすることで回避する事ができます。


(2) アプレットプログラムの作り方

 アプレットプログラムを作るのに、特に新しい文法の知識は必要ありませんが、アプレットプログラムの仕組みを知っている必要があります。

 アプレットプログラムを作るときにはいくつかルールがあります。

ですから、クラスを定義するときは、

import java.applet.Applet;

public class MyApplet extends Applet { ... 

 のように書き始めることになりますね。さて、Applet クラスのサブクラスにするということは、Applet クラスのメソッドや変数を継承しているはずです。この中でも重要なメソッドが、init()、start()、stop()、destroy() の4つです。

 アプリケーションプログラムでは main() が一番はじめに実行されるということしか決まっていませんでしたが、アプレットプログラムではこの4つのメソッドが実行されるタイミングが決まっています。ですからアプレットプログラムを作るときの最大のポイントはこの4つのメソッドの実行されるタイミングを知っておくことです。

メソッドタイミング
void init() アプレットが初めて起動されたとき、1回だけ実行される。
void start() init()の後、アプレットが画面に表示されたとき。
void stop() アプレットが画面から見えなくなったとき。
void destroy() アプレットが消滅するとき。

 アプレットプログラムを作るときは、この4つのメソッドをオーバーライドして作ります。( Graphics クラスや paint() については次の章で説明します。)

  MyApplet.java

import java.awt.*;
import java.applet.Applet;

public class MyApplet extends Applet {
    public void init() {
        System.out.println("init()");
    }
    public void start() {
        System.out.println("start()");
    }
    public void stop() {
        System.out.println("stop()");
    }
    public void destroy() {
        System.out.println("destroy()");
    }

    public void paint(Graphics g) {
        g.drawString("Hello! Everyone!",10,50);
    }
}

 プログラムはこれでできあがりです。あとは今までと同じようにコンパイルします。


(3) アプレットプログラムの実行方法

 アプレットプログラムの実行には HTML ファイルが必要です。アプレットはブラウザ上で実行するプログラムなので、ブラウザに HTML ファイルを読み込ませて実行します。

 この HTML ファイルには最低限 APPLET タグが必要です。APPLET タグの CODE 属性で実行するアプレットプログラムを指定します。WIDTH、HEIGHT 属性はアプレットの大きさを指定します。HTML ファイルの名前は何でも構いません(この後の例では分かりやすいように実行するクラスと同じ名前にしておきます)。

  MyApplet.html

<HTML>
<BODY>
<APPLET CODE="MyApplet.class" width="200" height="100">
</APPLET>
</BODY>
</HTML>

 あとは、このファイルをブラウザで開けば良いのですが、Java2 の機能をフルに使ったプログラムを書いた場合、ブラウザでは実行できないことがあります。これは、ブラウザがもっている Java のインタプリタが Java2 に対応していないことがあるからです。(SDK の以前のリリースのコンパイラ実装は、oldjavac として現在でも利用できます。これでコンパイルすると正しく起動されます)

 そこで、JDK に付属する appletviewer というツールを使って実行します。実行方法はパラメータ名に HTML ファイルを指定するだけです。

C:\java_test>appletviewer MyApplet.html

 すると、次のようなウインドウが出てきます。これがアプレットプログラムです。


 実行例  (画像をクリックすると実際の MyApplet.html とアプレットが起動します)




 ここで、MS-DOS プロンプトを見てみます。

C:\java_test>appletviewer MyApplet.html
init()
start()

 と表示されていますね。アプレットのウインドウをアイコン化すると、stop( )、元に戻すと start( ) が表示されます。最後にアプレットを閉じると、stop( )、destroy( ) が表示されます。このように、アプレットの4つのメソッドは実行されるタイミングが決まっています。この4つのメソッドはライフサイクルメソッドとも言います。

アプレットプログラムで System.out.println( ) を実行すると、MS-DOS プロンプトに表示されます。ブラウザで実行すると Java コンソール というところに表示されます。これは、インターネットエクスプローラの「表示」「Java コンソール」で起動、無いときは、インターネットオプションで指定します。

 Java Applet を実行すると、「Java Runtime Environment は からロードすることができません」の メッセージが表示されて Applet が動作しないときは、C:\Documents and Settings\ USER_NAME\ Application Data\ Sun\ Java\ Deployment\ deployment.properties を削除する。これにより、IEから再実行すれば、Applet が表示します。 原因はJREのバージョンを下げたことによる不整合と思われます。

次の章()