アプレット (Applet)について
社会工学実習(社会経済)のゲーム画面 (Gyerik Janos君のプログラム)
Appletとは? WWWサーバ インターネット HTMLドキュメント Java クラスファイル WWW クライアント ブラウザ(Internet Explorerなど)で動作する Javaのプログラム WWWサーバ から WWWクライアントに クラスファイルをダウンロードして実行
目的の一つ: 静的コンテンツからの脱出 HTMLによるWEBコンテンツ クライアントサイドで動く動的なWEBコンテンツ アプレットで可能 (cf. 1学期の情報リテラシー実習) 文字、静止画 止まったまま。動きがない。 クライアントサイドで動く動的なWEBコンテンツ アプレットで可能 一時期は非常に注目された(Javaの初期の普及の一因) 例:ネット上のアプレットをスクリーンで実演・・・ インターネット
Javaの仕組み:復習 基本的な仕組み バイトコード(classファイル) 「Java Virtual Machine (仮想マシン)」が入っていれば基本的に動く。 Windows, Mac, Linux, …
Java アプレットの仕組み ネットワーク経由でバイトコードがダウンロードされる WEBブラウザなどに組み込まれたJava バーチャルマシンで実行される。 インターネット
Java アプレットの利点 見ず知らずの他人が作ったネット上の プログラムを実行するのは危険。 プログラムを実行するのは危険。 Javaアプレットはセキュリティがしっかり している。 よって、セキュリティポリシーの制限内であればJavaアプレットでは何でも出来る。 ゲーム、ワープロ、アニメーション、・・・
アプレットの作成手順 3 STEPS ソースプログラムの作成 コンパイル(バイトコードへの変換) htmlファイルの作成 ***.java ファイルの作成 コンパイル(バイトコードへの変換) ***.class の作成 htmlファイルの作成 appletviewerでテストをする テストが終わったら、htmlファイルと classファイルをWEBサイトにアップロード
1 & 2. ソースプログラム import java.applet.*; public class Test extends Applet{ } 最低限必要なこと Appletクラスを継承したクラスを作る(「extends Applet」と書く、と覚えておく) コンパイルでclassファイルを作成する javac Test.java Test.class
例: 絵を描くプログラムを作ってみよう import java.applet.*; // アプレットを使うため import java.awt.*; // お絵かきをするため public class Test extends Applet{ public void paint(Graphics g){ g.drawLine(100, 100, 200, 200); g.drawLine(100, 200, 200, 100); g.drawOval(300, 100, 100, 100); } Graphics gはGraphics gcで、g.drawLine()はgc.drawLineで置換えてもよい。drawOvalも同様。
3. HTMLファイルを作成する <applet></applet>タグを書く <head> <title>アプレットのテスト</title> </head> <body> <applet code="Test.class" width="500" height="500"> </applet> </body> </html> <applet></applet>タグを書く applet code でclassファイルのファイル名を指定 ここで classファイルがブラウザに呼び出される。 width, height でウィンドウ幅を指定 作成したhtmlファイルは、classファイルと同じ ディレクトリに保存する。
appletviewerでアプレットをテスト コマンド・プロンプトで appletviewer Test.html とタイプして起動する (10ページのアップレット・プログラムは 13ページのように表示される)。 アプレットを終了する。 右端上のXをクリック
※WEBサイトにアップロードする 納得のいくアプレットが出来たら、WEBブラウザでアプレットが表示されることを確認する (netscape, InterneExplorer)。 WWWブラウザの場合、ソースコードの変更がすぐに反映されないことがあるので注意(appletがキャッシュされてしまうため)。 class ファイルと htmlファイルを自分のホームページにアップロードする。 cp Test.html Test.class ~/public_html/
余談 アプレットの現状 当初予想されたほど現在は使われていない。 WEBコンテンツではMacromediaのFlashなど 最近のWEBアプリケーションではAjaxなど
もうすこしだけ高度な知識
アプレットには main メソッドがないJavaVMが自動呼び出しするメソッド アプレットの読み込み init()が呼ばれる。 最初に一度だけ呼び出される。 アプレットの開始 start()が呼ばれる。 ユーザが再びページに戻ったときや、ブラウザをアイコン化から元の大きさに戻したときに呼び出される。 アプレットの実行 paint(Graphics g) など アプレットの停止 stop()が呼ばれる。 ユーザがページを離れた時やブラウザがアイコン化された時に呼び出される。 アプレットの解放 destroy()が呼ばれる。
アプレットのライフサイクル 右のように init, start, stop, destroy メソッドを定義してみよう。 import java.applet.*; // アプレットを使うため import java.awt.*; // お絵かきをするため public class Test extends Applet{ public void paint(Graphics g){ g.drawLine(100, 100, 200, 200); g.drawLine(100, 200, 200, 100); g.drawOval(300, 100, 100, 100); } public void init(){ System.out.println("Initialize"); setSize(500, 300); // サイズ this.setBackground(Color.magenta);//背景色 public void start(){ System.out.println("Start!"); public void stop(){ System.out.println("Stop!"); public void destroy(){ System.out.println("Bye-bye!"); 右のように init, start, stop, destroy メソッドを定義してみよう。 AppletViewerを最小化したり、元のサイズに戻したりしてみよう。 端末に何が表示されるかを確認せよ。