ページの先頭行へ戻る
Interstage Studio J Business Kit GUIライブラリ ユーザーズガイド
FUJITSU Software

4.3.1 開発の流れ

オブジェクト制御機能を利用した開発は、まず、各オブジェクトをObjectの派生クラスで定義し、次にJFCObjectLoaderManagerの派生クラスに登録するという手順を踏みます。

オブジェクト制御機能を利用した開発の流れは以下のとおりです。

  1. オブジェクト制御機能で利用するオブジェクトを、Objectの派生クラスとして作成します。

  2. JFCObjectLoaderManagerの派生クラスを定義し、各オブジェクトを登録します。

    addメソッドを使用して、各オブジェクトを登録します。

    オブジェクトを登録するとき、オブジェクト名は各オブジェクトごとに固有の名前を指定し、名前の重複がないようにします。

  3. getObjectメソッドを利用して、オブジェクトを取得します。

    オブジェクトの生成タイミングをDELAYED_CREATIONに指定した場合は、あらかじめrealizeObjectを呼び出します。

  4. オブジェクトに関する制御を行います。

  5. 最後に、releaseObjectメソッドを利用して、破棄タイミングに応じてオブジェクトを破棄します。

JFCObjectLoaderManagerの派生クラスとしてObjectManagerを定義し、java.awt.Buttonの派生クラスとしてSubButtonを定義した場合の例を以下に示します。

//JFCObjectLoaderManagerの派生クラス
public class SubObjectManager extends JFCObjectLoaderManager
{
    public SubObjectManager()
    {
        this.add("ボタン1", "SubButton",JFCObjectLoader.DELAYED_CREATION,JFCObjectLoader.TEMPORARY_INSTANCE);
        //addの引数では
        //1番目がオブジェクト名
        //2番目が作成したオブジェクトのクラス名、
        //3番目がオブジェクトの生成タイミング
        //  上記ではオブジェクトがrealizeObjectメソッドを呼び出し時にオブジェクトを生成します。
        //  指定可能な生成タイミングは以下の[生成タイミング一覧]を参照
        //4番目がオブジェクトの破棄タイミング
        //  上記ではオブジェクトがreleaseObjectメソッドを呼び出し時にオブジェクトを破棄します。
        //  指定可能な破棄タイミングは以下の[破棄タイミング一覧]を参照
        //他のオブジェクトの登録も以上の手順と同じように登録します。
        this.add(......);
        ....
    }
}

//アプレットの派生クラス
public class SubApplet extends Applet
{
    public void 任意のメソッド()
    {
        //オブジェクトを生成して、アプレットに貼り付けます。
        objectManager.realizeObject("ボタン1");
        SubButton subButton = (SubButton)objectManager.getObject("ボタン1");
        this.add(subButton);
        //なんらかの処理を行います。
        ....
        //アプレットからオブジェクト剥がして、このオブジェクトを破棄します。
        this.remove(subButton);
        subButton = null;
        objectManager.releaseObject("ボタン1");
        ....
    }
}
表4.13 生成タイミング一覧

タイミング名

指定するクラス変数名

説明

初期化時

JFCObjectLoader.INIT_CREATION

addメソッドが実行された時点でオブジェクトを生成します。

realizeObjectを呼出し時

JFCObjectLoader.DELAYED_CREATION

realizeObjectメソッドを呼び出し時にオブジェクトを強制生成します。
大量オブジェクトを持つアプリケーション、アプレットでは通常はこの生成タイミングを推奨します。

バックグラウンド

JFCObjectLoader.BACKGROUND_CREATION

addメソッドが実行された時、アプリケーション、アプレットとは別スレッドでオブジェクトを生成します。
起動性能重視であり、頻繁に利用し、かつ、サイズが大きいオブジェクトの取得速度を向上させたい場合に指定します。

表4.14 破棄タイミング一覧

タイミング名

指定するクラス変数名

説明

releaseObject呼出し時

JFCObjectLoader.TEMPORARY_INSTANCE

releaseObjectメソッドを呼び出したときに、オブジェクトをメモリから破棄します。
メモリ資源を節約したいアプリケーション、アプレットで利用します。

releaseObject呼出し時にバッファに保持

JFCObjectLoader.BUFFERED_INSTANCE

releaseObjectメソッドを呼び出したときに、オブジェクトをバッファに保持します。バッファがいっぱいになった場合は、一番最初に保持したオブジェクトから順にメモリから破棄します。
バッファに保持するオブジェクト数はJFCObjectLoaderManagerのsetReleaseBufferSizeメソッドで設定します。デフォルトは10です。

常に保持

JFCObjectLoader.PERMANENT_INSTANCE

各オブジェクトを管理するJFCObjectLoaderManagerの派生クラスが破棄されるまでオブジェクトをメモリ上に保持します。
通常はアプリケーション、アプレットの終了時と等しくなります。

注意

オブジェクト制御機能を利用するアプレットについて

オブジェクト制御機能を利用するアプリケーションあるいはアプレットは、JFCObjectLoaderのsetURLsまたはaddURLメソッドを利用して、他の位置に保存しているオブジェクトクラスをロードすることが可能です。アプレットで利用する場合、そのアプレットをダウンロードしてきたサーバ以外のホストとの通信ができないため、URLに設定できるのはアプレットがあるサーバのみとなります。アプリケーションでは、この制限はありません