目次> 第15章 TOPUPPREVNEXT

第15章 アプレット

【目次】
  1. コマンドラインからの起動
  2. アプレット
  3. アプレットとして実行されるプログラム
  4. その他の起動
  5. アプレットの例 ―― ペイント
【テーマ】

「プログラムに書いたとおりにコンピュータを動かす」ことを、 「プログラムを実行する」あるいは、「プログラムを起動する」と いいます。 いままでは、DOS画面で プログラムをコンパイルした後、 引き続きプログラムを起動する方法でしたが、 Webのホームページから起動する方法について紹介します。

プログラムには、必ず


          public static void main(String args[ ]) {
                   ... 
          }
    
というメソッドが含まれていて、「プログラムの実行はここから開始する」と 説明してきました。何回か説明をしましたが もう一度まとめておきます。

アプレットの例として、フレームの中にマウスで絵を書くプログラムを 作成してみましょう。

ページの先頭へ

 15.1 コマンドラインからの起動

上記のようなプログラムの起動方法を、コマンドラインからの起動といいます。
DOSコマンドとして、Javaインタプリタを起動し、 インタプリッタにコンパイルしたプログラム名を教え、実行させています。
Javaインタプリタは、JVM Java Vertial Machine とも呼ばれます。

たとえば、DOS画面のプロンプトに次のような入力がされたとします。


       java  aabb 123 ccc.txt   3.14
    
Javaインタプリタは、次のことを行います。
  1. コマンドラインに指定された名前 aabb をもとに、 aabb.class という名前のファイルを探します。
    カレント・ディレクトリにあれば、すぐに見つかります。

  2. このクラス aabb のメソッド public static void main(String yyy[ ]) を探します。
    ここで、yyy は任意の名前でよいのですが、 それ以外は、大文字、 小文字の区別も含めて、このとおりでなければいけません。 たとえば、
    
            public static void main(String yyy) { 
               ...
            }
            
    があったとしても、「見つかりません」といわれます。
    つまり、 main という名前で、かつパラメタとして1次元の Stringクラスの 配列をもつメソッドが探されます。

  3. コマンドラインのパラメタ   123 ccc.txt  3.14   を空白で区切られた文字列とみなし、 先程みつけた main のパラメタ (上記の例では、yyy)の配列に代入します。この例では、
    
                 yyy[0] = "123";
                 yyy[1] = "ccc.txt";
                 yyy[2] = "3.14";
                 yyy.length = 3;
            
    といった処理がされると考えて下さい。

  4. 先ほど見つけた main に書かれているブロックを実行します。

ページの先頭へ

 15.2 アプレット

アプレット applet とは、インターネット・エクスプロラや ネットスケープなどの、Webブラウザから、Javaプログラムを呼出す仕掛け、 あるいは、呼出されるJavaプログラムのことです。
ブラウザに対する指示は、HTML言語で記述します。たとえば、 hello4.class を呼出すには、 HTML言語で、次のように書きます。


上記のようなファイルを作成し、拡張子として HTML か HTM をもつファイルに保存しておけば、 Web のブラウザがこのファイルを探し、読み込み、起動してくれます。

実行してみましょう。 ここをクリック して下さい。 JVMをロードするのに少し時間がかかります。

hello4.classは、HTML ファイルと同じフォールダに入れておきましょう。

HTML言語では、<HTML>や<APPLET ...>のようなものを、タグとよんでいます。
たとえば、「アプレットを呼出すには、APPLETタグをつかいます。」といった言い方をします。
APPLETタグでは、コンパイルしたアプレットのファイル名(CODE=)、表示の幅(WIDTH=)と 高さ(HEIGHT=)を与えます。

プログラムを呼出す際に、パラメタを与えたければ、次のような、PARAMタグを使います。


HTMLから、MESSAGEパラメタとして、 "How are you?" がプログラム hello4.class に渡されます。実行してみましょう。 ここをクリック して下さい。 今度は2度目ですので、すぐに表示されると思います。

HTMLタグは、いろいろあり、簡単には説明ができませんが、アプレットを呼出すために 必要なタグは以上です。

HTML 4.0 では、 <APPLET> タグは、非推奨となり、 <OBJECT> タグが奨励されていますが、 当面は、<APPLET> タグでよいと思います。

ページの先頭へ

 15.3 アプレットとして実行されるプログラム

プログラム例1

上記で呼び出す、hello4.java の例

HTMLから、アプレットが呼び出されると、次のように起動されます。

  1. APPLET タグの CODE= で指定された名前のファイルを探す。
    探す場所は、 環境変数 CLASSPATH に設定されたものを用いる。
    HTMLのAPPLETタグにCODEBASE指定されている場合は、 そのフォールダ内を探す。
  2. 見つかったファイル内の 同名のクラスに定義された、メソッドに ついて、以下の順に呼出しを行う。
    • init()
      このメッソドには、このプログラムが呼び出された(ロード)時、 1回だけ実行したいことを記述します。

    • paint()
      画面を描画する。

    • start()
      このメソッドは、最初だけでなく、他のページに移動した後、再び このアプレットを含むページに戻ってきたときにも実行されます。

  3. また、ウィンドウがアクティブになって、 背面に隠れていた部分を再描画する必要がある場合などにも、 paint(g) が自動的に呼び出されます。
    このメソッドは、プログラム内で直接呼び出せません。 プログラム内で再描画をしたい場合は、repaint() または、 update() を呼び出すと、システム側から再描画のために、 paint(g) がコールバックされます。

  4. ページに戻ってきたときには start( ) 、 ページから他のページに移動するときには stop( ) がコールバックされます。

    たとえば、アニメーションをページがアクティブになっているときだけ 表示したいといった場合、 start( ) メソッドに表示開始処理を、 stop( ) メソッドに表示停止処理を記述します。

    簡単なアップレットでは、 start() や stop() を書く必要はありません。

プログラム例2

上記プログラムの swing 版 hello4j.java

ブラウザで起動した場合には、 System.out.print や println の出力の表示がされません。

デバッグをするには、 appletviewer が便利です。 DOS画面へ、いままでどおりに表示されます。

下図のように JApplet ( Applet の swing版 ) が表示できないブラウザがあります。 appletviewer を使えば、swing を使っている場合でも表示可能です。

Java コンソール を on にすると、例外が発生していることがわかります。

Java コンソールは、Internet Explorer では、「表示(V)」メニュー にあります。 ここに、表示されていない場合は、「ツール(T)」のインターネットオプションの 詳細設定タブの MicrosoftVM で使用する旨が設定されていない可能性があります。

ページの先頭へ

 15.4 その他の起動

プログラムを実行するには、結局、誰かが

必要があります。もちろん、プログラムはコンパイルされ xxx.class といった、名前が付いていなければなりません。

「誰かが」といっても、人間である必要はなく、コンピュータ自身に きっかけを作らせてもよいのです。
一般的な「きっかけ」として、次のようなものがあります。

ページの先頭へ

 15.5 アプレットの例 ―― マウスの追っかけ

フレーム上でマウスをドラッグしたとき、 マウスの動きに追随して線を描くプログラムを作りましょう。 まずは、マウスを追いかける部分。

プログラム mouse1.java

HTML の 例

上記の swing 版 mouse1j.java

ページの先頭へ


更新日:2002-01-15