Document

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