1. Appletのつくりかた |
ブラウザ上で動作するプログラムがアプレットです。
(1) アプレット |
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> <BODY> <APPLET CODE="MyApplet.class" width="200" height="100"> </APPLET> </BODY> </HTML> |
C:\java_test>appletviewer MyApplet.html |
C:\java_test>appletviewer MyApplet.html init() start() |
アプレットプログラムで 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のバージョンを下げたことによる不整合と思われます。