忍者ブログ
場所取り そのうち引っ越すかも http://maglog.jp/gltest/
[6] [5] [4] [3] [2] [1]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

いまどき Applet なんてやってる人少ないみたいだけど、個人的にかなり苦労した点についてメモしておく。

Applet クラスは getImage とか getAudioClip というメソッドを持っていて、 Applet が置かれているのと同じサーバにあるリソースファイルをロードできるようになっている。ファイルの保存や、他のサイトのファイルへのアクセスは、セキュリティ上の理由からできない。

Java のコンパイル済みオブジェクトはクラス単位のファイルに分かれるため、プログラムの規模が大きくなるとクラスファイルの数が膨大になるという特徴がある。これを一つにまとめる方法が Jar ファイルで、複数のファイルをまとめて圧縮しつつ、解凍なしで実行できるというものだ。

となると、プログラム内で使っている画像や音声などのリソースも、 Jar ファイルにまとめたいと思うのが自然な流れだ。特に Web 上で公開する Applet だと、一つひとつのリソースファイルの為に一々 http コネクションを開くのは無駄なトラフィックを増やすからして、全ての関連ファイルを一つにすることでロード時間の短縮が見込まれる。

だが、そうすると Applet から getImage などのメソッドを使ったアクセスが普通にはできなくなる。具体的には

getImage(getCodeBase(), fname);

のような呼び出しが上手くいかない。ローカルで file:// のアクセスなら上手くいくのに、 http だとダメだという理不尽な動作をする。

これを解決するには、次のようにする。

        try{
            String url = "jar:" + getCodeBase() + jarname + "!/" + fname;
            ret = getImage(new URL(url));
        }catch(MalformedURLException err){
            System.out.println(" exception raised");
        }

なんだかよくわからないが、 jar プロトコルみたいなものの中に http URL を記述しなければならないようだ。
この例で url という文字列の中身はこんなふうになる。

jar:http://gltest.bufsiz.jp/Kashiwamochi063/Kashiwamochi.jar!/images/a.gif

以下にこの方法でひとつの Jar ファイルにまとめた Applet のサンプルを示す。




Version 0.63
  • Jar ファイルにリソースを含め全てのファイルをまとめた。
  • 透過 PNG が特定のバージョンの Java VM では正しく表示されないようなので、 GIF に置き換えてみた。

ソース
PR

コメント


コメントフォーム
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字


トラックバック
この記事にトラックバックする:


忍者ブログ [PR]
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
フリーエリア
最新コメント
最新トラックバック
プロフィール
HN:
gltest
性別:
非公開
自己紹介:
バーコード
ブログ内検索
アクセス解析