アーカイブ

‘Java’ タグのついている投稿

SWFProfiler を複数クライアント対応化とバグ修正

SWFProfiler をアップデートしました。

リリースノート

・モニタリングする対象 SWF をリストから選択出来るように機能を追加しました。
・不要なデータが混ざるのを防ぐため、サーバー <-> クライアント間のデータのやり取りをリモーティングからメッセージングを使ったものに変更しました。
・上記に伴い、サーバーを Jetty から自前サーバーに変更しました。
・サンプリングがおかしかった所を修正しました。

ダウンロード

SWFProfiler.zip (Ver. 0.0.3)
SWFProfiler.zip (Ver. 0.0.4)

使い方

・SWFProfiler.jar を実行します。
・監視したい対象 SWF をブラウザ上でもローカル上でもいいので開きます。
・リストから対象 SWF のファイル名を選択します。

以上の手順でプロファイリングが可能です。

使用に関して

・実行には JRE 1.6+ が必要です。
・FlashPlayer はデバックバージョンを使用する必要があります。
・SWF はデバッグリリースされている必要があります。

ソースコード

http://bitbucket.org/muta244/swfprofiler/ で bitbucket にて管理しています。

今回のアップデートでだいぶ使えるものになったんじゃないかと思います。ただ、バグやおかしな点もまだまだあるかと思いますので、これからもマイペースに更新していきます。ご意見・ご要望はコメント欄、もしくは bitbucket にチケット登録をお願いします。

SWFProfiler の機能追加・バグ修正をしました

2009 年 8 月 16 日 muta244@admin コメント 4 件

SWFProfiler_Capture02

先日リリースした SWFProfiler ですが、みなさん動いてなかったかと思います(ですよね?)。なので、修正版をリリースしました。ついでにモニター結果のフィルタリング機能と、定期的にガベージコレクションを自動で行う機能を追加しています。

ダウンロード

SWFProfiler.zip (Ver. 0.0.2)
* リンク先を間違えていたので修正しました。(’09.08.16)

SWFProfiler.zip (Ver. 0.0.4)
* バグ修正版。(’09.11.18)

あと、ブラウザ版にしろ、ローカル版にしろ、Flash Player はデバッグ版がインストールされている必要があります。それと、SWF 自体もデバッグモードで書き出されている必要がありますので、この点だけご注意下さい。

不明な点やバグ報告などありましたら、ぜひコメント欄へお願いします!

SWFProfiler を試しに公開してみます

SWFProfiler のキャプチャ画像

SWFProfiler のキャプチャ画像(nium さんの kujaku を勝手にプロファイリングw)

Flex Builder が無くてもデバッグ環境が必要だと思うので作りました。今の機能は Flex Builder プロファイラのライブオブジェクト相当のみです。Windows, Mac, Linux 全てで使用出来ますが、Swing で開発してるので JRE 1.6+ が必要です。

ダウンロード

SWFProfiler.zip (Ver. 0.0.1)

このバージョンは正しく動作しませんので、新しいバージョンをリリースしました。そちらをお使い下さい。

使い方

SWFProfiler.jar を起動した後、監視対象の SWF を開く(ブラウザ上でも可)と監視が始まります。現状では、複数の SWF を同時に開いているとおかしな事になるので、SWF は監視対象一つのみを開くようにして下さい。FlaProfiler とほぼ同じです。

今後の予定

・複数の SWF 対応
・モニター結果のフィルタリング機能
・コンソール機能
・メモリ使用状況のグラフ表示
・国際化

あとは Mac で文字列なカラムでソートすると、何故かちらつくんですよね。Win だと大丈夫。Swing の問題だとは思うんだけど、対処法がないか模索中。

さて、どこまで出来るかな。

Mac では Swing で SingleFrameApplication#shutdown() が呼ばれない時がある

Swing のメモ。

Swing を使ったアプリでは SingleFrameApplication#shutdown() をオーバーライドして終了処理を記述する。この時、Windows ではクローズボタンで終わろうが、Alt+F4 で終わろうが、強制終了で終わろうが、ちゃんと shutdown() が最後に呼び出される。しかし、Mac だと正しく shutdown() が呼び出されない時がある。File -> Exit で終了した時など GUI 上で終了させた時は問題ないが、Cmd+Q や強制終了で JVM ごと終わらせた時には shutdown() が呼び出されず、終了処理が行えない。

そんな時の対処法が以下。

Java
@Override
protected void startup()
{
    Runtime.getRuntime().addShutdownHook(new Thread()
    {
        public void run()
        {
            if (!shutdowned) {
                shutdown();
            }
        }

        // 通常の起動処理
        ...
    });
}

@Override
protected void shutdown()
{
    if (shutdowned) {
        return;
    }

    super.shutdown();

    shutdowned = true;
}

このやり方が正しいのかは分からないけど、Runtime#addShutdownHook() なら Mac でも shutdown() を呼び出せるので終了処理がきちんと行える。Swing はシステム関係無くアプリ開発出来ることを謳ってるので、結構この問題はクリティカルだと思う。Sun さんの修正を期待。

こんなエントリー、ActionScript と関係無さそうだけど、Flash 開発のために必要なことをやっているのです…。

カテゴリー: Java, Swing タグ: ,

Jar Bundler を使った .jar -> .app 時のメモ

個人的なメモ。

Jar Bundler で .jar を .app にパッケージングする際の注意点。

Jar Bundler のキャプチャ 1

この画面で “Use Macintosh Menu Bar” にチェック入れてても、Swing を使ったアプリケーションだとウインドウ上部にメニューが表示されず、フレーム内部に表示されてしまう。対処法は以下。

Jar Bundler のキャプチャ 2

この画面の一番下でしているように、プロパティに “apple.laf.useScreenMenuBar” を true に設定して書き出せばスクリーン上部にメニューが表示されるようになる。

カテゴリー: Java, Netbeans, Swing タグ: , ,