(57)【要約】【課題】プログラム間の依存関係を考慮せずにミドルウェアを更新すると、更新対象のミドルウェアと依存関係にあるプログラムに悪影響を与える可能性がある。【解決手段】アプリケーションプログラム毎にミドルウェア選択情報を生成し、アプリケーションプログラム実行時にミドルウェア選択情報を参照して適したミドルウェアをロードすることにより、アプリケーションプログラムの実行性能の向上を図る。また、アプリケーションプログラム実行時にミドルウェアの利用状況を計測実施することで、ミドルウェア選択情報を更新する。【選択図】図７
2008059494.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムやミドルウェアを取得して、実行することが可能な情報端末において、
アプリケーションプログラムとミドルウェアと前記ミドルウェアに関するミドルウェア選択情報を記憶するデータ記憶部と、
アプリケーションプログラム及び前記アプリケーションプログラムの実行に必要なミドルウェアを一時的に記憶するための実行可能プログラム一時記憶部と、
アプリケーションプログラムの起動要求を受付け、前記起動対象のアプリケーションプログラムを前記データ記憶部より読み込み、前記実行可能プログラム一時記憶部に展開する展開手段と、
前記ミドルウェア選択情報を前記データ記憶部より読み出し、ミドルウェアの評価値を算出するミドルウェア選択情報評価手段と、
ロード対象のミドルウェアが複数存在する場合、前記ミドルウェア選択情報評価手段によって算出したミドルウェアの評価値に基づいてロードするミドルウェアを決定するミドルウェア選択手段と、
前記ミドルウェア選択手段にて決定したミドルウェアを前記データ記憶部よりロードし、前記実行プログラム一時記憶部へ展開するミドルウェアロード手段とを備え、
前記ミドルウェア選択情報評価手段は、前記ミドルウェア選択情報に含まれる性能情報及びプロファイル情報に基づいてミドルウェアの評価値を算出することを特徴とするミドルウェア選択制御装置。
【請求項２】
取得したアプリケーションプログラムのサイズを算出し、前記データ記憶部に前記アプリケーションプログラムのサイズ分の空き領域が存在するかどうかの確認を行い、前記アプリケーションプログラムを前記データ記憶部へ保存するアプリ保存手段と、
前記アプリケーションプログラムの実行に必要なミドルウェアに関する情報の生成を行う解析手段と、
前記データ記憶部に格納されたアプリケーションプログラムについて、前記アプリケーションプログラムに対応するミドルウェア選択情報の生成及び更新を行うミドルウェア選択情報生成・更新手段と、
ミドルウェアのベンチマーク性能情報を評価するためのベンチマーキング評価手段とを備え、
前記ミドルウェア情報生成・更新手段は、前記ベンチマーキング評価手段へ性能情報の更新を行うミドルウェア選択情報を渡し、
前記ベンチマーキング手段は、前記ミドルウェア選択情報によって管理されるミドルウェアの性能を測定するためのベンチマークアプリケーションを実行し、ベンチマークアプリケーションによる性能測定結果を前記ミドルウェア選択情報の性能情報へ反映して、前記データ記憶部に格納された性能情報反映前のミドルウェア選択情報を上書きすることを特徴とする請求項１に記載のミドルウェア選択制御装置。
【請求項３】
画像情報の展開や音声情報の展開のようにベンチマークアプリケーションによる性能測定が困難な機能を提供するミドルウェアの性能を評価するユーザ評価手段をさらに備え、
前記ミドルウェア情報生成・更新手段は、前記ユーザ評価手段へ性能情報の更新を行うミドルウェア選択情報を渡し、
前記ユーザ評価手段は、前記ミドルウェア選択情報によって管理されるミドルウェアの性能をユーザによって評価させるために、ユーザインターフェースを通じてユーザ入力を受付け、前記ユーザ入力の内容を前記ミドルウェア選択情報の性能情報へ反映して、前記データ記憶部に格納された性能情報反映前のミドルウェア選択情報を上書きすることを特徴とする請求項２に記載のミドルウェア選択制御装置。
【請求項４】
ミドルウェアが提供する機能群の優先順位をユーザ入力によって指定する機能ランキング手段をさらに備え、
前記ミドルウェア情報生成・更新手段は、前記機能ランキング手段へ性能情報の更新を行うミドルウェア選択情報を渡し、
前記機能ランキング手段は、前記ミドルウェア選択情報によって管理されるミドルウェアが有する機能群の優先順位をユーザによって決定させるために、ユーザインターフェースを通じてユーザ入力を受付け、前記ユーザ入力の内容を前記ミドルウェア選択情報の性能情報へ反映して、前記データ記憶部に格納された性能情報反映前のミドルウェア選択情報を上書きすることを特徴とする請求項２に記載のミドルウェア選択制御装置。
【請求項５】
前記実行可能プログラム一時記憶部に記憶されたアプリケーションプログラムを実行する実行環境において、前記アプリケーションプログラム実行中に前記実行可能プログラム一時記憶部に記憶されたミドルウェアの機能を使用した回数、及び使用した時間を計測するプロファイリング手段をさらに備え、
前記プロファイリング手段は、前記アプリケーションプログラムの終了のタイミングにおいて、前記アプリケーションプログラムに対応するミドルウェア選択情報を前記データ記憶部より読み出し、前記ミドルウェアの機能を使用した回数、及び使用した時間を前記ミドルウェア選択情報のプロファイル情報へ反映して、前記データ記憶部に格納されたプロファイル情報反映前のミドルウェア選択情報を上書きすることを特徴とする請求項１に記載のミドルウェア選択制御装置。
【請求項６】
前記アプリ保存手段において、外部情報提供部より取得したアプリケーションプログラムのサイズを算出し、前記データ記憶部に前記アプリケーションプログラムのサイズ分の空き領域が存在するかどうかの確認を行い、空き領域が存在しない場合、前記アプリケーションプログラムを前記データ記憶部へ保存するために必要な領域を確保するため、ミドルウェアを削除する削除手段をさらに備え、
前記削除手段は、前記データ記憶部に記憶されたアプリケーションプログラムに対応するミドルウェア選択情報を利用して算出した評価値と、アプリケーションプログラムの重み情報を算出し、さらに前記評価値と前記重み情報に基づいて、ミドルウェアの削除優先度を算出し、前記削除優先度に基づいて削除対象のミドルウェアを決定することを特徴とする請求項２のミドルウェア選択制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションプログラムを実行する情報端末において、起動するアプリケーションプログラムに適したミドルウェアを選択してロードするミドルウェア選択制御装置に関する。
【背景技術】
【０００２】
近年、携帯電話に代表される、通信機能を有し、持ち運びが可能な情報端末において、Ｊａｖａ（登録商標）が広く利用されている。このように広く利用されることとなった大きな要因として、アプリケーションプログラムの実行環境としてのＪａｖａ（登録商標）の特徴である、プラットフォーム非依存性、豊富なクラスライブラリ、セキュアな実行環境が挙げられる。
【０００３】
Ｊａｖａ（登録商標）言語で記述されたアプリケーションプログラムは、Ｊａｖａ（登録商標）コンパイラによってクラスファイルに変換される。このクラスファイルは、Ｃ言語等で記述され、特定のターゲット向け（例えばＷｉｎｄｏｗｓ（登録商標））にコンパイル・リンクされることで生成された実行形式ファイルと異なり、単体では実行することができない。このクラスファイル形式に変換されたＪａｖａ（登録商標）言語によるアプリケーションプログラム（以下「Ｊａｖａ（登録商標）アプリ」）を実行するためには、Ｊａｖａ（登録商標）ＶＭと呼ばれるソフトウェア及びクラスライブラリが必要となる。
【０００４】
Ｊａｖａ（登録商標）ＶＭとは、Ｊａｖａ（登録商標）アプリを解釈・実行するためのソフトウェアであり、Ｊａｖａ（登録商標）実行環境を搭載した情報端末の機能に依存する処理をクラスファイルから分離する役割を担っている。このため、Ｊａｖａ（登録商標）アプリは、複数のターゲット向けのＪａｖａ（登録商標）ＶＭ上において実行することができる。
【０００５】
クラスライブラリとは、Ｊａｖａ（登録商標）実行環境を搭載した情報端末が有する機能（例えば画像の表示やサウンドの鳴動等）等、特定の機能毎に部品化されたプログラム（クラスファイル及び実行形式ファイルで構成される）を取りまとめたものであり、これら機能を利用するための手順を抽象化・簡略化している。
【０００６】
Ｊａｖａ（登録商標）アプリ作成者は、クラスライブラリを利用することによって、複雑な手順を行うことなく、ゲームやビジネスアプリケーション等、情報端末が有する機能を活用したＪａｖａ（登録商標）アプリを作成することが可能となる。
【０００７】
また、Ｊａｖａ（登録商標）アプリは、上記の通り情報端末のＯＳ上で直接実行可能なプログラムではなく、Ｊａｖａ（登録商標）ＶＭによって解釈・実行される。このため、Ｊａｖａ（登録商標）アプリによる情報端末上の重要な資源（ファイルやメモリ等）へのアクセスを、Ｊａｖａ（登録商標）ＶＭによって細かくコントロールすることが可能である。
【０００８】
本特徴は、ネットワーク経由でアプリケーションプログラムをダウンロード、インストールし、実行することを想定している携帯電話などの情報端末向けアプリケーション実行環境に適している。つまり、ネットワーク経由で取得して実行したＪａｖａ（登録商標）アプリが不正なＪａｖａ（登録商標）アプリであり、予期せぬ処理、悪意を持った処理を行った場合でも、情報端末上の重要な資源へのアクセスを制御することが可能となり、これら重要な資源の破壊や、保持されている情報の漏洩に対するセキュリティ強度を高めることができる。
【０００９】
アプリケーションプログラムダウンロード時に、アプリケーションプログラム配信サーバにて情報端末のアプリケーション実行環境の性能に基づいてアプリケーションプログラムの最適化を実施することで、その情報端末にカスタマイズされたアプリケーションプログラムのダウンロードを実現する技術が存在する（例えば、特許文献１参照）。つまり、特定のアプリケーションに適したミドルウェア（Ｊａｖａ（登録商標）ではクラスライブラリがこれに相当する）を取得し、既存のミドルウェアと置き換えることにより、アプリケーションプログラムの実行時性能を改善することが可能となる。
【特許文献１】特開２００３−２１６４３４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、前記従来の技術では、特定のアプリケーションプログラムの実行性能の向上と引き換えに、他のアプリケーションプログラムの実行性能を低下させてしまう課題を有していた。ミドルウェアは、不特定多数のアプリケーションプログラムへ機能を提供するプログラムであるため、特定のアプリケーションプログラムの性能改善を目的としてミドルウェアを更新することで、そのミドルウェアを利用していた他のアプリケーションプログラム群へ負の影響（性能劣化等）を与える可能性があるためである。
【００１１】
本発明は、前記従来の課題を解決するもので、ミドルウェアのロードを伴うアプリケーションプログラムの起動時において、ミドルウェアがアプリケーションプログラムへ提供する機能群の性能値、及びユーザのアプリケーションプログラムの使い方、の両者を考慮して、ロード可能なミドルウェア群の中からアプリケーションプログラムの実行性能を高めるミドルウェアを優先的に選択してロードすることが可能なミドルウェア選択制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
前記従来の課題を解決するために、本発明のミドルウェア選択制御装置は、アプリケーションプログラムとミドルウェアと前記ミドルウェアに関するミドルウェア選択情報を記憶するデータ記憶部と、アプリケーションプログラム及び前記アプリケーションプログラムの実行に必要なミドルウェアを一時的に記憶するための実行可能プログラム一時記憶部と、アプリケーションプログラムの起動要求を受付け、前記起動対象のアプリケーションプログラムを前記データ記憶部より読み込み、前記実行可能プログラム一時記憶部に展開する展開手段と、前記ミドルウェア選択情報を前記データ記憶部より読み出し、ミドルウェアの評価値を算出するミドルウェア選択情報評価手段と、ロード対象のミドルウェアが複数存在する場合、前記ミドルウェア選択情報評価手段によって算出したミドルウェアの評価値に基づいてロードするミドルウェアを決定するミドルウェア選択手段と、前記ミドルウェア選択手段にて決定したミドルウェアを前記データ記憶部よりロードし、前記実行プログラム一時記憶部へ展開するミドルウェアロード手段とを備え、前記ミドルウェア選択情報評価手段は、前記ミドルウェア選択情報に含まれる性能情報及びプロファイル情報に基づいてミドルウェアの評価値を算出することを特徴とする。
【００１３】
本構成によって、アプリケーションプログラム起動時において、ミドルウェアの機能群の性能値だけではなく、プロファイル情報に基づくユーザのアプリケーションプログラムの使い方が加味された、ユーザのアプリケーションプログラムの利用に即したミドルウェアをロードすることが可能となる。
【発明の効果】
【００１４】
本発明のミドルウェア選択制御装置によれば、アプリケーションプログラム起動時において、ミドルウェアの機能群の性能値だけではなく、プロファイル情報に基づくユーザのアプリケーションプログラムの使い方が加味された、ユーザのアプリケーションプログラムの利用に即したミドルウェアをロードすることが可能となり、ユーザが高頻度で利用するアプリケーションプログラムの実行時性能をより高めることができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施形態について、図面を参照しながら説明する。
【００１６】
図１は、本発明の実施の形態におけるミドルウェア選択制御装置を備えた情報端末の構成を示す図である。
【００１７】
情報端末１００は、データ記憶部１０１と、データ入出力部１０２と、プログラム管理部１０３と、処理部１０４と、入力受付部１０９とを備えている。
【００１８】
データ記憶部１０１は、実行対象のアプリケーションプログラム、ミドルウェア、及びミドルウェア選択情報を記憶する。
【００１９】
データ入出力部１０２は、外部情報提供部２００からのデータを受け取りプログラム管理部１０３に通知する機能と、プログラム管理部１０３からのデータを受け取り外部情報提供部２００に通知する機能を有している。
【００２０】
プログラム管理部１０３は、プログラム実行管理部１０７とプログラム保存管理部１０８とを備えている。プログラム実行管理部１０７は、入力受付部１０９からアプリケーションプログラムの起動要求を受け取り、実行対象のアプリケーションプログラムをデータ記憶部１０１からロードする。また、実行対象のアプリケーションプログラムに関するロード対象のミドルウェアが複数存在する場合、ロードするミドルウェアを選択決定し、選択したミドルウェアをデータ記憶部よりロードして、実行プログラム一時記憶部１０５へ展開する。なお、ミドルウェアの選択決定においては、ミドルウェアがアプリケーションプログラムへ提供する機能群の性能値、及びユーザのアプリケーションプログラムの使い方（使用回数や使用時間など）を示すミドルウェア選択情報を用いて、ロード可能なミドルウェア群の中から選択を行う。
【００２１】
プログラム保存管理部１０８は、データ入出力部１０２から受け取ったアプリケーションプログラムのインストールや、インストールしたアプリケーションプログラムに対応するミドルウェア選択情報の作成を行なう。
【００２２】
処理部１０４は、実行ププログラム一時記憶部１０５と実行環境部１０６を備えている。実行プログラム一時記憶部１０５は、アプリケーションプログラムの起動時に、プログラム実行管理部１０７がロードして展開した結果（実行対象のアプリケーションプログラム、及び前記アプリケーションプログラムの実行に必要なミドルウェアの展開結果）を一時的に記憶する。実行環境１０６は、実行可能プログラム一時記憶部１０５から必要な情報を取得し、実行対象のアプリケーションを実行処理する。具体的には、Ｊａｖａ（登録商標）ＶＭなどがこれに相当する。
【００２３】
入力受付部１０９は、ユーザやアプリケーションプログラムよりアプリケーションプログラムの状態変更要求を受け付け、プログラム管理部１０３に通知する。
【００２４】
また、外部情報提供部２００は、データ記憶部２０１と、データ入出力部２０２を備えている。
【００２５】
情報端末１００は、外部情報提供部２００より、それぞれの機器が有するデータ入出力部（１０２、２０２）を経由してデータの受け渡しが可能である。情報端末１００−外部情報提供部２００間のデータの受け渡しについては、外部情報提供部２００がＳＤカードなどの記憶メディアであり、情報端末１００へ記録メディアを挿入してデータを取得する形態や、外部情報提供部２００が外部記憶装置（ＨＤＤ）であり、情報端末１００と回線を介して通信を行うことによりデータの受け渡しを行う形態が挙げられる。また、外部情報提供部２００がデータ配信サーバであり、情報端末１００とインターネットなどのネットワーク経由で通信を行うことによりデータの受け渡しを行う形態であってもよい。
【００２６】
これにより、情報端末１００は、外部情報提供部２００から新しいアプリケーションプログラムやミドルウェアをダウンロードしてインストールする際に、アプリケーションプログラムの起動時において、ミドルウェアがアプリケーションプログラムへ提供する機能群の性能値及びユーザのアプリケーションプログラムの使い方の両者を考慮して、ロード可能なミドルウェア群の中からアプリケーションプログラムの実行性能を高めるミドルウェアを優先的に選択してロードすることが可能となる。
【００２７】
なお、以下の説明では、アプリケーションプログラムの例としてＪａｖａ（登録商標）アプリ、ミドルウェアの例としてクラスライブラリ、もしくはクラスライブラリに含まれるクラス群、を挙げて説明しているがこれは一例であり、例えばＬｉｎｕｘ（Ｒ）、Ｗｉｎｄｏｗｓ（登録商標）等の実行環境であってもよい。
【００２８】
また、本実施の形態における情報端末１００は、クラスライブラリについてもＪａｖａ（登録商標）アプリと同様、インターネット経由の通信でコンテンツ配信サーバ等よりダウンロードする等、外部情報提供部２００からのデータの受信を行うことにより、データ記憶部１０１へ格納可能である。
【００２９】
また、本発明は、同等の機能を有するミドルウェア群より、アプリケーションプログラムの実行に適したミドルウェアをロードすることを特徴とするものであるため、データ記憶部１０１は、同等の機能を有するミドルウェア群を管理する機能を有している。つまり、ミドルウェアの置き換えは行わず、性能が異なるが同等の機能を有する複数のミドルウェアを保持しておき、また、これらミドルウェアの性能を事前にベンチマークアプリケーションで測定しておくことにより、ユーザもしくはアプリケーションプログラムがアプリケーションプログラム起動時に適切なミドルウェアを選択してロードすることが可能となる。新たなミドルウェアの導入により既存のミドルウェアの上書きが行われないため、ユーザもしくはアプリケーションプログラムは、ベンチマークアプリケーションによる性能測定結果を参考に、アプリケーションプログラム起動時に適切なミドルウェアを選択することで、他のアプリケーションプログラムがどのミドルウェアをロードしたかに関わらず、自アプリケーションプログラムの実行性能を最適化するミドルウェアをロードすることができる。
【００３０】
このミドルウェア群の管理の実現例としては、例えばＬｉｎｕｘ（Ｒ）における共有ライブラリのバージョン管理が挙げられる。Ｌｉｎｕｘ（Ｒ）では、ある機能を提供する共有ライブラリ（例えばｈｔｔｐ.ｓｏ）について複数のバージョンのファイルを保持する場合、共有ライブラリの名前の末尾にバージョンを示す文字列を追加する取り決めとなっている（例えば、ｈｔｔｐ．ｓｏ．１．０（バージョン１．０のファイル）、ｈｔｔｐ．ｓｏ．１．１（バージョン１．１のファイル））。本実施の形態においては、同一の機能のクラスが複数存在する状況となった場合（例えば、既にデータ記憶部１０１のクラスライブラリに格納されているクラスと、ダウンロードしたクラスライブラリに含まれるクラスの完全名が一致する場合）、クラスの上書きは行わず、以下の方法により、クラスを多重管理できるようにファイル／ディレクトリを再構成する。
【００３１】
例えばクラスｊａｖａ．ｉｍａｇｅ．ＩｍａｇｅＬｏａｄｅｒクラスがデータ記憶部にファイル／ｕｓｒ／ｊａｖａ／ｌｉｂ／ｊａｖａ／ｉｍａｇｅ／ＩｍａｇｅＬｏａｄｅｒ．ｃｌａｓｓとして格納されている状態で、ｊａｖａ．ｉｍａｇｅ．ＩｍａｇｅＬｏａｄｅｒクラスを含むクラスライブラリをダウンロードした場合は、元ファイルの名称をＩｍａｇｅＬｏａｄｅｒ．ｃｌａｓｓ．１へリネームした上でディレクトリ／ｕｓｒ／ｊａｖａ／ｌｉｂ／ｊａｖａ／ｉｍａｇｅ／ＩｍａｇｅＬｏａｄｅｒを生成し、ＩｍａｇｅＬｏａｄｅｒ．ｃｌａｓｓ．１を生成したディレクトリへ移動させる。また、ダウンロードしたクラスライブラリに含まれるクラスｊａｖａ．ｉｍａｇｅ．ＩｍａｇｅＬｏａｄｅｒは、ＩｍａｇｅＬｏａｄｅｒ．ｃｌａｓｓ．２として、同ディレクトリに格納する。
【００３２】
以上により、同一の機能のクラス群をデータ記憶部にて保持できる。また、クラスのロード時においては、ロード対象のクラスがディレクトリであることからロード対象のクラスが多重管理されていることを感知することが可能となる。後述のミドルウェア選択情報作成・更新手段は、これを利用して、ミドルウェア選択情報を生成する。
【００３３】
以下、本発明に実施の形態におけるミドルウェア選択制御装置を備えた情報装置の処理手順について説明する。
【００３４】
（１）ミドルウェア選択情報の作成・更新処理
図２から図６を用いて、アプリケーションプログラムをダウンロードし、Ｊａｖａ（登録商標）アプリ実行時にロードするクラスライブラリを選択するための情報であるミドルウェア選択情報を作成、又は更新する手順について説明する。なお、図３は、前述した本発明の情報端末の構成をより詳細に示したものである。まず、情報端末３６０は、Ｊａｖａ（登録商標）アプリのダウンロードの指示を受け取り、処理を開始する。
【００３５】
データ入出力部３５０のアプリ取得手段３５１は、外部情報提供部３７０（コンテンツ配信サーバ）からＪａｖａ（登録商標）アプリ３３０をダウンロードし、受け取ったＪａｖａ（登録商標）アプリ（３３０）を取得アプリ保存手段３５２へ書き込む（ステップＳ１１）。ここでは、Ｊａｖａ（登録商標）アプリ（３３０）は、ＪＡＲファイル（３３１）と管理ファイル（３３２）とから構成されている。
【００３６】
データ入出力部３３０にてダウンロードされたＪａｖａ（登録商標）アプリのインストール、およびインストールしたＪａｖａ（登録商標）アプリに対応するミドルウェア選択情報の作成は、プログラム保存管理部３０６にて行われる。
【００３７】
アプリ保存管理部３０６のアプリ保存手段３０１は、取得アプリ保持手段３５２にＪａｖａ（登録商標）アプリ（３３０）が書き込まれると、ダウンロードされたＪａｖａ（登録商標）アプリ（３３０）のサイズを取得し、データ記憶部３２０に前記Ｊａｖａ（登録商標）アプリ（３３０）のサイズ分の空き領域が存在するかどうかを確認する（ステップＳ１２）。
【００３８】
前記Ｊａｖａ（登録商標）アプリ（３３０）のサイズ分の空き領域が存在しない場合（ステップＳ１２が空きなし）、アプリ保存手段３０１は、削除手段３０５に通知し、削除手段３０５が、図１０に示したミドルウェアの削除処理を実行する。図１０に示したミドルウェアの削除処理の詳細は、後に説明する。
【００３９】
前記Ｊａｖａ（登録商標）アプリ（３３０）のサイズ分の空き領域が存在する場合（ステップＳ１２が空きあり）、アプリ保存手段３０１は、データ記憶部３２０にＪａｖａ（登録商標）アプリ（３３０）を書き込み、解析手段３０２へＪａｖａ（登録商標）アプリ１（３２５）がインストールされたことを通知する（ステップＳ１４）。この時、Ｊａｖａ（登録商標）アプリ（３３０）を取得アプリ保持手段３５２からデータ記憶部３２０に移動（ｍｏｖｅ）しても、コピー（ｃｏｐｙ）してもよい。なお、ここでは、データ記憶部３２０に書き込まれたＪａｖａ（登録商標）アプリをＪａｖａ（登録商標）アプリ１（３２５）と示す。
【００４０】
また、上記説明では、Ｊａｖａ（登録商標）アプリのサイズを取得するために、Ｊａｖａ（登録商標）アプリをダウンロード後、アプリ保存手段３０１にてサイズの計算を行っているが、Ｊａｖａ（登録商標）アプリの構成要素である管理ファイル（３３２）にＪａｖａ（登録商標）アプリのサイズを含む場合においては、アプリ取得手段３５１は、管理ファイル（３３２）のみを取得して取得アプリ保持手段３５２へ通知し、アプリ保存手段３０１は、管理ファイル（３３２）よりＪａｖａ（登録商標）アプリのサイズを取得する形式としてもよい。この場合、Ｊａｖａ（登録商標）アプリの本体であるＪＡＲファイル（３３１）をダウンロードすることなく、Ｊａｖａ（登録商標）アプリのサイズがわかるため、特に携帯電話のように通信に対して従量課金されるような情報端末においては有効である。
【００４１】
解析手段３０２は、アプリ保存手段３０１からの通知を受けると、Ｊａｖａ（登録商標）アプリ１（３２５）が利用するクラスライブラリの解析を行う（ステップＳ１５）。具体的には、ＪＡＲファイル（３２６）をクラス群に展開した後、これらのクラスが利用するクラス群のうちクラスライブラリ（３２２）に属するものを抽出してリスト化し、これをミドルウェア選択情報作成・更新手段３０３へ通知する。
【００４２】
ミドルウェア選択情報作成・更新手段３０３は、解析手段３０２からの通知を受けると、データ記憶部３２０内のミドルウェア選択情報群（３２４）を検索し、Ｊａｖａ（登録商標）アプリ１用のミドルウェア選択情報（３４０）が存在するかどうかを確認する（ステップＳ１６）。これが存在しない場合（ステップＳ１６がなし）、ミドルウェア選択情報作成・更新手段３０３は、Ｊａｖａ（登録商標）アプリ１用のミドルウェア選択情報（３４０）を初期状態で生成する（ステップＳ１７）。ここでは、初期状態として、Ｊａｖａ（登録商標）アプリ１用のミドルウェア選択情報（３４０）の構成要素（プロファイル情報（３４１）、性能情報（３４２）、アプリケーション情報（３４３））を空（ＮＵＬＬ）とするものとする。なお、初期状態として予め保持しているデフォルト値を設定することもできる。
【００４３】
また、ミドルウェア選択情報作成・更新手段３０３は、上記のようにＪａｖａ（登録商標）アプリダウンロードのタイミングでミドルウェア選択情報の生成を行うだけではなく、入力受付部３９０からミドルウェア選択情報更新の要求を受け取ることにより、ミドルウェア選択情報を更新する場合においても利用される。なお、ミドルウェア選択情報を更新する際についても、以降の処理は、ミドルウェア選択情報生成時と同様である。
【００４４】
図５に、ミドルウェア選択情報の一例を示している。ミドルウェア選択情報は、アプリケーション情報とクラス情報とから構成される情報であり、クラス情報として、プロファイル情報と性能情報を含んでいる。また、情報端末が保持するＪａｖａ（登録商標）アプリに対応して存在する。
【００４５】
アプリケーション情報は、アプリケーションプログラムの起動回数、起動時間等、ユーザがアプリケーションプログラムをどの程度利用しているかを示す数値情報を保持するものであり、ミドルウェア選択情報内に一つ存在する。
【００４６】
プロファイル情報は、ミドルウェアがアプリケーションプログラムへ提供する機能群について、アプリケーションプログラムが当該機能をどの程度利用するかを示す数値情報を保持するものであり、アプリケーションプログラムがロードするミドルウェア群についてひとつずつ存在する。
【００４７】
性能情報は、例えばベンチマークアプリケーションによる性能測定結果のようにミドルウェアの機能群の性能を示す数値情報を保持するものであり、アプリケーションプログラムがロードするミドルウェア群について、各ミドルウェアが多重管理するファイル数分存在する。
【００４８】
プロファイル情報及び性能情報は、その目的上、多重管理されているミドルウェアに関するもののみ存在する。例えば、Ｊａｖａ（登録商標）アプリ１の実行に必要なクラスが、ＣｌａｓｓＡ（ＣｌａｓｓＡ（１）、ＣｌａｓｓＡ（２）として多重管理されている）、ＣｌａｓｓＣ（多重管理されていない）である場合は、Ｊａｖａ（登録商標）アプリ１のミドルウェア選択情報には、ＣｌａｓｓＡのプロファイル情報及び、性能情報のみ存在する。
【００４９】
ミドルウェア選択情報が保持する上記の各種情報は、後述の（２）アプリケーション実行処理において、Ｊａｖａ（登録商標）アプリが多重管理されているクラス群のうち、どのクラスをロードすることでＪａｖａ（登録商標）アプリの実行時性能を高めることができるかを調べるために利用される。
【００５０】
次に、ミドルウェア選択情報作成・更新手段３０３は、解析手段３０２から受け取ったクラスライブラリに属するクラス群のリストを評価手段３０４へ通知し、Ｊａｖａ（登録商標）アプリ１用のミドルウェア選択情報（３４０）の性能情報（３４２）の生成を依頼し、評価手段３０４は、性能評価を行ない（ステップＳ１８）、性能情報（３４２）を生成・更新を行なう（ステップＳ１９）。以下、評価手段３０４での処理について詳細に説明する。
【００５１】
評価手段３０４は、受け取ったリストに含まれるクラス群のメタデータを、データ記憶部３２０のメタデータ群（３２３）から読み込む。対象のクラスのメタデータがデータ記憶部３２０のメタデータ群（３２３）に格納されていない場合、評価手段３０４は、クラスファイルの解析を行い、機能群の名称とデフォルトの評価手段（ベンチマーキング手段）を記述したＸＭＬ形式ファイルとして新規生成し、メタデータ群（３２３）へ格納する。なお、上記のようにデフォルトのメタデータを作成するかわりに、無線通信を利用して外部コンテンツサーバよりダウンロードする等、データ入出力部にて外部情報提供部より取得するようにしてもよい。また、上記でが、デフォルトの評価手段をベンチマーキング手段としたが、ベンチマーキング手段以外であってもよい。
【００５２】
図４に、メタデータの一例を示している。メタデータは、クラスが提供する機能群の名称（４０１）、用途（４０２）、評価方法（４０３）等を記述したファイルである。なお図４では、メタデータをＸＭＬ形式で記述しているが、評価手段４０２によって解釈できる形式であれば他の形式であってもよい。
【００５３】
次に評価手段３０４は、Ｊａｖａ（登録商標）アプリ１のミドルウェア選択情報（３４０）の性能情報（３４２）に属する各機能の評価方法（５０１）に従って、ベンチマーキング評価手段３１０、ユーザ評価手段３１１、機能ランキング手段３１２のいずれか、もしくは２つ以上の手段を利用して、Ｊａｖａ（登録商標）アプリ１のミドルウェア選択情報（３４０）の性能情報（３４２）を生成・更新する。
【００５４】
以下、各評価方法（ペンチマーキング評価手段３１０、ユーザ評価手段３１１、機能ランキング手段３１２）ついて、説明する。
【００５５】
ａ）ベンチマーキング評価手段
多重管理されている同一完全名のクラス群について、各クラスが提供する機能群の性能を計測するために、そのクラスのベンチマーク用Ｊａｖａ（登録商標）アプリを実行する。ベンチマーク用Ｊａｖａ（登録商標）アプリの実行は、後述した手順で行われるが、ベンチマーキングの対象となるクラスについては、図８および図９に後述したミドルウェア選択手段７０３、ミドルウェア選択情報評価手段７０４によるクラス選択に従わず、評価対象のクラスを組み込む。
【００５６】
なお、ベンチマーク用Ｊａｖａ（登録商標）アプリはデータ記憶部３２０のＪａｖａ（登録商標）アプリ群（３２３）より取得されるが、ここに存在しない場合については、データ入出力部３５０及びアプリ保存手段３０１を利用して、上記のＪａｖａ（登録商標）アプリダウンロードしてインストールする手順と同様の処理手順により、外部情報提供部３７０より取得する。外部情報提供部３７０からの取得に失敗した場合は、ベンチマーキング評価を実施しない。
【００５７】
Ｊａｖａ（登録商標）アプリ１のミドルウェア選択情報（３４０）の性能情報（３４２）に含まれる全クラスについてベンチマーキングが完了した後、各クラスの機能群に対するベンチマークスコアをミドルウェア選択情報（３４０）の性能情報（３４２）（詳細には、性能情報に属するベンチマーク性能値（５０３））へ反映する。
【００５８】
ｂ）ユーザ評価手段
多重管理されている同一完全名のクラス群について、画質や音質などユーザの嗜好が性能評価に影響するような機能を提供するクラスの性能評価をおこなうために、メタデータに記述された性能評価方法に従ってユーザ確認を実施する。
【００５９】
図６は、本評価手段による性能評価の例である。
【００６０】
まず、ユーザ評価手段３１１は、ユーザ評価メニュー（６０１）の起動を行う。ここでユーザは、ユーザ評価メニュー（６０１）内のＪａｖａ（登録商標）アプリリスト（６０２）から、性能評価を行うＪａｖａ（登録商標）アプリの選択を行う。
【００６１】
次に、機能リスト（６０３）から、性能評価対象の機能の選択を行う。なお、機能リスト（６０３）に表示する機能は、その機能の性能（画質や音質等）を評価する手段が情報端末３６０に実装されているものとする。
【００６２】
最後に、クラスリスト（６０４）から、機能リスト（６０３）にて選択した機能について、ユーザによる指定に基づき、その機能を提供するクラスの順位付けを行う。
【００６３】
ここで指定された順位をミドルウェア選択情報（３４０）の性能情報（３４２）（詳細には、性能情報に属するクォリティ性能値（５０４））へ反映する。
【００６４】
ｃ）機能ランキング手段
対象のクラスが提供する機能群のうち、Ｊａｖａ（登録商標）アプリの実行においてユーザが重視する機能（機能の優先度）を決定するために、クラスが提供する機能の一覧を表示した上で、ユーザ入力により機能の優先度を決定し、ミドルウェア選択情報（３４０）の性能情報（３４２）（詳細には、性能情報に属するユーザ入力優先度（５０５））へ反映する。
【００６５】
上記ａ）、ｂ）の目的は、同一完全名を持つクラスが複数存在する場合において、どのクラスが優れているかを選択する上で有用となる情報の生成することであるが、本項目の目的はクラスが有する機能群の優先度の決定であり、上記ａ）、ｂ）による評価の補助情報として利用される。
【００６６】
（２）アプリケーション実行処理
図７と図８を用いて、アプリケーションプログラムを起動時に、ミドルウェア選択情報に従って適したミドルウェアを選択してロードし、アプリケーションを実行する手順について説明する。なお、図８は、前述した本発明の情報端末の構成をより詳細に示したものである。
【００６７】
また、以下の説明では、ユーザがＪａｖａ（登録商標）アプリ１の実行要求を発行し、Ｊａｖａ（登録商標）アプリ１実行に必要なクラスであるＣｌａｓｓＡ（ミドルウェア選択情報のクラス情報に含まれており、クラスライブラリにおいて、ＣｌａｓｓＡ（１）、ＣｌａｓｓＡ（２）として管理されている）、ＣｌａｓｓＣ（ミドルウェア選択情報のクラス情報に含まれない）をロードするものとする。
【００６８】
また、Ｊａｖａ（登録商標）アプリは実行過程において、クラスライブラリに含まれるクラス群によって提供される機能群を利用する。Ｊａｖａ（登録商標）言語においては、これらの機能はＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）として提供される。例えばグラフィックス系の機能群は、Ｇｒａｐｈｉｃｓクラスとして定義されており、このＧｒａｐｈｉｃｓクラスは線分描画ＡＰＩや、イメージ描画ＡＰＩ等、各種描画用ＡＰＩ群を含んでいるものとする。
【００６９】
まず、情報端末７８０の入力受付部７６０は、ユーザよりＪａｖａ（登録商標）アプリ１の起動要求を受け付け、処理を開始する。入力受付部７６０は、Ｊａｖａ（登録商標）アプリ１の起動要求を、プログラム実行管理部７０５の展開手段７０１へ通知する。
【００７０】
展開手段７０１は、入力受付部７６０よりＪａｖａ（登録商標）アプリ１実行要求を受け取ると、データ記憶部７１０に格納されたＪａｖａ（登録商標）アプリ群（７１３）から、実行対象のＪａｖａ（登録商標）アプリ１（７１４）を読み込む（ステップＳ２１）。
【００７１】
次に、展開手段７０１は、実行対象のＪａｖａ（登録商標）アプリ１（７１４）のＪＡＲファイルの展開処理を行い、実行可能プログラム一時記憶部７４０へ、展開結果のコピー（７４１）を書き込む（ステップＳ２２）。展開手段７０１は、ミドルウェアロード手段７０２へ、Ｊａｖａ（登録商標）アプリ１（７１４）の実行に必要なクラス群の読み出しを要求する。
【００７２】
ミドルウェアロード手段７０２は、展開手段７０１からの要求に従い、図９に示したミドルウェアのロード処理を実行することで、Ｊａｖａ（登録商標）アプリ１（７１４）の実行に必要なクラス群をクラスライブラリ（７１２）から読み出し、これらのコピー（７４２）を実行可能プログラム一時記憶部７４０へ書き込む（ステップＳ２３）。図９に示したミドルウェアのロード処理の詳細は、後に説明する。
【００７３】
Ｊａｖａ（登録商標）ＶＭ７３１は、実行可能プログラム一時記憶部７４０に書き込まれた実行可能形式に展開されたＪａｖａ（登録商標）アプリ１（７４３）の実行を開始する（ステップＳ２４）。
【００７４】
次に、プロファイリング手段７３２は、実行可能形式に展開されたＪａｖａ（登録商標）アプリ１（７１４）である実行可能Ｊａｖａ（登録商標）アプリ（７４３）の実行過程において、クラスライブラリから読み込んだクラス群が提供するＡＰＩをどれだけの頻度、どれだけの時間利用したかを計測するために、Ｊａｖａ（登録商標）アプリ１の実行開始に際して、Ｊａｖａ（登録商標）アプリ１のミドルウェア選択情報（７２０）を取得し、計測対象のＡＰＩの特定を行う（ステップＳ２５）。この計測対象のＡＰＩとは、ミドルウェア選択情報（７２０）のクラス情報に含まれるクラス群が提供するＡＰＩである。
【００７５】
プロファイリング手段７３２は、実行可能Ｊａｖａ（登録商標）アプリ７４３が、クラスライブラリの呼び出しがあると（ステップＳ２６）、計測対象のＡＰＩか否かを判断する（ステップＳ２７）。
【００７６】
計測対象のＡＰＩ呼び出しである場合（ステップＳ２７がＹｅｓ）、プロファイリング手段７３２は、次に示す手順に従い、計測を実施し（ステップＳ２８）、Ｊａｖａ（登録商標）アプリ（７４３）の終了まで、ステップＳ２６からステップＳ３９まで、繰り返す。
【００７７】
プロファイル手段７３２での計測処理について、具体例をあげて説明する。なお、計測対象の情報は、ＡＰＩ毎に個別に設定されるものとする。
【００７８】
ａ）合計使用回数：実行可能Ｊａｖａ（登録商標）アプリ（７４３）が本ＡＰＩを呼び出した回数。呼出し毎にインクリメントされる。
【００７９】
ｂ）合計使用時間：実行可能Ｊａｖａ（登録商標）アプリ（７４３）が本ＡＰＩを呼び出した時間の総計。ＡＰＩ呼出し毎にＡＰＩ呼出し開始から呼出し完了までに要した時間を計測し、前回集計分に加算する。
【００８０】
プロファイル手段７３２は、実行可能Ｊａｖａ（登録商標）アプリ（７４３）実行終了時に、ステップＳ２９までで計測した情報に基づき、実行したＪａｖａ（登録商標）アプリ１のミドルウェア選択情報（７２０）のプロファイル情報（７２１）（具体的には、のミドルウェア選択情報に属する合計使用回数（５０６）、合計使用時間（５０７））を更新する。
【００８１】
このプロファイル情報（７２１）は、ミドルウェアをロードする際に、優先度を算出するために利用される。
【００８２】
あるクラスＸの各ＡＰＩの優先度の算出は、クラスＸのプロファイル情報（７２１）を利用して、以下のように行う。なお、用いる記号の意味は次の通りである。
【００８３】
Ｎｘ：クラスＸに含まれるＡＰＩの数
ＡＸｉ：クラスＸに含まれるＡＰＩ（１＜＝ｉ＜＝Ｎｘ）
Ｔｉ：ＡＸｉのＡＰＩ呼出し合計回数（プロファイル情報の構成要素）
Ｓｉ：ＡＸｉのＡＰＩ呼出し合計時間（プロファイル情報の構成要素）
１．合計使用回数より算出
クラスＸに含まれるＡＰＩ  ＡＸｉの優先度Ｒｉは、
【００８４】
【数１】
2008059494.tif 000003
【００８５】
とする。
【００８６】
２．合計使用時間より算出
クラスＸに含まれるＡＰＩ  ＡＸｉの優先度Ｒｉは、
【００８７】
【数２】
2008059494.tif 000004
【００８８】
とする。
【００８９】
いずれの方法によって算出した場合においても、優先度Ｒｉは、クラスＸに含まれる全ＡＰＩのうち、Ｊａｖａ（登録商標）アプリがＡＸｉをどの程度利用したかを表す。なお、上記では、合計使用回数、合計使用時間のいずれかのみを利用して優先度Ｒｉの算出を行っているが、両方を利用して算出を行っても良い。
【００９０】
なお、プロファイリング手段７３２は、プロファイル情報（７２１）（図５の５０８）だけでなく、実行したＪａｖａ（登録商標）アプリの合計起動回数や、合計起動時間についても計測を行い、ミドルウェア選択情報７２０のアプリケーション情報（７２３）（図５の５０９）へ反映させることも可能である。
【００９１】
（３）ミドルウェアのロード処理
図８と図９を用いて、ミドルウェア選択情報に従ってＪａｖａ（登録商標）アプリ実行時にロードするクラスライブラリを決定し、ロードする手順について説明する。なお、以下説明では、ユーザがＪａｖａ（登録商標）アプリ１の実行要求を発行し、Ｊａｖａ（登録商標）アプリ１実行に必要なクラスであるＣｌａｓｓＡ（ミドルウェア選択情報のクラス情報に含まれており、クラスライブラリにおいて、ＣｌａｓｓＡ（１）、ＣｌａｓｓＡ（２）として管理されている）、ＣｌａｓｓＣ（ミドルウェア選択情報のクラス情報に含まれない）をロードするものとする。まず、ミドルウェアロード手段７０２は、展開手段７０１からの要求を受け取り、Ｊａｖａ（登録商標）アプリ１実行のために必要な各クラス（今回の例においては、ＣｌａｓｓＡとＣｌａｓｓＣ）について、ミドルウェア選択手段７０３へ、クラスライブラリ（７１２）より読み出すクラスの選択を依頼し、処理を開始する。
【００９２】
ミドルウェア選択手段７０３は、ミドルウェアロード手段７０２より選択の依頼をされたクラスが、Ｊａｖａ（登録商標）アプリ１のミドルウェア選択情報（７２０）のクラス情報（５００）（あるクラスのプロファイル情報及び性能情報を取りまとめたもの）に含まれるどうかを判定する（ステップＳ３１）。
【００９３】
ミドルウェア選択情報（７２０）のクラス情報（５００）に含まれる場合（ステップＳ３１がＹｅｓ）、ステップＳ３２に遷移する。一方。ミドルウェア選択情報（７２０）のクラス情報（５００）に含まれない場合（ステップＳ３１がＮｏ）、ステップＳ３４に遷移する。
【００９４】
今回の例の場合は、ＣｌａｓｓＡについて選択の依頼を受けた時は、ＣｌａｓｓＡのクラス情報はＪａｖａ（登録商標）アプリ１のミドルウェア選択情報（７２０）に含まれるため、ステップＳ３２へ遷移し、ＣｌａｓｓＣについて選択の依頼を受けた時は、ＣｌａｓｓＣはＣｌａｓｓＡのように多重管理されておらず、ＣｌａｓｓＣのクラス情報はＪａｖａ（登録商標）アプリ１のミドルウェア選択情報（７２０）に含まれないので、ステップＳ３４へ遷移することになる。
【００９５】
ミドルウェア選択手段７０３は、Ｊａｖａ（登録商標）アプリ１の実行性能を最適化するミドルウェアを選択するために、ミドルウェア選択情報評価手段７０４へ、読み込みの候補（今回の例においては、ＣｌａｓｓＡにおけるＣｌａｓｓＡ（１）とＣｌａｓｓＡ（２））となっているクラス群の評価要求を発行する。ミドルウェア選択情報評価手段７０４は、評価要求を受けたクラスについて、現在起動中のＪａｖａ（登録商標）アプリであるＪａｖａ（登録商標）アプリ１のミドルウェア選択情報（７２０）のプロファイル情報（７２１）と性能情報（７２２）を入力とした評価関数を利用して、評価要求を受けたクラスの評価値を算出する（ステップＳ３２）。
【００９６】
以下は、評価関数による評価値導出の一例である。以下の説明にて用いる記号の意味は次の通りである。
【００９７】
Ｃ：評価要求を受けたクラス（今回の例の場合は、ＣｌａｓｓＡ）
Ｎｆ：Ｃがもつ機能数
ＣＣｉ：読み込み候補クラス（今回の例の場合は、ＣＣ１＝ＣｌａｓｓＡ（１）、ＣＣ２＝ＣｌａｓｓＡ（２））
Ｎｃ：読み込み候補クラス数（今回の例の場合は、２）
Ｆｉｊ：読み込み候補クラスｉの機能ｊの性能値（図５の５０３、５０４のような機能ｊの性能を数値化したもの）
Ｒｊ：プロファイル情報（７２１）により導出される機能ｊの優先度（Ｒｊは０．０〜１．０の実数であり、Ｒｊが１．０に近いほど機能ｊはＣがもつ機能群のうちＪａｖａ（登録商標）アプリから高頻度、長時間利用されているものであることを表す。
【００９８】
１．性能値の正規化
正規化された性能値ｆｉｊを以下の通り算出する。
【００９９】
ｆｉｊ＝Ｆｉｊ／Ｍｊ
なお、Ｍｊは機能ｊにおけるＦｉｊの最大値である。
【０１００】
２．評価値Ｐｉの算出
【０１０１】
【数３】
2008059494.tif 000005
【０１０２】
上記により算出されたＰｉは、クラスＣＣｉ機能のうち、Ｊａｖａ（登録商標）アプリが高頻度、長時間利用する機能の性能が高いほど、高い値をとることになる。今回の例においては、上記に従って、ＣｌａｓｓＡ（１）、ＣｌａｓｓＡ（２）の評価値Ｐ１、Ｐ２の算出が行われる。
【０１０３】
ミドルウェア選択手段７０３は、ミドルウェア選択情報評価手段７０４が算出した評価値Ｐｉに基づいて、読み込み候補クラスの中から評価値が最も高いクラスをロードするクラスとして選択する（ステップＳ３３）。
【０１０４】
今回の例の場合、Ｐ１＞Ｐ２の場合はＣｌａｓｓＡ（１）、Ｐ１＜Ｐ２の場合は、ＣｌａｓｓＡ（２）、Ｐ１＝Ｐ２の場合は、均等の割合でＣｌａｓｓＡ（１）、ＣｌａｓｓＡ（２）を選択する。
【０１０５】
なお、クラス選択の条件については、上記のように性能値が最も高いものを選択するのではなく、Ｐ１／（Ｐ１＋Ｐ２）の割合でＣｌａｓｓＡ（１）、Ｐ２／（Ｐ１＋Ｐ２）の割合でＣｌａｓｓＡ（２）を選択するようにしてもよい。
【０１０６】
ミドルウェアロード手段７０２は、ミドルウェア選択手段７０３によって選択されたクラスをクラスライブラリ（７１２）から読み込み、このコピー（７４２）を実行可能プログラム一時記憶部（７４０）へ書き込む。これら必要なプログラム群が実行可能プログラム一時記憶部７４０へ書き込まれた後、実行環境７３０は、展開されたＪａｖａ（登録商標）アプリ１を構成するクラス群（７４１）とクラスライブラリから読み込んだクラス群（７４２）の参照関係の解決を行い、実行可能Ｊａｖａ（登録商標）アプリ（７４３）とする（ステップＳ３４）。実行可能Ｊａｖａ（登録商標）アプリ（７４３）は、実行環境（７３０）のＪａｖａ（登録商標）ＶＭ（７３１）によってエントリポイント（Ｊａｖａ（登録商標）アプリの実行開始メソッド）よりプログラムの実行を開始することができる。
【０１０７】
（４）ミドルウェアの削除処理
図３と図１０を用いて、ミドルウェア選択情報作成・更新処理における、データ記憶部の容量不足によりダウンロードしたＪａｖａ（登録商標）アプリをデータ記憶部へ書き込むことができない場合の削除の手順について説明する。
【０１０８】
具体的には、多重管理されたクラスのうち、ユーザが頻繁に利用するＪａｖａ（登録商標）アプリからの使用頻度が低く、且つそのＪａｖａ（登録商標）アプリの実行性能への寄与度の低いクラスを優先的に削除していくことにより、ダウンロードしたＪａｖａ（登録商標）アプリを保存するために十分な領域をデータ記憶部に作り出す。
【０１０９】
前述した通り、ユーザが情報端末へＪａｖａ（登録商標）アプリをダウンロードしてインストールする際、アプリ保存手段３０１は、インストール前もしくはダウンロード前に、このＪａｖａ（登録商標）アプリを保存するために十分な領域がデータ記憶部に存在するかどうかについてチェックを実施し、このチェック過程において十分な領域が存在しないと判定された場合、削除手段３０５がミドルウェア削除手順を実施する。なお、ここでは削除手段３０５によるミドルウェアの削除はＪａｖａ（登録商標）アプリダウンロードのタイミングであるとしているが、Ｊａｖａ（登録商標）アプリに限らず、画像データ、音楽データ、ミドルウェアといったコンテンツをダウンロードする際においても、ミドルウェアの削除を実施してもかまわない。
【０１１０】
下記の説明において、用いる記号の意味は次の通りである。
【０１１１】
ＳＺｘ：確保したい領域のサイズ
ＳＺｙ：クラスの削除によって確保した領域のサイズ
Ｎ：クラスライブラリを構成するクラス群のうち多重管理されているクラスの数
ＲＣｉ：クラスライブラリを構成するクラス群のうち多重管理されているクラス（１＜＝ｉ＜＝Ｎ）
Ｒｍｉ：クラスＲＣｉの削除優先度
Ｎｉ：クラスＲＣｉが多重管理するクラス数
ｃｉｋ：クラスＲＣｉの多重管理されたクラス（１＜＝ｋ＜＝Ｎｉ）
ｄｉ：ソート用補助数値
Ｄｉ：ＲＣｉ、Ｎｉ、Ｒｍｉ、ｄｉより構成されるクラスＣｉの削除情報
ＡＰｉ：クラスＲＣｉをロードするＪａｖａ（登録商標）アプリの集合
ＡＮｉ：ＡＰｉの要素数
ａｉｊ：ＡＰｉの構成要素（１＜＝ｊ＜＝ＡＮｉ）
ｔｉｊ：Ｊａｖａ（登録商標）アプリａｉｊがクラスＲＣｉに含まれるＡＰＩを使用した合計時間（Ｊａｖａ（登録商標）アプリａｉｊのミドルウェア選択情報に含まれるクラスＲＣｉのプロファイル情報より、ＲＣｉのＡＰＩ数ＡＰＮｉと、ＲＣｉのＡＰＩｋの呼出し合計時間ｓｉｋを取得し、総和
【０１１２】
【数４】
2008059494.tif 000006
【０１１３】
を計算して、ｔｉｊとする）
まず、削除手段３０５は、クラスライブラリを構成するクラス群のうち多重管理されているクラスＲＣｉについて、それぞれミドルウェアの削除優先度Ｒｍｉを算出し、クラス情報Ｄｉを作成して、削除対象ミドルウェアリストＬへ追加する（ステップＳ４１）。
【０１１４】
なお、Ｄｉの構成要素である削除優先度Ｒｍｉは、次の通り算出する。
【０１１５】
【数５】
2008059494.tif 000007
【０１１６】
また、同じくＤｉの構成要素であるｄｉについては、
ｄｉ＝Ｒｍｉ×Ｎｉ
として算出を行う。
【０１１７】
次に、削除手段３０５は、削除対象ミドルウェアリストＬの構成要素Ｄｉについて、Ｄｉの構成要素であるｄｉの大きなものから順に並ぶようにソートを行う（ステップＳ４２）。なお、次のステップであるステップＳ４３を一度以上実施済みの場合については、Ｌ1を除いてソート済みであるため、Ｌ1を適切な位置へ移動させるのみでよい。
【０１１８】
削除手段３０５は、リストＬの先頭の要素Ｄ１（ステップＳ４１で算出したｄｉが最も大きな値となったクラス削除情報）のクラスＲＣ１について、ＲＣ１の多重管理されたクラスｃ１ｋ（１＜＝ｋＮｉ）のうち、ユーザが頻繁に利用するＪａｖａ（登録商標）アプリの実行性能への寄与ＣＯｋが低いクラスｅを選択して削除候補ミドルウェアリストＥへ追加する（ステップＳ４３）。Ｊａｖａ（登録商標）アプリの実行性能への寄与ＣＯｋは、Ｊａｖａ（登録商標）アプリａ１ｊのミドルウェア選択情報に含まれるアプリケーション情報（５０９）の合計起動時間をＳＬｊ、（３）ミドルウェアのロード処理で示した手法を利用して算出したＪａｖａ（登録商標）アプリａ１ｊのクラスｃ１ｋの評価値をＰｋｊとして、次の通り算出する。
【０１１９】
【数６】
2008059494.tif 000008
【０１２０】
【数７】
2008059494.tif 000009
【０１２１】
またクラス削除情報Ｄ１の構成要素について、Ｎ１←Ｎ１−１、ｄ１＝Ｒｍ１×Ｎ１とする。なお、Ｎ１＝１となった場合は、削除対象ミドルウェアリストＬよりＤ１を削除する。
【０１２２】
最後に、削除手段３０５は、削除対象ミドルウェアリストＥに含まれるミドルウェア（クラス）の合計サイズが確保したいサイズ以上か否かを判定する（ステップＳ３４）。具体的には、確保した領域のサイズＳＺｙを「ＳＺｙ＋ｅ」に更新し、ＳＺｘとＳＺｙとを比較する。
【０１２３】
ＳＺｘ＜＝ＳＺｙの場合（ステップＳ３４がＹｅｓ）、削除手段３０５は、削除対象ミドルウェアリストＥに含まれるクラス及びそのクラスに対するミドルウェア選択情報を全て削除し（ステップＳ３５）、処理を終了する。
【０１２４】
一方、ＳＺｘ＞ＳＺｙの場合（ステップＳ３４がＮｏ）、削除手段３０５は、削除対象ミドルウェアリストＬが空か否か（削除可能な多重管理されたミドルウェアが存在するか否か）を判断し（ステップＳ３６）、空でない場合（ステップＳ３６がＹｅｓ）、ステップＳ３２に遷移する。一方、削除対象ミドルウェアリストＬが空の場合（ステップＳ３５がＮｏ）、ミドルウェア削除失敗として、処理を終了する。
【０１２５】
以上により、ミドルウェアのロードを伴うアプリケーションプログラムの起動時において、ミドルウェアがアプリケーションプログラムへ提供する機能群の性能値（例えばベンチマークアプリケーションによる性能測定結果）、及びユーザのアプリケーションプログラムの使い方、の両者を考慮して、ロード可能なミドルウェア群の中からアプリケーションプログラムの実行性能を高めるミドルウェアを優先的に選択してロードすることが可能となる。
【０１２６】
また、アプリケーションプログラム起動時において、ベンチマークアプリケーションによる性能測定結果が優れたミドルウェアを優先的にロードすることが可能となる。
【０１２７】
また、アプリケーションプログラム起動時において、例えば非可逆圧縮が行われた画像データ（ＪＰＥＧ等）の展開機能における展開後画像（ビットマップ情報等）の画質や、音声データ（ＭＰ３等）の展開機能における展開後音声データ（ＰＣＭ情報等）の音質など、展開後データの評価がユーザの嗜好に左右される機能についても、ユーザ評価により性能が優れていると判定されたミドルウェアを優先的にロードすることが可能となる。
【０１２８】
また、アプリケーションプログラム起動時において、ユーザの嗜好により高い優先度が設定された機能群の性能（上記ベンチマークアプリケーションによる性能測定結果、及びユーザ評価に基づく性能）が高いミドルウェアを優先的にロードすることが可能となる。
【０１２９】
また、アプリケーションプログラム起動時において、過去のユーザのアプリケーションプログラムの利用で、高頻度、長時間利用された機能の性能（上記ベンチマークアプリケーションによる性能測定結果、及びユーザ評価に基づく性能）が高いミドルウェアを優先的にロードすることが可能となる。
【０１３０】
また、す除を行いいミドルウェアを優先的に選択してネットワーク経由等でアプリケーションプログラムを取得し、保存する場合において、前記データ記憶部の容量不足により保存を行うことができない場合、ユーザが高頻度で利用するアプリケーションプログラムからの利用頻度が低く、かつアプリケーションプログラムが使用する機能の性能が低いミドルウェアを優先的に削除して前記データ記憶部の領域の確保が行える。
【０１３１】
さらに、本発明のミドルウェア選択制御装置によれば、アプリケーションプログラム起動時において、ミドルウェアの機能群の性能値だけではなく、プロファイル情報に基づくユーザのアプリケーションプログラムの使い方が加味された、ユーザのアプリケーションプログラムの利用に即したミドルウェアをロードすることが可能となり、ユーザが高頻度で利用するアプリケーションプログラムの実行時性能をより高めることができる。
【０１３２】
アプリケーションプログラム実行中に計測した、ミドルウェアが提供する機能の使用回数と使用時間や、ユーザ入力によって決定された機能群の優先度および、ベンチマークアプリケーションによる測定やユーザの嗜好に基づく性能値を利用することで、アプリケーションプログラム起動時において、同等の機能を有するミドルウェアの中からアプリケーションプログラムが高頻度で利用する機能の性能（ベンチマーク性能、ユーザの嗜好に基づく性能）を高めるミドルウェアをロードすることが可能となる。これにより、ユーザが高頻度で利用するアプリケーションプログラムについて、アプリケーションプログラムの実行時性能を高める効果が期待できる。
【０１３３】
また、容量不足により情報端末へアプリケーションプログラムをインストールできない状況において、ユーザが高頻度で利用するアプリケーションプログラムからの利用頻度が低く、また提供する機能群の性能が低いミドルウェアを優先的に選択して削除することが可能となる。これにより、ユーザが高頻度で利用するアプリケーションプログラムの実行時性能を犠牲にすることなく、データ記憶部の容量不足を回避することができる。
【産業上の利用可能性】
【０１３４】
本発明にかかるミドルウェア選択制御装置は、適切なミドルウェアを選択することでアプリケーションの実行性能を高める効果を有し、情報端末や携帯電話などに有用である。
【０１３５】
また、通信機能を有したＡＶ機器などの用途にも応用できる。
【図面の簡単な説明】
【０１３６】
【図１】本発明の実施の形態におけるシステム全体の構成の一例を示す図
【図２】本発明の実施の形態におけるミドルウェア選択情報の作成・更新処理の流れの一例を示す図
【図３】本発明の実施の形態におけるミドルウェア選択制御装置の構成の一例を示すブロック図
【図４】本発明の実施の形態におけるメタデータの一例を示す図
【図５】本発明の実施の形態におけるミドルウェア選択情報の一例を示す図
【図６】本発明の実施の形態における画質などユーザの嗜好が性能評価に影響するような機能を提供するクラスの性能評価の一例を示す図
【図７】本発明の実施の形態におけるアプリケーション実行処理の流れの一例を示す図
【図８】本発明の実施の形態におけるミドルウェア選択制御装置の構成の一例を示すブロック図
【図９】本発明の実施の形態におけるミドルウェアのロード処理の流れの一例を示す図
【図１０】本発明の実施の形態におけるミドルウェアの削除処理の流れの一例を示す図
【符号の説明】
【０１３７】
１００    情報端末
１０１    データ記憶部
１０２    データ入出力部
１０３    プログラム管理部
１０４    処理部
１０５    実行可能プログラム一時記憶部
１０６    実行環境
１０７    プログラム実行管理部
１０８    プログラム保存管理部
１０９    入力受付部
２００    外部情報提供部
２０１    データ記憶部
２０２    データ入出力部
３００    プログラム管理部
３０１    アプリ保存手段
３０２    解析手段
３０３    ミドルウェア選択情報作成・更新手段
３０４    評価手段
３０５    削除手段
３０６    プログラム保存管理部
３０７    プログラム実行管理部
３１０    ベンチマーキング評価手段
３１１    ユーザ評価手段
３１２    機能ランキング手段
３２０    データ記憶部
３２１    メタデータ群
３２２    クラスライブラリ
３２３    Ｊａｖａ（登録商標）アプリ群
３２４    ミドルウェア選択情報群
３２５    Ｊａｖａ（登録商標）アプリ１
３２６    ＪＡＲファイル
３２７    管理ファイル
３３０    Ｊａｖａ（登録商標）アプリ
３３１    ＪＡＲファイル
３３２    管理ファイル
３４０    Ｊａｖａ（登録商標）アプリ１用ミドルウェア選択情報
３４１    プロファイル情報
３４２    性能情報
３４３    アプリケーション情報
３５０    データ入出力部
３５１    アプリ取得手段
３５２    取得アプリ保持手段
３６０    情報端末
３７０    外部情報提供部
３８０    処理部
３８１    実行プログラム一時記憶部
３８２    実行環境
３９０    入力受付部
７００    プログラム管理部
７０１    展開手段
７０２    ミドルウェアロード手段
７０３    ミドルウェア選択手段
７０４    ミドルウェア選択情報評価手段
７０５    プログラム実行管理部
７０６    プログラム保存管理部
７１０    データ記憶部
７１１    メタデータ群
７１２    クラスライブラリ
７１３    Ｊａｖａ（登録商標）アプリ群
７１４    Ｊａｖａ（登録商標）アプリ１
７１５    ミドルウェア選択情報群
７２０    Ｊａｖａ（登録商標）アプリ１のミドルウェア選択情報
７２１    プロファイル情報
７２２    性能情報
７２３    アプリケーション情報
７３０    実行環境
７３１    Ｊａｖａ（登録商標）ＶＭ
７３２    プロファイリング手段
７４０    実行可能プログラム一時記憶部
７４１    展開されたＪａｖａ（登録商標）アプリ１の構成クラス群
７４２    Ｊａｖａ（登録商標）アプリ１のためにクラスライブラリよりロードされたクラス群
７４３    実行可能Ｊａｖａ（登録商標）アプリ
７５０    処理部
７６０    入力受付部
７７０    データ入出力部
７８０    情報端末
【図１】
2008059494.tif 000010
【図２】
2008059494.tif 000011
【図３】
2008059494.tif 000012
【図４】
2008059494.tif 000013
【図５】
2008059494.tif 000014
【図６】
2008059494.tif 000015
【図７】
2008059494.tif 000016
【図８】
2008059494.tif 000017
【図９】
2008059494.tif 000018
【図１０】
2008059494.tif 000019