説明

アプリケーション実行装置

【課題】アプリケーションを構成するファイルをパッケージ化する場合、アイコンイメージ等アプリケーション実行時には利用されないファイルも含まれてしまうため、アプリケーション実行に要するメモリに無駄が生じていた。
【解決手段】アプリケーション実行時に使用されないファイルをパッケージ化されたアプリケーションより分離することにより、パッケージ化されたアプリケーションのサイズを縮小し、アプリケーション実行に要するメモリ使用量を削減する。また、分離されたアイコンイメージ等を使用する実行可能アプリケーション一覧表示等の表示処理を高速化する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、モジュールファイル群及びリソースファイル群をパッケージングしたファイル(例えばJARファイルなど)であるパッケージ化アプリをメモリに記憶し、実行することが可能な情報端末において、パッケージ化アプリの実行に利用されない、または利用頻度の低いファイルをメモリへ記憶する前に分離するアプリケーション実行装置に関する。
【背景技術】
【0002】
近年、携帯電話に代表される、通信機能を有し、持ち運びが可能な情報端末は、アプリケーションをネットワーク経由にてダウンロードし、保存し、実行する機能が広く採用されている。旧来の情報端末においては、ユーザは情報端末の出荷時に搭載されたアプリケーションのみ利用が可能であったが、本機能により、ユーザはユーザ自身で必要なアプリケーションをインターネット上のダウンロードサイト等にて検索し、ダウンロードし、情報端末へ保存して、実行することが可能となった。
【0003】
上記情報端末におけるダウンロードアプリケーションの実行環境として、Java(登録商標)が広く採用されている。Java(登録商標)採用の理由としては、アプリケーションプログラムの実行環境としてのJava(登録商標)の特徴である、プラットフォーム非依存性、豊富なクラスライブラリ、セキュアな実行環境等が挙げられるが、その他の大きな特徴して統一されたアプリケーションの配布形態も挙げられる。
【0004】
Java(登録商標)の実行環境であるJRE(クラスライブラリ、Java(登録商標)VM(Java(登録商標)言語にて記述されたアプリケーションを実行するためのソフトウェア)、及びJREを搭載する端末固有のポーティングレイヤ、より構成される)は、JARファイルを入力として受け取り、これをJava(登録商標)ヒープと呼ばれるRAM上に確保された一時記憶領域へ格納し、格納されたJARファイルより実行に必要なクラスファイル(Java(登録商標)言語で記述されたソースコードをJava(登録商標)コンパイラでコンパイルすることで生成されるプログラムモジュール)を抽出してJava(登録商標)ヒープ上へ格納し、実行することが出来る。JARファイルとは、クラスファイル及びJava(登録商標)アプリ実行過程で使用する様々なリソースファイル(GIFイメージファイル、MIDIファイル、テキストファイル等)を、JAR形式でパッケージ化したファイルである。
【0005】
このようにJava(登録商標)アプリ実行に係るファイル群をパッケージ化するメリットとしては、(A)ネットワーク経由でのJava(登録商標)アプリ配布が容易であること、(B)ネットワーク経由でダウンロードしたJava(登録商標)アプリを情報端末にて保持・管理することが容易であること、が挙げられる。特に携帯電話のように通信が課金され、データを格納するための不揮発記憶領域(FlashROM等)のサイズ制限が厳しい情報端末においては、通信回数の削減や、ダウンロード前にJava(登録商標)アプリを端末に保存するために要する不揮発記憶領域のサイズを正確に見積もることが可能である点から、本配布形態により享受できるメリットは大きい。
【0006】
なお、JARファイルには、Java(登録商標)アプリの実行に直接関係しないファイルも含まれることが多い。このようなファイル一例として、アイコンファイルが挙げられる。アイコンファイルは、Java(登録商標)アプリ実行時ではなく、ユーザがダウンロードしたJava(登録商標)アプリ一覧より実行するJava(登録商標)アプリを選択するためのUI(以下アプリラウンチャ)をグラフィカル化する目的で使用される。ここでグラフィカル化とは、Java(登録商標)アプリ一覧表示における各項目の表示内容を、旧来のアプリ名のみから、アプリ名とアイコンの組み合わせとすることを示す。
【0007】
アイコンの表示を伴う場合、各項目に係るアプリのJAR形式にパッケージ化されたファイルよりアイコンファイルを読込む必要がある。しかし、JAR形式にパッケージ化されたファイルよりクラスファイルやリソースファイルを読込むためには、読込み対象となるファイルの位置を特定し、データの展開(データが圧縮されている場合に限定されるが、JARファイルサイズ削減の要請から、圧縮されている場合が多い)を実施する必要があるため、通常のファイル読込みと比較して多くの時間を要する。
【0008】
このため、処理能力があまり高くない携帯電話のような情報端末においては、JAR形式ファイルからのファイル読込みに要する時間が他の処理を圧迫し、結果として、キーレスポンス低下といったユーザビリティに直結するような性能の悪化が生じてしまっていた。
【0009】
このような問題を改善する技術として、コンテンツよりアイコン情報等を元にインデックス用ファイルを事前に作成しておき、コンテンツ一覧表示時には、本ファイルに基づいて表示処理を高速化する技術(例えば特許文献1参照)、がある。
【特許文献1】特開2005−141596号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
しかしながら、上記技術の場合、コンテンツ内に含まれるアイコン情報等と、インデックス用ファイルで同用途のファイルの二重持ちが発生する。PC等のように不揮発記憶領域(HDD)の容量の制限が緩いものについては、特段問題は生じないが、携帯電話等のモバイル機器については、コスト等の要請から不揮発記憶領域であるFlashROMの使用容量制限が大きく、このようなファイルの二重持ち状態は許容できるものではない。
【0011】
また、不揮発記憶領域のみならず、RAM等の一時記憶領域についても同様に厳しい制限が課せられている。現状Java(登録商標)アプリの実行エンジンであるJava(登録商標)VMは、JARファイルを携帯端末の不揮発記憶領域から読込み、Java(登録商標)VMが専有する一時記憶領域であるJava(登録商標)ヒープへコピーする。さらにJava(登録商標)VMはアプリの実行に必要となるクラスファイルやイメージ等のリソースファイルをJARより抽出し、Java(登録商標)ヒープへコピーして使用する。このようなJava(登録商標)VMの実行形態は、アプリ実行中頻繁にアクセスが発生するファイル群からなるJARファイルを一時記憶領域であるJava(登録商標)ヒープへキャッシュしておくこととなるから、処理能力の乏しい携帯電話等の情報端末においては有利なものである。一方、JAR内にアプリ実行時に殆ど使用されないファイルが含まれている場合は、Java(登録商標)ヒープを浪費してしまい、一時記憶領域を使用する他のアプリケーションや、アプリ自身の実行動作へ悪影響を及ぼすこととなる。
【課題を解決するための手段】
【0012】
本発明のアプリケーション実行装置は、モジュールファイル群及びリソースファイル群をパッケージングしたファイルであるパッケージ化アプリを記憶し、実行することが可能なものであって、前記パッケージ化アプリ及び前記パッケージ化アプリに含まれるファイルに関連する情報を記述する記述ファイルを記憶するデータ記憶部と、前記データ記憶部に記憶されたパッケージ化アプリを初めて実行する場合、前記記述ファイルに含まれる情報に基づいて、前記パッケージ化アプリに含まれるファイルおよび前記パッケージ化アプリの実行中に前記ファイルが使用されるか否かを示す情報を含むファイル使用情報を作成するファイル使用情報更新部と、前記ファイル使用情報更新部により得られるファイル使用情報に基づいて、前記パッケージ化アプリに含まれるファイルのうち、前記パッケージ化アプリの実行中に使用されないファイルを判定する判定部と、前記判定部により判定されたファイルを前記パッケージ化アプリから分離し、前記分離したファイルと、前記ファイルを分離されたパッケージ化アプリを前記データ記憶部に記憶するファイル分離部と、前記ファイル分離部によりファイルが分離されたパッケージ化アプリを一時的に格納する一時記憶部および、前記一時記憶部に格納された前記パッケージ化アプリを実行可能なデータ形式となるようにして前記一時記憶部の記憶領域へ展開し、実行するアプリ実行エンジンを有するアプリ実行部とを備えたものである。
【発明の効果】
【0013】
本発明のアプリケーション実行装置は、モジュールファイル群及びリソースファイル群をパッケージングしたファイルであるパッケージ化アプリを記憶し、実行することが可能な情報端末において、前記パッケージ化アプリ及び前記パッケージ化アプリに含まれるファイルに関連する情報を記述する記述ファイルを記憶するデータ記憶部と、前記データ記憶部に記憶されたパッケージ化アプリを初めて実行する場合、前記記述ファイルに含まれる情報に基づいて、前記パッケージ化アプリに含まれるファイルおよび前記パッケージ化アプリの実行中に前記ファイルが使用されるか否かを示す情報を含むファイル使用情報を作成するファイル使用情報更新部と、前記ファイル使用情報更新部により得られるファイル使用情報に基づいて、前記パッケージ化アプリに含まれるファイルのうち、前記パッケージ化アプリの実行中に使用されないファイルを判定する判定部と、前記判定部により判定されたファイルを前記パッケージ化アプリから分離し、前記分離したファイルと、前記ファイルを分離されたパッケージ化アプリを前記データ記憶部に記憶するファイル分離部と、前記ファイル分離部によりファイルが分離されたパッケージ化アプリを一時的に格納する一時記憶部および、前記一時記憶部に格納された前記パッケージ化アプリを実行可能なデータ形式となるようにして前記一時記憶部の記憶領域へ展開し、実行するアプリ実行エンジンを有するアプリ実行部とを備えたので、前記パッケージ化アプリを実行するとき、実行中に使用されないファイルはアプリ実行部の一時記憶部に格納されなくなり、一時記憶部の記憶容量を必要以上に圧迫することがなくなる。これは、例えばアプリ実行部が複数のパッケージ化アプリを同時・並列に実行するような場合において非常に有用である。実行中に一時記憶部に占める領域を削減することにより、他のパッケージ化アプリ、ファイルにこの削減により空けることが可能になった一時記憶部の領域を割り当てることが可能となる。これにより、並行して起動できるパッケージ化アプリの最大数を増加できるといった効果が期待できる。
【0014】
また、前記パッケージ化アプリは、前記モジュールファイル群またはリソースファイル群に含まれる各ファイル対して、前記各ファイルの格納位置、サイズに関するファイルヘッダ情報を含み、前記ファイルヘッダ情報に示された格納位置に基づいて前記モジュールファイル群およびリソースファイル群に含まれる各ファイルが格納されており、前記ファイル分離部により前記パッケージ化アプリからファイルを分離する場合、分離する対象のファイルおよび前記分離する対象のファイルに対応するファイルヘッダ情報を削除し、前記分離対象のファイルの削除により空けられた領域を詰めるように、前記削除したファイルに後続するファイルを再配置するとともに、前記再配置により格納位置が変化したファイルに対応するファイルヘッダ情報に含まれる格納位置を更新することにより、分離したパッケージ化アプリを生成するようにすれば、前記分離されたパッケージ化アプリのサイズを小さくすることができるので、実行するとき、アプリ実行部の一時記憶部に格納されるパッケージ化アプリのサイズを小さくできるので、一時記憶部の記憶容量を必要以上に圧迫することがなくなる。
【0015】
また、前記ファイル使用情報更新部により作成されるファイル使用情報は、前記パッケージ化アプリを実行した回数と、前記パッケージ化アプリに含まれる各ファイルを特定する情報、前記パッケージ化アプリを実行するために前記特定した各ファイルを、前記一時記憶部に格納できる最大回数と、前記特定した各ファイルを実行可能なデータ形式となるようにして前記一時記憶部に格納した回数とを含むものであって、前記ファイル使用情報更新部は、更に前記パッケージ化アプリを実行する毎に、対応するファイル使用情報に含まれる、前記パッケージ化アプリを実行した回数および前記特定した各ファイルを実行可能なデータ形式となるようにして前記一時記憶部に格納した回数を更新するようにすれば、アプリケーション実行装置は、パッケージ化アプリに含まれるファイルの使用回数を特定できるようになる。
【0016】
また、前記判定部は、前記パッケージ化アプリを実行した回数が所定の回数となる毎に、前記一時記憶部に実行可能なデータ形式となるようにして格納した回数が所定の回数よりも少ないファイルを前記パッケージ化アプリの実行中に使用されないファイルとみなす判定をし、前記ファイル分離部は、前記実行中に使用されないファイルが分離されたパッケージ化アプリから更に前記使用されないとみなしたファイルを分離するようにすれば、パッケージ化アプリを繰り返し、実行したとき、実行時において利用頻度の少ないファイルを分離できるようになるので、実行時において、アプリ実行部の一時記憶部に格納されるパッケージ化アプリのサイズをより小さくすることが可能となり、一時記憶部の記憶容量を更に圧迫することがなくなる。
【0017】
また、前記ファイル分離部は、分離したファイルを示す復元情報を生成し、前記データ記憶部に記憶するとともに、前記アプリケーション実行装置は、前記復元情報を用いて分離したファイルを復元する復元部を更に備えるようにすれば、パッケージ化アプリをファイルが分離される前の状態に戻すことが可能となる。例えばファイルが分離されたパッケージ化アプリに異常が発生したとしても、ファイルが分離される前の状態に戻せば、異常の発生を回避することが可能となる場合などには有用である。
【0018】
また、前記ファイル分離部により生成される復元情報は前記パッケージ化アプリから分離したファイルを特定する情報および前記特定したファイルが格納されている前記データ記憶部の格納位置を示す情報を含み、前記アプリ実行部により実行されるパッケージ化アプリが、既に分離され前記一時記憶部には格納されていないファイルの実行を要求する場合、前記分離されたファイルが格納されている前記データ記憶部の格納位置を示す情報を用いて、前記分離されたファイルを実行可能なデータ形式となるようにして前記一時記憶部に格納するようにすれば、パッケージ化アプリの実行において、既に分離がされ、一時記憶部に格納されていないファイルへのアクセスを要求する場合であっても、該当するファイルを一時記憶部へ格納し、実行可能なデータ形式となるように変換して前記一時記憶部の記憶領域へ展開し、実行することが可能となる。
【0019】
また、前記アプリ実行部は、前記パッケージ化アプリに含まれる各ファイルが、前記一時記憶部に格納された前記パッケージ化アプリに含まれる各ファイルへのアクセスが前記アプリ実行部により実行されるパッケージ化アプリの実行中になされたかどうかを示すファイルアクセス関しテーブルを保持し、ファイルアクセス関しテーブルに基づいて、前記ファイル使用情報に含まれる該当するファイルについて、実行可能なデータ形式となるようにして前記一時記憶部に格納した回数を更新するよう、前記ファイル使用情報更新部に指示するように構成すれば、各ファイルの使用回数を特定することが可能となる。
【0020】
また、前記アプリケーション実行装置は、更に前記データ記憶部に記憶したパッケージ化アプリを削除する削除手段を備え、前記削除手段は、前記データ記憶部に記憶したパッケージ化アプリを削除する場合、前記分離したパッケージ化アプリおよび前記分離したファイルを削除するように構成すれば、ファイルの分離がなされたパッケージ化アプリを削除する場合、分離されたファイルをも一括して削除することが可能となり、パッケージ化アプリを利用する利用者は分離されたファイルを意識することなく、パッケージ化アプリの削除を行なうことが可能となるばかりか、パッケージ化アプリを削除した後に、このパッケージ化アプリに関連する分離したファイルが、データ記憶部に削除されることなく残っているという状態を回避できるため、データ記憶部を不必要に圧迫するということがなくなる。
【発明を実施するための最良の形態】
【0021】
以下、本発明が適用された実施の形態について図面を用いて説明する。なお、本発明の実施の形態は、下記の実施例に何ら限定されることなく、本発明の技術的範囲に属する限り種々の形態を採りうる。
【0022】
具体的には、以下では、パッケージ化アプリであるJARファイルをダウンロードし、FlashROM等の不揮発記憶領域へ保存し、これを実行することが可能なアプリケーション実行装置であるJREにおける一例を示すが、例えばBREW(R)のような、他のパッケージ化アプリをダウンロードし、不揮発領域へ保存し、実行することが可能なアプリケーション実行装置についても、本発明は適用可能である。
【0023】
(実施の形態1)
図1は本実施の形態のアプリケーション実行装置を説明するための図である。
【0024】
図1において、1000はアプリケーション実行装置である。アプリケーション実行装置1000は、アプリファイル管理部1100、データ記憶部1200、アプリ実行部1300、一覧表示処理部1400、キー入力部1500を備える。
【0025】
アプリファイル管理部1100は、アプリ取得部1101、アプリ分離部1110、ファイル復元部1120、アプリ削除部1130を備える。また、アプリ分離部1110はファイル使用情報更新部1111、ファイル分離判定部1112、ファイル分離部1113を備える。
【0026】
データ記憶部1200は、アプリ記憶部1210、分離ファイル情報部1220を備える。また、分離ファイル情報部1220は更にファイル使用情報部1221、分離ファイル部1222を備える。
【0027】
アプリ実行部1300はアプリ起動処理部1310、アプリ実行エンジン1320、ファイルアクセス部1330、ファイルアクセス監視部1340を備える。また、アプリ実行エンジン1320は一時記憶部1321を備え、一時記憶部1321はパッケージ化アプリ部1322、アプリ記述ファイル部1323、モジュール部1324を備える。ファイルアクセス部1330は分離ファイル情報アクセス部1331を備え分離ファイル情報アクセス部1331は更に分離ファイル情報テーブル1332を備える。ファイルアクセス監視部1340は更にファイルアクセス監視テーブル1341を備える。
【0028】
一覧表示処理部1400はユーザ入力受付部1410、アプリ起動要求部1420、一覧表示部1430を備える。
【0029】
図1において、データ記憶部1200内のアプリ記憶部1210に格納されたパッケージ化アプリ及び本パッケージ化アプリに係るアプリ記述ファイルに基づき、アプリ分離部1110にてパッケージ化アプリが含むアイコンファイル(アプリ記述ファイルの内容に基づき静的にパッケージ化アプリに係るアプリの実行に利用されない旨を判定可能なファイル)をパッケージ化アプリより分離する際の処理手順について説明する。
【0030】
なお、アイコンファイルは静的にパッケージ化アプリに係るアプリの実行時に利用されない旨を判定可能なファイルの一例であり、これをアイコンファイルに限定するものではなく、アイコンファイル以外のファイルであってパッケージ化アプリに係るアプリの実行時に利用されないファイルに対しても適用が可能である。
【0031】
図2は、本実施の形態におけるパッケージ化アプリ及び、アプリ記述ファイルの一例を説明するための図である。
【0032】
図2において、パッケージ化アプリ2100は、アプリケーションの実行に必要なプログラムモジュールに関するファイルに係るデータであるファイルエントリ群2120及びアプリケーションの実行過程においてプログラムモジュールが利用するリソースファイルに係るデータであるファイルエントリ群2130をパッケージ化し、1ファイルとしたものを含む。
【0033】
図2の説明においては、ファイルエントリ群2120はプログラムモジュール1に対応するファイルエントリ1、プログラムモジュール2に対応するファイルエントリ2、プログラムモジュール3に対応するファイルエントリ3、...プログラムモジュール(N−1)に対応するファイルエントリ(N−1)を有するものする。
【0034】
また、ファイルエントリ群2130はリソースデータ1に対応するファイルエントリN、リソースデータ2に対応するファイルエントリN+1、リソースデータ2に対応するファイルエントリN+2、...を有するものとする。
【0035】
なおパッケージ化アプリ2100には、さらにパッケージ化アプリ内の各ファイルエントリを抽出するためのファイルエントリ管理情報2140、及びヘッダ情報2110が必要に応じて含まれている。図2においては、パッケージ化アプリ2100にファイルエントリ管理情報2140、及びヘッダ情報2110を含んでいるものを例に説明をする。
【0036】
このファイルエントリ管理情報2140とは、パッケージ化アプリ2100に含まれる各ファイルエントリに対応するファイルエントリファイルヘッダ2141の集合である。
【0037】
ファイルエントリ1に対応するファイルエントリ1ファイルヘッダ2141を例にファイルエントリファイルヘッダの構成を説明する。ファイルエントリファイルヘッダは、Offset(2142)、Length(2143)、Name(2144)等の情報を含む。
【0038】
Offset(2142)は、パッケージ化アプリ内におけるファイルエントリ1の位置である。Length(2143)はファイルエントリ1のサイズである。Name(2144)は、ファイルエントリ1のファイル名である。
【0039】
Offset(2142)には例えばパッケージ化アプリ2100に含まれる最初のファイル(この例ではヘッダ情報)の先頭位置から数えて何バイト目にあるかに関する情報を格納する。また他のファイルエントリに対応するファイルエントリヘッダ(ファイルエントリ2ファイルヘッダ、ファイルエントリ3ファイルヘッダ、...ファイルエントリiファイルヘッダ(i:整数))については、上述のファイルエントリ1ファイルヘッダ2141の説明において、ファイルエントリ1を対応するファイルエントリの番号に読み替えればよく、ファイルエントリ1ファイルヘッダ2141と同様のデータ構造を有するものである。
【0040】
パッケージ化アプリから特定のファイルを抽出する場合は、抽出したいファイルのファイル名と、ファイル名“Name”の値が一致するファイルエントリファイルヘッダを探し出し、見つかったファイルエントリファイルヘッダのOffset及びLengthに基づいてファイルエントリの位置・範囲を特定して、対応するファイルエントリを取り出し、且ファイルエントリが圧縮されている場合は適当な解凍手段(図示せず)によって解凍する、という手順が必要となる。
【0041】
アプリ記述ファイル2200は、アプリ実行時に最初に必要となるプログラムモジュールに関する情報2201や、アプリラウンチャ等においてアプリ名一覧と共に表示されるアプリの属性情報を記述するためのファイルである。
【0042】
アプリの属性情報とは、例えばアイコンに関する情報2202といったようなものである。なお、アプリラウンチャの詳細については実施の形態6にて後述する。
【0043】
図3は、図2に示したパッケージ化アプリ2100、アプリ記述ファイル2200をより具体的にしたものの一例を示す図であり、アプリケーションをJava(登録商標)アプリケーションとしたときのパッケージ化アプリファイルとして、JARファイル(この例では、Game.jar(3100))及び、JARファイルに係るアプリ記述ファイルとしてADFファイル(この例では、Game.adf(3200))の例を示す図である。
【0044】
JARファイルの一例であるGame.jar(3100)は例えば、プログラムモジュールであるクラスファイル(Game.class(3121)、Initialize.class(3122)、Main.class(3123)等)、リソースファイルであるGIFファイル(game.gif(3131)、icon.gif(3132))、テキストファイル(readme.txt(3133))等、ヘッダ情報(2110)に対応するLocal File Header(3110)、及びファイルエントリ管理情報(2140)に対応するCentral Directory(3140)により構成される。
【0045】
Local File Header(3110)には、JARファイル自体の属性であるファイルサイズ等が格納され、Central Directory(3140)にはクラスファイル(3121、3122、3123等)や、GIFファイル(3131、3132)、テキストファイル3133等を取り出すための情報であるファイルヘッダが格納される。
【0046】
ファイルヘッダ3141には、図2において説明したファイルエントリファイルヘッダ2141と同様の情報が格納されている。具体例を挙げると、Game.gif(3131)のファイルヘッダ3141には、JARファイル3100の先頭からのGame.gif(3131)の位置であるOffset(3142)、Game.gif(3131)のサイズであるLength(3143)、Game.gif(3131)のファイル名であるName(3144)等より構成される。
【0047】
図3に示す例では、JARファイルは、Local File Header(3110)、プログラムモジュール(この例では、クラスファイル(Game.class(3121)、Initialize.class(3122)、Main.class(3123)等)、リソースファイル(この例では、GIFファイル(game.gif(3131)、icon.gif(3132))、テキストファイル(readme.txt(3133)等))、ファイルエントリ管理情報部(この例ではプログラムモジュールに含まれる各クラスファイルのファイルヘッダ(Game.classファイルヘッダ、Initialize.classファイルヘッダ、Main.classファイルヘッダ、...)、リソースファイルに含まれるファイルのそれぞれに対応するファイルヘッダ(game.gifファイルヘッダ、icon.gifファイルヘッダ、readme.txtファイルヘッダ、...)の順に格納されているものとする。
【0048】
また、Local File Header(3110)のファイルサイズはHsバイト、クラスファイルを含んだプログラムモジュールのサイズ(プログラムモジュールを構成する各クラスファイルのサイズを総計したもの)はCsバイト、リソースファイルに含まれるファイルであるGame.gif(3131)のファイルサイズはR1sバイト、icon.gif(3132)のファイルサイズはR2sバイトとする。
【0049】
このとき、Game.gif(3131)の前に格納されているLocal File Header(3110)およびプログラムモジュールのファイルサイズの総和はHs+Csバイト、Game.gif(3131)のファイルサイズはR1sバイトであるため、Game.gif(3131)のファイルヘッダ3141のOffset(3142)にはHs+Cs、Length(3143)にはR1sが格納される。
【0050】
ADFファイルに対応するGame.adf(3200)は、Java(登録商標)アプリ実行において最初に実行するメソッドを含むクラスのファイル名を示す情報であるMainClass(3201)及び、アプリラウンチャにおいてアプリ名一覧と共に表示されるアイコンファイルのファイル名を示す情報であるIconFile(3202)等のADFキーのリストにより構成される。
【0051】
パッケージ化アプリ及びアプリ記述ファイルは、アプリケーション実行装置1000のアプリ取得部1101によって外部サーバ等よりインターネット等を経由して取得され、データ記憶部1200内の記憶領域であるアプリ記憶部1210に格納される。
【0052】
図4は、図1に示すデータ記憶部1200に記憶されるデータの具体的一例を説明するための図である。データ記憶部1200は、例えばFlashROM等の不揮発記憶領域上に構成されたファイルシステムを格納するための記憶領域である。データ記憶部1200は例えば階層構造を用いてデータを格納しており、この例ではアプリ記憶部1210は“home”フォルダの中にある“java”フォルダの中の“app”フォルダ内(またはルートディレクトリから「/home/java/app」にて示されるディレクトリの配下)の記憶領域に対応する。
【0053】
図4においては、アプリ取得部1101によって、取得されたJava(登録商標)アプリGameに対応するGame.jar(3100)及びGame.adf(3200)は、アプリ記憶部1210における“app”フォルダの中にGame.jar(3100)及びGame.adf(3200)を格納した例を示している。
【0054】
上記の手順等によってアプリ記憶部1210にパッケージ化アプリ、アプリ記述ファイルが格納された後、アプリ分離部1110は、ファイル使用情報更新部1111、ファイル分離判定部1112、ファイル分離部1113の協調動作により、アイコンファイル等、当該パッケージ化アプリに含まれるファイル群のうちアプリ実行中に使用されないまたは使用頻度の低いファイルの分離を行う。図5は本ファイルの分離に関する具体的な処理手順を示すフローチャートである。
【0055】
ここでは、図5のフローチャートを参照しながら、上記Game.jar(3100)、及びGame.adf(3200)より構成されるJava(登録商標)アプリGameを構成するファイルを分離する処理手順の一例を示す。
【0056】
(1)ファイル使用情報の生成
ファイル使用情報更新部1111は、アプリ記憶部1210に格納されたパッケージ化アプリ(本実施の形態では、JARファイル)及び当該パッケージ化アプリに係るアプリ記述ファイル(本実施の形態では、ADFファイル)を含むJava(登録商標)アプリを用いて、当該パッケージ化アプリに係るファイル使用情報の生成を行う。
【0057】
具体的には、上記アプリ取得部1101は、JARファイルに対応するGame.jar(3100)及びADFファイルに対応するGame.adf(3200)をアプリ記憶部1210へ格納後、ファイル使用情報更新部1111へファイル使用情報に対応するGame.datの生成を要求する。
【0058】
図6は、ファイル使用情報の一例を説明するための図である。図6において、ファイル使用情報6100は、パッケージ化アプリの実行過程において、実行過程のパッケージ化アプリを構成する各ファイルに関する情報を含み、共通情報6110と、各ファイルに対応する使用情報を有する。
【0059】
共通情報6110には、パッケージ化アプリがアプリ実行エンジン1320において起動され、実行された回数であるアプリ起動回数6111を有する。パッケージ化アプリに含まれるファイル使用情報には、ファイル名6121、アプリ実行時最大使用回数6122、及びアプリ実行時使用回数累計6123を有する。
【0060】
使用情報6120におけるファイル名6121は該当するファイルのファイル名を示す。アプリ実行時最大使用回数6122は、当該アプリがそのファイルを最大何度まで使用できるかを示す。具体的には、本値が0であれば、ファイル名6121に係るファイルは一度も当該アプリから使用されないことを示すものであり、本値が1であれば、ファイル名6121に係るファイルは一度だけ当該アプリから使用されることを示す。アプリ実行時使用回数累計6123は、当該アプリがアプリ実行エンジン1320における実行過程において、ファイル名6121に係るファイルへ実際にアクセスを行った回数の累計を示す。
【0061】
図6に示す例では、icon.gifにおけるアプリ実行時最大使用回数6122(MaxCount)は0である。これはアプリ実行時においてicon.gifが利用されないことを示す。
【0062】
次に、ファイル使用情報の生成処理手順の詳細について説明する。図5においてステップ(S5001)〜ステップ(S5005)までは、主としてファイル使用情報更新部1111の動作、ステップ(S5101)〜ステップ(S5102)は主としてファイル分離判定部1112による動作、ステップ(S5201)〜ステップ(S5207)は主としてファイル分離部1113の動作に相当する。
【0063】
まず、アプリ取得部1101よりファイル使用情報生成要求を受け取ると、ファイル使用情報更新部1111は、ファイル使用情報生成の対象のアプリに係るファイル使用情報が既にファイル使用情報部1221に格納済みであるかを確認する(S5001)。
【0064】
ステップ(S5001)において格納済みでないことを確認した場合(例えば、ダウンロード直後のアプリといったような場合など)、ファイル使用情報更新部1111は、当該アプリに係るデフォルトとなるファイル使用情報の生成を試み、データ記憶部へ格納する(S5002)。
【0065】
ステップ(S5001)において格納済みであることを確認した場合には、ステップ(S5003)へ進む。
【0066】
ステップ(S5003)では、データ記憶部1200からファイル使用情報を読み込んで取得する。
【0067】
デフォルトのファイル使用情報は、パッケージ化アプリ及びアプリ記述ファイルに基づいて生成される。
【0068】
図7は、Java(登録商標)アプリGameに係るGame.jar(3100)及びGame.adf(3200)を用いてJava(登録商標)アプリGame(3100)に含まれるアプリの実行中に利用することのないファイル(この例では、icon.gif)を分離するために生成するファイル使用情報(Game.dat(7300))を説明するための図である。図において、Game.dat(7300)は、アプリの起動回数であるLaunchedCount(7301)及び、Game.jar(3100)に含まれるファイル毎の使用情報を有する。また各ファイルの使用情報は、ファイル名であるName、アプリ実行時最大使用回数であるMaxCount、アプリ実行時使用回数累計であるCountを含む。
【0069】
例えばファイル“Game.class”の使用情報7310の場合、ファイル名であるName(7311)の値には、“Game.class”、アプリ実行時最大使用回数であるMaxCount(7312)の値には−1、アプリ実行時使用回数累計であるCount(7313)の値には0であることを示している。
【0070】
図7は、Game.jar(3100)とGame.adf(3200)を用いてデフォルトのファイル使用情報Game.dat(7300)を生成する具体的例を説明するための図である。
【0071】
(処理1) ファイル使用情報Game.dat(7300)に含まれるLaunchCountの値に0が設定される。
【0072】
(処理2) Game.jar(3100)のCentral Directory(3140)の先頭のファイルヘッダ(この例ではGame.classファイルヘッダ)から順に1つずつファイルヘッダを取り出し、取り出したファイルヘッダ毎に以下の処理を行う。なお、以下の処理は、Central Directory(3140)に含まれる全てのファイルヘッダに対して行われる。
【0073】
(処理3) (処理2)で取り出したファイルヘッダのName情報と、Game.adf(3200)に含まれるファイルのうち、アプリラウンチャにおいてアプリ名一覧と共に表示されるアイコンファイルのファイル名を示す情報(つまりicon.gif))が一致しない場合は、該当するファイルヘッダに対応するファイルに対する使用情報として、Name=ファイルヘッダに含まれるName情報、MaxCount=−1、Count=0を生成し、Game.dat(7300)の末尾に追加する。なお、MaxCountの値が−1の場合は、使用情報のNameの値であるファイル名に該当するファイルについては、使用回数の上限は無いことを示すものとする。本例においては、後述する(処理4)にて示すicon.gifを除く全てのGame.jarが含むファイルについては、本初期化処理を行うこととなる(例えばGame.classの使用情報7310)。
【0074】
(処理4) (処理2)で取り出したファイルヘッダのName情報と、Game.adf(3200)に含まれるアイコンファイルのファイル名を示す情報(つまりicon.gif)が一致する場合は、該当するファイルヘッダに対応するファイルに対する使用情報として、Name=ファイルヘッダに含まれるName情報、MaxCount=0、Count=0を生成し、Game.dat(7300)の末尾に追加する。MaxCountの値を0とするのは、当該ファイルがJava(登録商標)アプリGameの実行過程で一度も使用されないファイルであることを示すためである。アイコンファイルは、アプリ実行時ではなくアプリラウンチャの一覧表示のグラフィカル化を目的として使用されるものであるため、このような処理としている。本実施の形態においては、(処理2)で取り出したファイルヘッダが、icon.gifファイルヘッダの場合は、(処理4)を行うこととなる。
【0075】
Game.jar(3100)とGame.adf(3200)を用いて、(処理1)〜(処理4)を適用すると、icon.gifファイルヘッダについてのみ、(処理4)がなされ、icon.gifファイルヘッダに対応するファイル使用情報7320に含まれるNameの値は“icon.gif”、MaxCountの値は0、Countの値は0となり、icon.gifファイルヘッダ以外のファイルヘッダには(処理3)が適用される(図7参照)。
【0076】
なおアイコンファイル以外にも、アプリ実行中に使用しないファイル名をADFファイル(Game.adf(3200))に定義し、定義したファイル名に対し(処理1)〜(処理4)の手順を適用すればアプリ実行中に利用しないファイルについて、MaxCountの値を0としたファイル使用情報(Game.dat(7300))を生成することが可能となる。
【0077】
(2)分離対象ファイル名リストの生成
次にファイル使用情報更新部1111は、ファイル分離判定部1112へパッケージ化アプリ及び当該パッケージ化アプリのアプリ記述ファイルを引数として、ファイル分離の実施を要求する(S5005)。
【0078】
ファイル分離実施の要求を受けたファイル分離判定部1112は、ファイル使用情報(Game.dat(7300))を用いて分離対象ファイルを決定し、分離対象ファイルのファイル名リストを生成し(ステップS5101)、ファイル名リストに列挙するファイルをパッケージ化アプリから分離すため、生成した当該パッケージ化アプリの分離対象ファイル名リストを引数として、ファイル分離部1113へファイルの分離を要求する(S5102)。
【0079】
図8は、ステップ(S5101)において、ファイル使用情報を用いて分離対象ファイルを決定し、分離対象ファイルのファイル名リストを生成する具体例を説明するための図である。
【0080】
まず、インターバルチェックにより、インターバル定数Iに規定の回数(またはその倍数)になった場合には、ファイル分離判定処理を実施し、そうでなければ処理を終了する(S8001)。
【0081】
ファイル使用情報(Game.dat(7300))のLaunchedCount(7301)の値をインターバル定数であるIで割り、余りが0の場合のみ、以下の処理(ステップ(S8002)〜ステップ(S8006))を実行するものとする。ファイル分離判定の要求は、Java(登録商標)アプリダウンロード時、及びJava(登録商標)アプリの実行が終了する度にされるが、ファイル使用情報の内容はJava(登録商標)アプリ実行の度に大きく変化するものではないため、Java(登録商標)アプリダウンロード時、及びインターバル定数Iで示されるJava(登録商標)アプリ起動回数毎にファイル分離判定を実施するよう、本判定処理を設けている。
【0082】
本判定処理は、ファイル使用情報に含まれる各ファイルの使用情報uiについて、ファイル分離判定処理を実施する(S8002)。
【0083】
Game.dat(7300)に含まれる各ファイルの使用情報を先頭から順に取り出し、取り出したファイルの使用情報uiに含まれるMaxcountが−1であるか否かを調べ、−1である場合は、後述するステップ(S8005)へ進み、そうでない場合は、後述するステップ(S8004)へ進む(S8003)。
【0084】
取り出した使用情報に含まれるCountの値が取り出した使用情報に対応するファイルの最大使用回数に対応するMaxcountの値よりも大きいかどうかを調べ(S8004)、Maxcountの値以下であれば後述するステップ(S8005)へ進み、そうでなければ後述するステップ(S8006)へ進む(S8004)。
【0085】
取り出した使用情報に含まれるCountの値が所定回数よりも大きいかどうかを調べ(S8005)、所定回数以下であれば、後述するステップ(S8006)へ進み、所定回数よりも大きければ、次に取り出すべきファイルの使用情報があればこれを取り出して、ステップ(S8002)へ戻り、同様の処理を繰り返し、そうでなければ処理を終了する。
【0086】
ここで、ステップ(S8005)においては、所定回数というのを、アプリの起動回数(Lounched Count)に所定定数(分離定数Xとも)を乗じた値としている。例えば分離定数Xの値を0.1とすると、アプリの起動回数が10回である場合に、対象となるファイルのアクセス回数が1回以下の(つまり利用頻度の少ないもの)が後述するステップ(S8006)へ進むことになる。
【0087】
次に、ステップ(S8004)の判断がYes、またはステップ(S8005)の判断がNoの場合、取り出した使用情報に含まれるNameを分離対象ファイル名リストに加えた(ステップS8006)後、次に取り出すべきファイルの使用情報があればこれを取り出して、ステップ(S8002)からの処理を繰り返し、次に取り出すべきファイルの使用情報がなければ処理を終了する。
【0088】
このような処理を行うことにより、分離対象ファイル名リストにはアプリの実行中に利用がなされないファイル、最大使用回数を超えたファイル、利用頻度の低いファイルが加えられるようになる。
【0089】
この例では、図7に示すファイル使用情報(Game.dat(7300))を用いて分離対象ファイル名リスト9100を生成した場合、ダウンロード時において図8に示したフローチャートを実行すると、分離対象ファイル名リスト9100に、icon.gifのファイル使用情報7320に含まれるName9101(ファイル名“icon.gif”)が追加され、その後、起動を重ねるに従って、最大使用回数を超えたファイル、利用頻度の低いファイルが加えられるようになる(図9参照)。また、本判定からMaxCountの値が−1の場合を除いているのは、本値−1は上記の通り、ファイルの最大使用回数を設定しない、すなわちファイルの使用回数の上限がないことを示すものであるためである。
【0090】
(3)ファイルの分離
分離対象となるパッケージ化アプリ、及び図8(またはステップS5101)で説明した処理にて生成した当該パッケージ化アプリの分離対象ファイル名リストを引数として、ファイルの分離の要求をファイル分離情報判定部1112から受け取ると、ファイル分離部1113は、これら引数情報に基づき、分離後のパッケージ化アプリ及び分離されたファイル群より元のパッケージ化アプリを復元するための情報である復元情報を生成する。更に、パッケージ化アプリより当該パッケージ化アプリの分離対象ファイル名リスト9100で列挙されるファイル名のファイル群を抽出し、パッケージ化アプリより分離対象ファイル名リスト9100で列挙されるファイル名にて構成されるファイル群のファイルエントリ及びファイルヘッダを削除する。
【0091】
以下では、図5のシーケンス(特にステップ(S5201)〜ステップ(S5207))に基づき、図10、図11、図12、図13を用いて上記処理の詳細を説明する。
【0092】
ファイル分離部1113は、ファイル分離情報判定部1112からファイル分離の要求を受け取ると、復元情報を生成する(S5201)。
【0093】
図10は、パッケージ化アプリに対応するJARファイル(Game.jar(3100))の復元情報の生成を示す。後述の処理を行うことによりGame.jar(3100)からファイルが抽出され、抽出されたファイルに関するファイルエントリがJARファイルより削除されるが、JARファイル(3100)においては、Local File Header(3110)及びCentral Directory(3140)と、抽出されたファイル群があれば元のJARファイルへの復元可能であることから、Local File Header(3110)及びCentral Directory(3140)を含む情報を復元情報とする。
【0094】
Java(登録商標)アプリGameの復元情報に対応するGame.info(10200)は例えば、Game.jar(3100)のLocal File Header(3110)及びCentral Directory(3140)を取り出し、これらを連結した情報である。
【0095】
次に、ファイル分離部1113は、分離対象ファイル名リストで列挙されたファイル名のファイル群を抽出する(S5202)。
【0096】
図11は、JARファイルGame.jar(3100)を用いて、ファイル分離判定部1112にて生成したGame.jar(3100)の分離対象ファイル名リスト9100に基づき、分離対象ファイル名リスト9100に含まれるファイル名9101対応するファイルエントリ(図9の例ではicon.gif(3132)等)を抜き出して分離対象ファイル群11300を作成し、分離対象ファイル群11300を必要に応じて展開して、抽出後ファイル群11400を生成する様子を示すものである。ここで展開とは、圧縮化、暗号化されたデータを、解凍、復号することにより、圧縮、暗号化前のデータに復元することである。JARファイルにおいては、通常ファイルエントリは、無圧縮、及びDEFLATE圧縮アルゴリズムで圧縮された形態をとる。本実施の形態においては、分離対象ファイル群11300のファイルエントリicon.gif(3132)等を、これが無圧縮ならそのまま、DEFLATE圧縮アルゴリズムにより圧縮されている場合は、そのアルゴリズムに基づいて展開することで、抽出後ファイル群11400に含まれるファイルicon.gif(11401)等を生成することがicon.gif(11301)等の展開に相当する。なお、ファイルエントリの圧縮形式・暗号化形式は、JARのLocal File Headerに設定されるため、展開はここに設定された圧縮形式・暗号化形式に対応する解凍・復号エンジン(図示せず)によって解凍すればよい。
【0097】
なお上記抽出されたファイル群をデータ記憶部1200へ格納する具体的な手段として、図14では“resources”フォルダの中にファイル毎に格納する手法を例示している。このように構成することにより、アプリラウンチャ等にてパッケージ化アプリに含まれるアイコンを一覧表示する際等において、対応するファイル(“resources”フォルダの中のicon.gif)の表示処理を高速化することができる。
【0098】
本実施の形態では、抽出されたファイル群を格納する具体的手段として、上述の記載にのみ限定するものではなく、例えば分離によって生成されたファイル群を連結し1ファイルとして格納することとしてもよい。このような格納手法を採用した場合、ファイルの格納がクラスタ単位で行われるファイルシステムにおいて、データ記憶部1200(例えばFlashROM)の消費量を削減する効果が期待できる。
【0099】
次に、ファイル分離部1113は、分離対象ファイル名リスト9100を用いて抽出したファイル群及びファイル群に含まれるファイルエントリに対応するファイルヘッダをパッケージ化アプリ(この例ではGame.jar(3100))から削除する(S5203)。
【0100】
図12は、Game.jar(3100)より、分離対象ファイル名リスト9100で列挙されるファイル名(icon.gif(9101)等)に対応するファイルエントリ(icon.gif(3132))及びこれに対応するファイルヘッダ(icon.gifファイルヘッダ)を削除し、新たに生成した(または更新した)Game.jar(12200)の一例を示すものである。
【0101】
これにより、ステップ(S5203)で抽出されたファイル群、及びファイル群に含まれるファイルエントリに対応するファイルヘッダに関するデータがJARファイルより削除されるため、JARファイルのサイズが縮小される。なお、上記ファイルエントリ12101削除に伴い、更新したパッケージ化アプリに含まれるファイルヘッダに格納するOffsetを更新する必要がある。ファイルエントリより後ろに配置されるファイルエントリ群12103に対応するファイルヘッダ12104については、ファイルヘッダの構成情報であるOffsetをファイルエントリ削除後の値に更新する必要がある。
【0102】
次に、ファイル分離部1113は、更新したパッケージ化アプリをアプリ記憶部1210へ書き出す前に、復元確認を行う(S5204)。
【0103】
更新したパッケージ化アプリをアプリ記憶部1210へ書き出すことは、ファイル抽出前のパッケージ化アプリに更新したパッケージ化アプリを上書きすることになるため、その前に復元可能性の確認を行う趣旨による。
【0104】
本チェックは、ファイル復元部1120によって、パッケージ化アプリや、上記復元情報等を用いて復元を行い、復元後のパッケージ化アプリと元のパッケージ化アプリが完全に一致するかどうかを確認することで実現される。ファイル復元手順の詳細は、実施の形態4を参照願いたい。
【0105】
ステップ(S5204)により、ファイル復元可能と判断した場合には、後述するステップ(S5205)〜ステップ(S5207)の処理を実施する。
【0106】
まず、データ記憶部1220へステップ(S5202)にて、パッケージ化アプリから抽出したファイル群(この例ではicon.gifファイル)を分離ファイル部1222(例えば図14に示す“resources”フォルダ内)の配下に格納する(S5205)。
【0107】
次に、ステップ(S5203)にて更新したパッケージ化アプリを更新前のパッケージ化アプリ(例えば図14に示す“app”フォルダ内)に上書きをする(S5206)。
【0108】
次に、パッケージ化アプリより分離されたファイル群を示す分離対象ファイル名リスト9100に含まれるファイル名より構成される分離ファイル一覧(Game.list(12400))を生成し、分離ファイル部1222(例えば図14に示す“Game”フォルダ内)へ書き出す(S5207)。
【0109】
なお、既に前回のファイル分離処理実施においてGame.list(12400)が生成されている場合、今回の分離処理実施によって新たに分離したファイル群のファイル名を追加し、Game.list(12400)に上書きすることとする。
【0110】
図13は、本実施の形態にて、Java(登録商標)アプリGameのJARファイルGame.jar(3100)から更新されたJarファイル(Game.jar(12200))、生成されたファイル使用情報(Game.dat(7300))、生成された復元情報(Game.info(10200))、生成された分離ファイル一覧(Game.list(12400)、抽出後ファイル群11400の一例を説明するための図である。
【0111】
図14は、上述のファイルを格納するデータ記憶部1200の一例を示す図である。
【0112】
生成されたファイル使用情報(Game.dat(7300))は、ファイル使用情報部1221(この例では“home”フォルダの中の“java”フォルダの中にある“info”フォルダに含まれる“useinfo”フォルダ内(または/home/info/useinfo/配下のデータ領域))に格納される。
【0113】
また、生成された復元情報(Game.info(10200))、は分離ファイル部1222(この例では“home”フォルダの中の“java”フォルダの中にある“info”フォルダに含まれる“dat”フォルダ内(または/home/info/dat/Game 配下のデータ領域))に格納される。
【0114】
また、生成された分離ファイル一覧(Game.list(12400))は、分離ファイル部1222に格納される。
【0115】
また、抽出後ファイル群11400(例えばicon.gif(3132)等)は上述の“Game”フォルダの中の“resources”フォルダ内に格納される。
【0116】
このようなファイル構成とすることにより、アプリラウンチャ等JARファイル群よりそのアイコンファイル等を取り出し表示する形態をとるアプリケーションの実行速度を改善することが可能である。これは、アプリラウンチャ等は、JARファイルからアイコンファイルを抽出する代わりに、分離ファイル部1222へアクセスして既に抽出がなされたアイコンファイルを取得することが可能となるためである。
【0117】
また、JARファイルから抽出がなされて分離ファイル部1222へ書き出したファイル群については、そのファイル群に関するデータがJARファイルより削除されるため、従来技術において説明をしたようにアイコン情報等と、インデックス用ファイルで同用途のファイルの二重持ちが発生しない。また本実施の形態では、パッケージ化アプリの実行時において、一時記憶部(FlashROM等の不揮発記憶領域)の使用量の削減の効果が期待できる。
【0118】
なお上記では、アイコンファイルやテキストファイル等、アプリ実行時には利用されないファイルをパッケージ化アプリより分離する手順について説明したが、本発明はこのようなアプリ実行用途以外のファイルに加え、アプリ実行時に付随して利用されるようなファイルの分離にも適用可能である。例えば、Java(登録商標)アプリに係るJARファイル内に共有ライブラリ(DLL等)が含まれている場合、本共有ライブラリを分離対象とすることで実施の形態1の場合と同様の効果を得ることが出来る。
【0119】
特に共有ライブラリはその性質上、ファイルシステム上へ展開・配置しなければJava(登録商標)アプリ等より利用することが出来ないことから、本手順によってあらかじめファイルシステム上へ配置することで、共有ライブラリのオープンに要する時間を短縮することが可能となる。
【0120】
(実施の形態2)
本実施の形態では、実施の形態1で説明したアプリケーション実行装置1000において、所定のファイルを分離し、更新したパッケージ化アプリをアプリ実行エンジン1320で実行する場合において、この更新したパッケージ化アプリに係るアプリがパッケージ化アプリより分離されたファイルへのアクセスを要求する場合の処理について説明する。
【0121】
なお、以下では実施の形態1にてダウンロードしたJava(登録商標)アプリGameに含まれるパッケージ化アプリ(Game.jar(3100))からアイコンファイルを分離したGame.jar(12200)に係るJava(登録商標)アプリGameの起動及び、実行過程を例にとり、図14、図15、図16、図17、図18、図19、図20を用いて説明を行う。特にデータ記憶部1200には図14に示すような構造にてデータが格納されているものとする。
【0122】
(1)アプリの起動
アプリ実行部1300のアプリ起動処理部1310は、アプリ起動要求部1420等のアプリ起動手段(アプリラウンチャ等)よりアプリの起動要求を受け取ることにより、ファイルアクセス部1330へ起動要求アプリに係るパッケージ化アプリ及び、当該パッケージ化アプリに対応するアプリ記述ファイルの読込みを要求し、本読込まれたファイル群をアプリ実行エンジン1320へ渡してアプリの実行を開始する。以下、本処理手順の詳細については、図15に示すフローチャートを用いて説明を行う。
【0123】
(1−1)アプリ起動に要するファイルをデータ記億部1200より取得する
アプリ起動処理部1310は、例えばパッケージ化アプリの要求を受け付けると、必要なファイル(起動要求アプリのパッケージ化アプリ(Game.jar(12200))及び当該パッケージ化アプリのアプリ記述ファイル(3200))をデータ記憶部1200より取得をすることをファイルアクセス部1330へ要求する(S15101)。
【0124】
例えば、Java(登録商標)アプリGameの起動要求を受け付けたアプリ起動処理部1310は、ファイルアクセス部1330へJARファイルGame.jar(12200)及びADFファイルGame.adf(3200)の読込みを要求する。
【0125】
ファイル読込みの要求を受けたファイルアクセス部(1330)は、アプリ記憶部(1210)より、JARファイル(Game.jar(12200))及びADFファイル(Game.adf(3200))の読込みを行う(S15201)。
【0126】
次に、分離ファイル情報アクセス部1331は、分離ファイル部1222に起動要求アプリに係る情報が格納されているか否かを確認し、これが格納されている場合は、本起動要求アプリに係る情報を元に分離ファイル情報テーブル1332を生成する。
【0127】
具体的には、分離ファイル部1222にJava(登録商標)アプリGameに関するファイル群(Game.info(10200)、Game.list(12400)、icon.gif(3132))が格納されているかどうかを確認し、これが格納されている場合は、分離ファイル一覧に対応するGame.list(12400)を取得し、本ファイルの内容に基づく分離ファイル情報テーブル1332を生成し、分離ファイル情報アクセス部1331内に格納する(S15202)。
【0128】
分離ファイル情報テーブル1331は、分離抽出処理により、Game.jarより分離されたファイル名の一覧を保持するためのテーブルであり、後述のJARファイルより分離されたファイルへJava(登録商標)アプリがアクセスするための処理を実現するために利用される。
【0129】
実施の形態1にて生成したGame.list(12400)に基づく場合、ファイル名“icon.gif”等の分離対象のファイルを構成要素とするファイル分離情報テーブル(1332)を生成し、分離ファイルアクセス部1331内に格納されることとなる。
【0130】
上記処理の後、ファイルアクセス部1330は、アプリ起動処理部1310へアプリ記憶部1210より取得したパッケージ化アプリ及び当該パッケージ化アプリのアプリ記述ファイルを引き渡す(S15202)。
【0131】
具体的には、JARファイル(Game.jar(12200))及びADFファイル(Game.adf(3200))を引き渡す。
【0132】
ステップ(S15202)にて、アプリ起動に要するファイルを引き渡されたアプリ起動処理部1310は、取得したファイルを伴った起動要求をアプリ実行エンジン1320へ発行する(S15102)。
【0133】
起動要求を受けたアプリ実行エンジン1320は、受け取ったパッケージ化アプリ及び当該パッケージ化アプリに係るアプリ記述ファイルを一時記憶部1321のパッケージ化アプリ部1322、アプリ記述ファイル部1323に各々書き出す(S15301)。
【0134】
具体的には、ファイルアクセス部1330より、Game.jar(12200)及びGame.adf(3200)を受け取ったアプリ起動処理部は、これら受け取ったファイル群を引数として、アプリ実行エンジン1320へJava(登録商標)アプリGameの起動要求を発行する。
【0135】
JARファイルGame.jar(12200)及びADFファイルGame.adf(3200)を受け取ったアプリ実行エンジン1320は、これらファイルの内容を一時記憶部1321へ書き出す。図17はJava(登録商標)アプリGame起動時の一時記憶部1321の内容を示すものである。Game.jarを一時記憶部1321へ書き出し、この記憶領域がパッケージ化アプリ部1322に相当し、Game.adf(3200)を一時記憶部1321へ書き出し、この記憶領域がアプリ記述ファイル部1323に相当する。
【0136】
次にアプリ実行エンジン1320は、一時記憶部1321に書き出されたパッケージ化アプリ部1322及び、アプリ記述ファイル部1323を元に、パッケージ化アプリよりメインモジュールに関するファイルを抽出し、これを一時記憶部1321へ書き出し、この記憶領域がメインモジュール部1324に相当するものとなる(S15302)。
【0137】
具体的には、アプリ実行エンジン1320は、アプリ記述ファイル部1323に格納されたGame.adf(3200)の構成要素であるメインクラス名Game.class17201に対応するファイルエントリであるGame.jar(12200)(パッケージ化アプリ部1322に格納されている)のGame.class(17101)を抽出し、これを一時記憶部1321の適当な未使用領域へメインクラスとして書き出し、これがモジュール部1324の一部として機能する。
【0138】
最後に、アプリ実行エンジン1320は、一時記憶部1321に書き出されたモジュール部1324より、エントリポイントとなる処理部を特定し、その特定された箇所よりアプリの実行を開始する(S15303)。
【0139】
具体的には、上記手順により一時記憶部1321に書き出されたメインクラス部のエントリポイントとなるメソッドであるstart()メソッド17301が格納された箇所よりバイトコードの実行を開始する。
【0140】
図18は、本発明の適用による一時記憶部の使用量の削減について、Java(登録商標)アプリGameの例を当てはめたものである。本発明適用後のGame.jar12200には、本発明適用前のGame.jarに含まれていたアイコンファイルicon.gif等が分離対象ファイルとして分離された後、一時記憶部1321に書き出されるため、分離されるファイルに相当するデータ量分、一時記憶部1321に空き領域とすることができる。この空き領域を他のデータに割り当てることができるようになり、一時記憶部1321をより効率よく使用することが可能となる。
【0141】
(2)アプリ実行過程におけるアプリに係るパッケージ化アプリより分離されたファイルへのアクセス
ファイルアクセス部1330は、アプリ実行エンジン1320にて実行中のアプリより、当該アプリに係るパッケージ化アプリより分離されたファイルへのアクセス要求を受け付けた場合、分離ファイル部1222よりファイルを読込む。図19は、本手順の詳細を説明するための図である。図19においてステップ(S19101)、ステップ(S10102)は主としてアプリ実行エンジン1320において行われ、ステップ(S19201)〜ステップ(S19205)は主としてファイルアクセス部1330において行われるものであり、特にステップ(S19201)〜ステップ(S19203)は主として分離ファイル情報アクセス部1331において行われるものである。
【0142】
(2−1)アプリによるファイル読込み要求を発行
アプリ実行エンジン1320にて実行中のアプリは、必要に応じてファイルアクセス部1330へファイルの読込みを要求する(S19101)。
【0143】
図19は、Java(登録商標)アプリの一形態であるiアプリ(R)における、当該iアプリに係るJARファイルからファイルを読込む手順を伴うメソッドstart()の実装例を示す。なお、ここでは一例としてiアプリを挙げているが、このようにJARファイルからファイルを取得する手順自体はiアプリに限定されたものではない。iアプリ以外のJava(登録商標)アプリの形態であるMidlet等においても、JARファイルからのファイル読込みに関する手順は用意されており、以下で記述する手順を実施することは可能である。
【0144】
iアプリは、DoJa(R)仕様に基づいて作成されたJava(登録商標)アプリであり、DoJaライブラリを利用してiアプリに係るJARファイルよりファイルを読込むことが可能である。具体的には、DoJaライブラリResourceManagerクラスのメソッドgetImage()等のメソッドを利用して、JARファイルが含有するイメージファイル等を取得することが可能である。
【0145】
上記メソッドgetImage()は、引数として与える文字列の内容により、ファイル読込み元を指定することが出来る。図20におけるgetImage()メソッド呼出においては、引数として“resource:///icon.gif”を指定している(図20に示す20100)。本文字列において“resource://”は、当該iアプリに係るJARファイルをファイルの読込み元として指定するものである。また、“/icon.gif”は、当該iアプリに係るJARファイルのルートフォルダに格納されるicon.gifを読込み対象ファイルとして指定するものである。
【0146】
(2−2)パッケージ化アプリより分離されたファイルの読込み
分離ファイル情報アクセス部1331は、ステップ(S19101)にて読込みを要求されたファイルの読込み元が実行中アプリに係るパッケージ化アプリであるかどうかを判定し、パッケージ化アプリである場合には、後述するステップ(S19202)へ進み、パッケージ化アプリでない場合には、後述するステップ(S19204)へ進む(S19201)。
【0147】
ステップ(S19201)において、読込み元が実行中アプリに係るパッケージ化アプリであると判定した場合、分離ファイル情報テーブル1332に、読込み要求ファイル名が含まれるか否かを判定し(S19202)、含まれる場合は、分離ファイル部より該当する読込み要求ファイルを読込む(S19203)。
【0148】
具体的には、図20に示すメソッドgetImage()20100によりファイル読込み要求を受け付けたファイルアクセス部1330の分離ファイル情報アクセス部1331は、ファイル読込み元がJARファイルか否かを確認する。メソッドgetImage()20100は、ファイル読込み元としてJARファイル、ファイル名としてicon.gifを指定するものであるため、本条件を満たす。
【0149】
次に分離ファイル情報アクセス部1331は、分離ファイル情報テーブル1332に、読込み要求ファイル名icon.gifが含まれるか否かを確認する。上記手順(1)の(1−1)にて示したとおり、icon.gifは、分離ファイル情報テーブル1332に含まれるため、本条件も満たす。以上の要件を満たすため、分離ファイル情報アクセス部1331は、「icon.gifは、JARファイル内部には存在せず、分離ファイル部に格納されている」と認識し、分離ファイル部のJava(登録商標)アプリGameに関する部分(つまり、例えば図14に示すような“resources”フォルダ内に格納された)icon.gifを読込む。
【0150】
(3)(2)以外のファイルの読込み
ファイル読込み元がパッケージ化アプリ以外、もしくはファイル読込み元はパッケージ化アプリだが、分離されたファイルではない場合は、指定されたファイル読込み元よりファイルの読込みを行う(S19204)。本ファイル読込み処理は、本発明を実施しない場合においても行うべき通常のファイル読込み処理である。
【0151】
(4)読込んだファイルの内容を一時記憶部1321への格納
(2)、もしくは(3)の手順で、データ記憶部1200及び一時記憶部1321内のパッケージ化アプリ部1322より読込んだファイルの内容を一時記憶部1321の空き領域へ格納する(S19205、S19102)。本一時記憶部1321への格納処理は、本発明を実施しない場合においても行うべき通常のメモリコピー処理である。
【0152】
上記一連の手順によって、実行中のアプリが読込みを要求したファイルの内容が一時記憶部1321に格納される。上記処理により、実行中のアプリは、読込みを要求したファイルの読込み元がパッケージ化アプリであり、且つ読込みを要求したファイルがパッケージ化アプリより分離されたものであっても、分離されることなくパッケージ化アプリに含まれるファイルへのアクセスと同一の手順でファイルの読込みが可能である。
【0153】
(実施の形態3)
本実施の形態では、図1に記載の本発明によるアプリケーション実行装置1000にて、本実施の形態1の手順によってファイルの分離を行ったパッケージ化アプリに係るアプリをアプリ実行エンジン1320で実行する過程において、このパッケージ化アプリに係るアプリが実行中に殆ど利用しないファイルであって当該パッケージ化アプリに含まれるものについては、ファイルの分離対象とすべくファイル使用情報の更新を行い、本ファイル使用情報に従ってファイルの分離する際の処理手順を説明する。
【0154】
なお、以下では本実施の形態1にてアイコンファイルを分離したGame.jar(12200)に係るJava(登録商標)アプリGameの実行過程、及び実行後のファイル使用情報の更新とファイルの分離を例にとり、図21、図22、図23、図24、図25、図26、図27を用いて説明を行う。このGame.jar(12200)が含むファイルエントリreadme.txtはJava(登録商標)アプリGame実行時に利用されないファイルであるとする(アプリラウンチャにおけるアプリ動作説明に利用されるテキストファイルである)。
【0155】
(1)ファイルアクセスの監視
実行中のアプリに係るパッケージ化アプリ含まれるファイルについて、そのファイルがアプリの実行中に殆ど利用されないものであるか否かを判定するために、ファイルアクセス監視部1340は、ファイルアクセス部1330よりファイルアクセス発生に関する情報を受け取り、受け取った情報に基づいてファイルアクセス監視テーブル1341の内容を更新することで、アプリ実行中にアクセスが発生した実行中のアプリにかかるパッケージ化アプリに含有されるファイルを特定可能な情報を構築することが出来る。
【0156】
図21はアプリからのファイル読込み要求発生時における、本ファイルアクセス監視の処理手順を示すものである。図21において、図19に示したフローチャートのステップの符号と同一のものは図19に示したものと同じまたはこれに相当するものであるため、詳細な説明(特にS19101、S19201〜S19203、S19102の処理に関する説明)は省略する。
【0157】
図21において、S19204において、ファイル読込み元がパッケージ化アプリ以外、もしくはファイル読込み元はパッケージ化アプリだが、分離されたファイルではない場合は、指定されたファイル読込み元よりファイルの読込みを行った後、ファイルアクセス部1330におけるファイル読込み完了後アプリ実行エンジン1320へのファイル内容の返却前に、ファイルアクセス監視部1340へのファイルアクセスを実施したことを通知する(S21101)。
【0158】
ファイルアクセスを実施したことの通知を受けたファイルアクセス監視部1340は、通知を受けたファイルアクセスがパッケージ化アプリに含まれるファイルへのアクセスであるかどうかをチェックする(S21201)。
【0159】
S21201において、通知を受けたファイルアクセスがパッケージ化アプリ内のファイルへのアクセスである場合には、後述するS21202へ進み、そうでない場合はS19205へ進む。
【0160】
S21201において、通知を受けたファイルアクセスがパッケージ化アプリ内のファイルへのアクセスである場合、ファイルアクセス監視部1340が具備するファイルアクセス管理テーブル1341に、通知を受けたファイルにアクセスが発生した旨の情報を書き込む(S21202)。
【0161】
S21202において、書き込むが完了した後、S19205へ進む。
【0162】
S19205については図19を用いて説明した内容と同じであるので、ここではその詳細な説明を省略する。
【0163】
このように構成することにより、アプリ実行中において、アクセスされるファイルを監視することが可能となる。
【0164】
ここでは、本実施の形態2にて示したJava(登録商標)アプリGame実行中のファイル読込みを例にして、上記処理を具体的に説明する。
【0165】
アプリ実行中におけるファイルアクセスは、本実施の形態2にて示したように、明示的にアプリからファイルアクセスを要求する場合に限らず、アプリ実行エンジン1320によって内部処理としてファイルアクセスが行われる場合がある。
【0166】
Java(登録商標)におけるクラスファイルのメモリへのロードがその一例である。Java(登録商標)の場合、アプリ実行エンジン1320の具体的な一例であるJava(登録商標)VMは、起動するJava(登録商標)アプリのメインクラス及びそのメインクラスのエントリポイントであるメソッドの実行に必要最低限のクラスファイルを読込んで一時記憶部1321へ格納し、そのJava(登録商標)アプリのJARファイルに含まれるクラスファイルのうち一時記憶部1321へ格納しなかったその他のクラスファイルは、必要に応じてJARファイルから適宜読み出される。
【0167】
図22は、Java(登録商標)アプリの一例であるGameに含まれるクラスにおいて、ソースコードの要部の一例を示すものである。
【0168】
図22に示す例では、Java(登録商標)アプリGameのメインクラスであるGameクラス22100は、エントリポイントであるstart()メソッドを含む。Initializeクラス22200は、前記start()メソッドからのみ特定の条件を満たしたとき利用されるメソッドinit()を含む。Mainクラス22230は、Java(登録商標)アプリGameのメイン処理であるmain()メソッドを含む。
【0169】
ここでは、Java(登録商標)アプリGame起動時の処理内容について上記ソースコード群を用いて説明する。まずJava(登録商標)VMよりGameクラスのstart()メソッドが呼び出される。start()メソッドでは、まずGameクラスの内部メソッドisInitialized()が呼び出される。本メソッドの詳細な内容については割愛するが、Java(登録商標)アプリGameの初期化処理が行われていない場合はfalse、初期化処理が行われている場合はtrueを返すものであるとする。
【0170】
その後IsInitialized()の戻り値によって初期化処理完了かどうかを取得し、初期化処理が未完了(戻り値がfalse)の場合は、Initializeクラスのメソッドinit()を、初期化処理が完了(戻り値がtrue)の場合は、Mainクラスのメソッドmain()を呼び出す。
【0171】
ここで、Initializeクラスのクラスファイル、Mainクラスのクラスファイルの読み込みは、それぞれInitializeクラスのメソッドinit()の呼出、Mainクラスのメソッドmain()の呼出の直前に行われる。
【0172】
すなわち、Initializeクラスのクラスファイルの読み込みは、メソッドIsInitialized()がtrueを返す場合である、初回起動時、もしくは二回目以降の起動時であるが前回以前の起動において初期化処理が失敗した場合のみ行われ、クラスInitializeクラスのクラスファイルの読み込みは行われない。
【0173】
一方クラスMainについては、Java(登録商標)アプリ起動時に必ず読込まれる。なお、以下説明の簡略化の為、Java(登録商標)アプリの一例であるGameのJARファイルに含まれる、上記に挙げたもの以外のクラスファイル及びリソースファイル(readme.txtを除く)については、Java(登録商標)アプリの一例であるGame実行中に最低1度はロードが行われることとする。
【0174】
図23は、例えば上記クラスファイルの読込みにより、ファイルアクセス監視テーブルの状態の変化を説明するための図である。図23の23100は、Java(登録商標)アプリGame初回起動時におけるJava(登録商標)アプリ終了直後のファイルアクセス監視テーブル1341の一例を示す。初回起動時においては、Initializeクラス23101を含め全てのクラスが読込まれるため、クラスファイルについてはすべてアクセス有が設定されている。一方、本実施例の前提部で説明したとおり、readme.txt(23102)はJava(登録商標)アプリ実行時には使用されないファイルであるため、アクセスなしが設定される。
【0175】
Java(登録商標)アプリGame2回目起動時におけるJava(登録商標)アプリ終了直後のファイルアクセス監視テーブル1341についても、初回起動時とほぼ同じ内容の設定となるが、二回目以降の起動においては、Initializeクラスはロードされないため、本クラスに対する設定値はアクセスなしに更新される。Java(登録商標)アプリGame10回目起動時におけるJava(登録商標)アプリ終了直後のファイルアクセス監視テーブルについては、2回目起動時の内容と同一である。
【0176】
(2)ファイルの分離
アプリ実行終了時処理において、アプリ実行エンジン1320は、アプリ終了に伴う処理(例えばリソースの解放に関する処理などであり、このような処理は本実施の形態に関わらず行われる処理である)を実施する(S24101)。
【0177】
次に、アプリ実行エンジン1320は、ファイルアクセス監視部1340へ、ファイル使用情報の更新を要求する(S24102)。
【0178】
本要求を受けたファイルアクセス監視部1340は、ファイルアクセス監視テーブル1341の内容を引数として、ファイル使用情報更新部1111へ前記実行を終了したアプリに係るファイル使用情報の更新及び、ファイルの分離の実施を要求する(S24201)。
【0179】
本要求を受け取ったファイル使用情報更新部1111は、実施の形態1にて説明した処理手順に基づきファイル使用情報の更新を実施し、その後ファイル分離判定部1112によるファイル分離判定、及びファイル分離部1113によるファイル分離を適宜実施する。
【0180】
ここで、実施の形態1の場合と大きく異なる点が、ファイルアクセス監視テーブル1341の内容を引数としてファイル使用情報の更新処理を実施する点である。すなわち実施の形態1において、図5に示したS5004の処理が実施される。
【0181】
S5004における処理手順についてJava(登録商標)アプリの一例であるGameにおいて、Java(登録商標)アプリGameの初回実行前のGame.datが初回実行後にファイルアクセス監視テーブル7300によってどのように更新されるのかを図示した一例が、図25である。
【0182】
ファイル使用情報更新部1111は、引数として渡されたJava(登録商標)アプリの一例であるGameの実行過程で生成され、ファイルアクセス監視部1340内に保持されたファイルアクセス監視テーブル1341に基づき、ファイル使用情報7300に含まれる情報(この例では各ファイルの“count”に対応する値および“Lounched Count”)を更新する。
【0183】
Java(登録商標)アプリの一例であるGameの、初回起動前のファイル使用情報7300に含まれる“Lounched Count”に対応する値は0、各ファイルの“Count”に対応する値は0である。
【0184】
初回起動後、“Lounched Count”に対応する値に1が加えられる(インクリメントされる)。
【0185】
また、ファイルアクセス監視テーブル1341において、ファイル毎にアクセスフラグを調べ、アクセスフラグが「アクセス有り」となっているファイル名に対応するファイルについては、ファイル使用情報7300における該当する使用情報(この例ではNameの値が「アクセス有り」となっているアクセスフラグに対応するファイル名と同じ使用情報)の“Count”に対応する値に1が加えられる(インクリメントされる)。
【0186】
また、アクセスフラグが「アクセスなし」となっているファイル名に対応するファイルについては、該当する使用情報の“Count”に対応する値の変更はない。
【0187】
図25に示す例では、アプリ終了時におけるファイルアクセス監視テーブル1341において、アクセスフラグが「アクセス有り」となっているファイル名に対応するファイル(例えば、Game.class、Initialize.class、Main.class、game.gif)について、Java(登録商標)アプリGameの初回起動後の該当する使用情報の“Count”に対応する値に1が加えられ(インクリメントされる)、アクセスフラグが「アクセスなし」となっているファイル名に対応するファイル(この例ではreadme.txt)については、該当する使用情報の“Count”に対応する値の変更はないことを示している。
【0188】
Java(登録商標)アプリGameの二回目の実行終了後においても、二回目の実行終了時のファイルアクセス監視テーブル7300に基づき、ファイル使用情報7300を更新する点に変わりはない。しかしながら、Java(登録商標)アプリGameに含まれるInitialize.classは初回の実行において、メソッドIsInitialized()がtrueを返していた場合、再度の実行は必要ないため、2回目のメソッドIsInitialized()はfalseを返す。このため、Java(登録商標)アプリGameの2回目以降の実行において、Initialize.classは一時記憶部1321へロードされなくなり、結果としてファイルアクセス監視テーブル1341のInitialize.classに対応するアクセスフラグは「アクセスなし」となる。
【0189】
つまり、ファイル名がInitialize.classに対応するファイル使用情報7300の使用情報25502については、Count(25504)の値の変更はない。
【0190】
また、上述したとおり、readme.txtはJava(登録商標)アプリの一例であるGameの実行時には使用されないファイルであるため、ファイルアクセス管理テーブル1341の該当するアクセスフラグにはアクセスなしが設定される。
【0191】
図27は、Java(登録商標)アプリの一例であるGameを10回起動した後のファイル使用情報の一例を説明するための図である。図27においては、Nameの値が“Initialize.class”の使用情報の“Count”の値が1、Nameの値が“readme.txt”の使用情報の使用情報の“Count”の値が0である。
【0192】
図5において説明したように、S5101では、ファイル使用情報7300に基づき、分離対象のファイルを決定し、決定したファイルに関する情報を分離ファイル名リストへ追加すること、S5101の具体的な処理の一例を示す図8の説明において、S8001では“LaunchedCount”が周期定数Iに定める値(図8で説明した例ではこの値は10)の倍数毎にS8002〜S8006に示すフローが実行されること、S8003でYes(使用回数の上限を定めていないファイル)かつS8005でNo(アプリの起動回数に分離定数Xを乗じた値よりもファイルの使用回数方が少ない)の場合、分離対象ファイル名リスト9100に対象となるファイルの情報が追加されることを説明した。
【0193】
ここでは、図8で説明したフローチャートに示す処理を図26に例示したファイル使用情報7300に適用した場合について説明をする。
【0194】
まず図26のファイル使用情報は、上述したとおりJava(登録商標)アプリの一例であるGameを10回起動した後のファイル使用情報であるので、図8におけるS8001の判断結果はYesとなる。
【0195】
S8002は、後述するS8003〜S8006をファイル使用情報7300に含まれる各ファイルの使用情報に対して行なうことを示すものである。
【0196】
図8の説明において、分離定数Xの値を0.1としたものを例に説明しているので、“LaunchedCount”の値が10のとき、図8のS8005におけるUの値は0.1×10=1となる。
【0197】
つまり、S8005、Java(登録商標)アプリの一例であるGameを10回起動した後、ファイル使用情報7300に含まれる各ファイルの使用情報において、“Count”が1回以下の使用情報に対応するファイルに関する情報が分離対象ファイル名リスト9100に追加される。
【0198】
図27の例では、Nameの値が“icon.gif”に対応する使用情報の“Count”の値は0、“Initialize.class”に対応する使用情報の“Count”の値は1、“readme.txt”に対応する使用情報の“Count”の値は0であり、更新された分離対象ファイル名リスト9100にはこれらのファイル(“Count”の値が1以下の使用情報に対応するファイル)に関する情報が含まれるようになる。
【0199】
具体的には、Initialize.classの使用情報の構成要素Countが1、icon.gifの使用情報の構成要素Countが0、readme.txtの使用情報の構成要素Countが1であり、これらは分離対象として、分離対象ファイル名リスト9100へ加える。
【0200】
こうして、Initialize.class及びreadme.txtが新たに分離対象となり、ファイル分離部によってGame.jarより分離される。
【0201】
図28は、図27に示された分離対象ファイル名リスト9100に基づいて分離がなされた後のJava(登録商標)アプリの一例であるGame.jar、Game.dat、Game.info、Game.list、抽出後ファイル群の一例を示す。分離後のGame.jarはInitialize.class及びreadme.txtなどの使用回数が少ないファイルが分離されたことによってさらにファイルサイズが小さくなる。
【0202】
また、今回Game.jarから分離されたInitialize.class、及びreadme.txtは分離ファイル部1222へ格納される。
【0203】
なお、上記ファイル分離による効果を得るためには、Java(登録商標)アプリが図22で例示したような構成をとることを必要とするところ、図22のJava(登録商標)アプリGameで例示した処理は、本例における特別な処理形態ではなく、多くのJava(登録商標)アプリが普通に採用する構成である。つまり本発明の効果は、現存する多くのJava(登録商標)アプリにおいて得られるといえる。
【0204】
これは、多くのJava(登録商標)アプリは、そのJava(登録商標)アプリの初回起動時のみHttp通信等を行い、Java(登録商標)アプリ実行に必要なデータを取得してデータ記憶部1200に例示されるようなJava(登録商標)アプリ専用の不揮発記憶領域へ格納する、という処理形態をとることで、二度目以降の起動については、データ記憶部1200から読み込んで実行することにより、起動処理の高速化及び、通信回数の削減効果が図ることが通例となっているためである。
【0205】
多くのJava(登録商標)アプリに係るJARファイルに含まれるクラスは、Java(登録商標)アプリ起動時にほぼ毎回使用されるクラス、ユーザの特定操作時にのみ使用されるクラス、初回起動時等のタイミングにおいてのみ使用されるクラス等が混在した状態となっている。
【0206】
このため、後者で挙げた使用回数が僅少なクラスに係るファイルを分離することで、JARファイルのサイズが削減され、結果として一時記憶部1321へ使用しないまたは使用頻度の低いファイルをロードすることがなくなり、その分、一時記憶部1321の空き容量が増え、他の処理にこの空き容量を利用できるようになるので、アプリ実行時において、一時記憶部1321に占めるJARファイルの領域を削減するとともに、一時記憶部1321の利用効率の向上が図れる。
【0207】
(実施の形態4)
実施の形態4では、図1に記載の本発明によるアプリケーション実行装置1000における、実施の形態1や実施の形態3の手順によってファイルの分離を行ったパッケージ化アプリ1323を分離前の元のパッケージ化アプリへ復元するための処理手順を説明する。
【0208】
なお、以下では図27に示した分離がなされたGame.jarを元に復元する処理を例にして説明を行う。
【0209】
図29は本実施の形態のアプリケーション実行装置において、復元処理の一例を説明するためのフローチャートである。
【0210】
また、図30は図29に示すフローチャートを適用して復元するときのGame.jarの変化を模式的に示したものである。
【0211】
以下に図28に示したフローチャートを説明する。
【0212】
(4−1)復元に必要なファイルを一時記憶部1321より読込む
アプリ復元部1120は、アプリ記憶部1210より復元対象のパッケージ化アプリを、分離ファイル部1222より復元対象のパッケージ化アプリに係る復元情報10200、分離ファイル一覧12400を取得する(S28001)。
【0213】
図27に示すGame.jarを上述の処理にあてはめて説明すると、S2801は復元情報に対応するGame.info、分離ファイル一覧に対応するGame.listをデータ記憶部1200より読み込むことに相当する。
【0214】
(4−2)元パッケージ化アプリに存在した全てのファイルエントリを生成する
次にファイル復元部1120は、(4−1)で取得したパッケージ化アプリに含まれる全ファイルエントリを取り出す(S28002)。また、(4−1)で取得した分離ファイル一覧に基づきパッケージ化アプリより分離された全てのファイルをパッケージ化アプリのファイルエントリ形式に変換する(S28003)。
【0215】
図28に示すGame.jarを上述の処理にあてはめて説明すると、S28002は、図30に示す復元前のGame.jarに含まれるファイルエントリGame.class、Main.class、game.gif等を取り出す処理がこれに相当する。
【0216】
なお、図28に示すGame.jarに含まれる全ファイルエントリを取り出したものを模式的に示したものが、図30において、29400の符号を付したものである。
【0217】
また、S28003は、分離ファイル一覧に対応するGame.listに指定されたファイル名“Initialize.class”、“icon.gif”、“readme.txt”等のファイルを分離ファイル部1222より読込み(Initialize.class、icon.gif、readme.txt等)、これらをJARファイルエントリ形式に変換する。
【0218】
ここで、JARファイルエントリ形式は、実施の形態1にて挙げたとおり無圧縮、及びDEFLATE圧縮アルゴリズム等による圧縮のいずれかである。
【0219】
なお、図30に示す復元前のGame.jarに対応する分離ファイル一覧(Game.list)に基づいて、分離されたファイル群29500を分離ファイル部1222より読込み、JARファイルエントリ形式に変換したのを模式的に示したものが、図29における29600の符号を付したものである。
【0220】
また、図30に示す復元前のGame.jarに含まれるファイルエントリがどのJARファイルエントリ形式であるかを知るためには、復元前のGame.jarに含まれるLocal File Headerまたは対応するGame.infoに含まれるLocal File Headerに格納されている情報を参照すればよい。
【0221】
また、図30に示す分離ファイル一覧(Game.list(12400))に基づいて、分離されたファイルがどのJARファイルエントリ形式であるかを知るためには、図30に示すGame.infoに含まれるLocal File Headerまたは図30に示す復元前のGame.jarに含まれるLocal File Headerに格納されている情報を参照すればよい。
【0222】
(4−3)元のパッケージ化アプリを組み立てる
次にアプリ復元部1120は、S28002、S28003にて生成したファイルエントリと、S28001にて読み込んだ復元情報を利用して、復元情報10200(Game.info)に含まれるファイルエントリ格納位置・順序に基づき生成したファイルエントリの連結を行う(S28004)。
【0223】
その後、復元情報10200をS28004にて連結したファイルエントリに連結する(S28005)。
【0224】
次にS28005において、完成したデータを元のパッケージ化アプリ(Game.jar(3100))として、アプリ記憶部1210への格納等を行う(S28006)。
【0225】
上述の処理にあてはめて説明すると、S28002、S28003にて生成したファイルエントリ(Initialize.class、icon.gif、readme.txt、Game.class、Main.class、game.gif等)を復元情報10200に含まれるCentral Directoryの内容(つまりファイルヘッダ)に基づいて、各ファイルエントリの連結を行なうことがS28004に相当する。
【0226】
また、復元情報10200に含まれるLocal File Headerが先頭となるように連結したファイルエントリに連結するとともに、復元情報10200に含まれるCentral Directoryを連結したファイルエントリの後ろに連結するのがS28005に相当する。
【0227】
上記手順により、分離されたJARファイルを元のJARファイルへ復元することが可能となる。本手順は、ファイル分離前の復元確認処理(S5204)や、JARファイルを情報端末外へエクスポートする場合に利用する。
【0228】
(実施の形態5)
実施の形態5では、図1に記載の本発明によるアプリケーション実行装置1000における、実施の形態1や実施の形態3の手順によってファイルの分離を行ったパッケージ化アプリをデータ記憶部1200より削除する際に、パッケージ化アプリの分離によって生成したファイル群についても一括削除するための処理手順を説明する。
【0229】
なお、データ記憶部1200へのファイルアクセスについては、実施の形態1の結果であるJava(登録商標)アプリGameのファイル分離実施後のファイル構造を図示した図13、図14を用いることとする。
【0230】
図13に示すように、Java(登録商標)アプリGameに対し分離がなされると、アプリ記述ファイル3200、分離後のパッケージ化アプリ12200、ファイル使用情報7300、復元情報10200、分離ファイル一覧12400、パッケージ化アプリから分離され抽出された抽出後ファイル群11400がデータ記憶部1200に格納される。
【0231】
図14に示すように分離後のパッケージ化アプリ12200、アプリ記述ファイル3200はデータ記憶部1200のアプリ記憶部1210(より具体的には、図14に示す“app”フォルダの中)にそれぞれGame.jar、Game.adfというファイル名で記憶される。
【0232】
ファイル使用情報7300はデータ記憶部1200の分離ファイル情報部1220内のファイル使用情報部(より具体的には図14に示す“useinfo”フォルダの中)にGame.datというファイル名で記憶される。
【0233】
復元情報10200、分離ファイル一覧12400は、データ記憶部1200の分離ファイル情報部1220内の分離ファイル部1222(より具体的には図14に示す“Game”フォルダの中)にそれぞれGame.info、Game.listというファイル名で記憶される。
【0234】
パッケージ化アプリから分離され抽出された抽出後ファイル群11400は、データ記憶部1200の分離ファイル情報部1220内の分離ファイル部1222(より具体的には“resources”の配下)に記憶される。図14に示す例では、抽出後ファイル群11400は“icon.gif”というファイル名を有するファイル等が記憶されることを示している。
【0235】
図31は、ファイルの分離を行った後のパッケージ化アプリを削除する処理手順の一例を示すものである。この処理手順に従った処理は、専らアプリ削除部1130にてなされる。
【0236】
アプリ削除部1130は、アプリ削除要求を受け取ると、当該削除対象アプリに係るパッケージ化アプリ、及び対応するアプリ記述ファイルをアプリ記憶部1210より削除する(S30001)。図14に示した例では、“app”フォルダの中のGame.jar、Game.adfを削除することがS30001に相当する。
【0237】
その後、アプリ削除部1130は、当該パッケージ化アプリ分離によって生成されたファイル使用情報、復元情報、分離ファイル一覧の削除及び、分離ファイル一覧に列挙されたファイル群の削除を行う(S30002)。図14に示した例では、“Game”フォルダの中のGame.info、Game.listを削除するとともに、“resources”フォルダの中の配下のファイルを削除するS30001に相当する。
【0238】
上述の具体的な削除はファイルを削除の対象としたが、これに限定される必要はなく例えば、フォルダ(ディレクトリ)を削除するような構成としても同様の効果を奏する。例えば、Gameという名称のフォルダ(ディレクトリ)を削除した場合には、その配下のファイル、フォルダも同時に削除される。
【0239】
上記手順により、Java(登録商標)アプリの削除に合わせて、当該Java(登録商標)アプリに係るJARファイル及び分離によって生成されたファイル群も連動して削除することが可能となる。
【0240】
このように一気に削除を実施しなければ、ファイルシステム上に分離によって生成されたファイルが削除されることなく残ってしまうことになるため、本手順によるファイル群の一括削除はデータ記憶領域の有効活用において重要である。
【0241】
(実施の形態6)
実施の形態6では、図1に記載の本発明によるアプリケーション実行装置1000における、アプリ起動に係るユーザインターフェースのアイコン等情報表示処理について説明する。
【0242】
アプリケーション実行装置1000において、ユーザは、一覧表示処理部1400の一覧表示部1401が表示する起動可能アプリ一覧より、起動したいアプリを選択し、これを起動することができる。
【0243】
起動したいアプリの選択は、ユーザのキー入力によって行われる。キー入力はキー入力部1500によって受け付けられ、キー入力部1500は、入力されたキー情報をユーザ入力受付部1402へ通知する。入力されたキー情報を受け取ったユーザ入力受付部1402はキー情報に応じて、起動可能アプリ一覧の更新を一覧表示部1401へ要求、もしくはアプリの起動をアプリ起動要求部1403へ要求をする。アプリ起動要求を受けたアプリ起動要求部1403は、当該起動要求に係るアプリに関する情報を引数として、アプリ起動処理部1310へアプリ起動要求を行う。また、起動可能アプリ一覧の更新要求を受けた一覧表示部1401は、適宜分離ファイル部よりJARファイルより分離されたアイコン情報を取得しながら、起動可能アプリ一覧の表示更新を行う。
【0244】
図32は、本起動可能アプリ一覧表示更新処理について、アプリラウンチャの処理を一例として説明するための図である。
【0245】
始めに一覧表示部1401は、画面に表示可能な個数分に対応するアプリの名前と、アイコンイメージをデータ記憶部1200に格納された情報等を利用して取得する。前記アプリの名前についてはアプリ記述ファイルから、アイコンイメージはアプリ記述ファイルに記載のアイコンファイル名を元にパッケージ化アプリより抽出することで取得できる。しかし、アイコンイメージを分離し、分離ファイル部1222に記憶しているパッケージ化アプリについては、上記パッケージ化アプリからのアイコンイメージ抽出を行うことなく、分離ファイル部1222よりアイコンイメージの取得が可能である。
【0246】
具体例を挙げて説明すると、一覧表示部は画面31100に表示可能なアプリ数(この例では3)分、アプリ名及びそのアプリのアイコンイメージの取得を試みる。始めに一覧表示部は、Java(登録商標)アプリGameに関するアプリ名及びアイコンイメージの取得を試みる。アプリ名については、アプリ記憶部1210に格納されたアプリ記述ファイル(ADFファイル)に記載の情報によって取得可能である。アイコンイメージについては、ADFファイルに記載されたアイコンイメージのファイル名に基づき、Game.jarより抽出を行う前に、分離ファイル部1222に前記ファイル名のファイルが存在するかどうかを確認する。
【0247】
ここで存在する場合については、パッケージ化アプリであるGame.jarからの抽出は行わず、分離ファイル部1222より読込みを行い、存在しない場合については、Game.jarからの抽出を行なう。こうして取得したアプリ名及びアイコンイメージが表示される(31101)。上記手順は、他のアプリであるTool、Memoに対しても行われ、画面31100が構築される。
【0248】
なお、アイコンイメージの他アプリの説明文の表示(31102)を行うためにJARファイルよりテキストファイル(図3に示す例では、“readme.txt”など)を読込む機能を有するアプリラウンチャも存在する。このようなアプリラウンチャは、上記手順においてアイコンイメージだけでなく、説明文に係るテキストファイルも合わせて取得することにより実現可能である。
【0249】
また、本説明文に係るテキストファイルのファイル名がアイコンイメージ同様ADF等に記述可能な場合は、ファイル使用情報更新部においてアイコンイメージだけでなく説明文に係るテキストファイルも分離対象とすることにより、上記アイコンイメージ同様分離ファイル部からの取得が可能となる。
【0250】
上記手順により、JARファイルよりアイコンイメージを逐次取得する処理形態に比べて起動可能アプリ一覧表示に要する時間を短縮することが可能である。なお、前記と同様の効果を有する技術としてアイコンキャッシュが挙げられるが、アイコンキャッシュでは、JARファイルとキャッシュ領域に同一のアイコンイメージを示す情報を保持する必要があるところ、本発明ではアイコンイメージ等の二重持ちが発生しないため、不揮発領域を圧迫しない。この省メモリ性も、本実施の形態が奏する効果である。
【産業上の利用可能性】
【0251】
本発明に係るアプリケーション実行装置は、パッケージ化アプリが含有する殆どアプリが使用しないファイルを分離することで、アプリ実行における一時記憶領域の使用量を削減する効果及び、アプリラウンチャの表示処理を高速化する効果を有し、情報端末や携帯電話などに有用である。
【0252】
また、本発明に係るアプリケーション実行装置は、通信機能を有したAV機器などにも有用である。
【図面の簡単な説明】
【0253】
【図1】本実施の形態のアプリケーション実行装置を説明するための図
【図2】本実施の形態において、パッケージ化アプリファイルとアプリ記述ファイルの一例を示す図
【図3】本実施の形態において、JARファイルとADFファイルの一例を示す図
【図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】本実施の形態において、アプリ削除時に分離ファイル群を削除処理する一例を示すフローチャート
【図32】本実施の形態において、アプリラウンチャの一例を示す図
【符号の説明】
【0254】
1000 アプリケーション実行装置
1100 アプリファイル管理部
1101 アプリ取得部
1110 アプリ分離部
1111 ファイル使用情報更新部
1112 ファイル分離判定部
1113 ファイル分離部
1120 ファイル復元部
1130 アプリ削除部
1200 データ記憶部
1210 アプリ記憶部
1220 分離ファイル情報部
1221 ファイル使用情報部
1222 分離ファイル部
1300 アプリ実行部
1310 アプリ起動処理部
1320 アプリ実行エンジン
1321 一時記憶部
1322 パッケージ化アプリ部
1323 アプリ記述ファイル部
1324 モジュール部
1330 ファイルアクセス部
1331 分離ファイル情報アクセス部
1332 分離ファイル情報テーブル
1340 ファイルアクセス監視部
1341 ファイルアクセス監視テーブル
1400 一覧表示処理部
1410 ユーザ入力受付部
1420 アプリ起動要求部
1430 一覧表示部
1500 キー入力部
2100 パッケージ化アプリ
2110 ヘッダ情報
2120 プログラムモジュールファイルエントリ群
2130 リソースデータファイルエントリ群
2140 ファイルエントリ管理情報
2141 ファイルエントリファイルヘッダ
2142 ファイルエントリのOffset
2143 ファイルエントリのLength
2144 ファイルエントリのName
2200 アプリ記述ファイル
2201 起動プログラムモジュール
2202 アイコンリソース
6100 ファイル使用情報
6110 ファイル使用情報の共通情報
6111 アプリ起動回数
6120 パッケージ化アプリ内ファイル1使用情報
6121 パッケージ化アプリ内ファイル1のファイル名
6122 パッケージ化アプリ内ファイル1のアプリ実行時最大使用回数
6123 パッケージ化アプリ内ファイル1のアプリ実行時使用回数累計

【特許請求の範囲】
【請求項1】
モジュールファイル群及びリソースファイル群をパッケージングしたファイルであるパッケージ化アプリを記憶し、実行することが可能なものであって、
前記パッケージ化アプリ及び前記パッケージ化アプリに含まれるファイルに関連する情報を記述する記述ファイルを記憶するデータ記憶部と、
前記データ記憶部に記憶されたパッケージ化アプリを初めて実行する場合、前記記述ファイルに含まれる情報に基づいて、前記パッケージ化アプリに含まれるファイルおよび前記パッケージ化アプリの実行中に前記ファイルが使用されるか否かを示す情報を含むファイル使用情報を作成するファイル使用情報更新部と、
前記ファイル使用情報更新部により得られるファイル使用情報に基づいて、前記パッケージ化アプリに含まれるファイルのうち、前記パッケージ化アプリの実行中に使用されないファイルを判定する判定部と、
前記判定部により判定されたファイルを前記パッケージ化アプリから分離し、前記分離したファイルと、前記ファイルを分離されたパッケージ化アプリを前記データ記憶部に記憶するファイル分離部と、
前記ファイル分離部によりファイルが分離されたパッケージ化アプリを一時的に格納する一時記憶部および、前記一時記憶部に格納された前記パッケージ化アプリを実行可能なデータ形式となるようにして前記一時記憶部の記憶領域へ展開し、実行するアプリ実行エンジンを有するアプリ実行部とを備えたアプリケーション実行装置。
【請求項2】
前記パッケージ化アプリは、前記モジュールファイル群またはリソースファイル群に含まれる各ファイル対して、前記各ファイルの格納位置、サイズに関するファイルヘッダ情報を含み、前記ファイルヘッダ情報に示された格納位置に基づいて前記モジュールファイル群およびリソースファイル群に含まれる各ファイルが格納されており、
前記ファイル分離部により前記パッケージ化アプリからファイルを分離する場合、分離する対象のファイルおよび前記分離する対象のファイルに対応するファイルヘッダ情報を削除し、前記分離対象のファイルの削除により空けられた領域を詰めるように、前記削除したファイルに後続するファイルを再配置するとともに、前記再配置により格納位置が変化したファイルに対応するファイルヘッダ情報に含まれる格納位置を更新することにより、分離したパッケージ化アプリを生成する請求項1記載のアプリケーション実行装置。
【請求項3】
前記ファイル使用情報更新部により作成されるファイル使用情報は、前記パッケージ化アプリを実行した回数と、前記パッケージ化アプリに含まれる各ファイルを特定する情報、前記パッケージ化アプリを実行するために前記特定した各ファイルを、前記一時記憶部に格納できる最大回数と、前記特定した各ファイルを実行可能なデータ形式となるようにして前記一時記憶部に格納した回数とを含むものであって、
前記ファイル使用情報更新部は、更に前記パッケージ化アプリを実行する毎に、対応するファイル使用情報に含まれる、前記パッケージ化アプリを実行した回数および前記特定した各ファイルを実行可能なデータ形式となるようにして前記一時記憶部に格納した回数を更新するようにした請求項1または2のいずれかに記載のアプリケーション実行装置。
【請求項4】
前記判定部は、前記パッケージ化アプリを実行した回数が所定の回数となる毎に、前記一時記憶部に実行可能なデータ形式となるようにして格納した回数が所定の回数よりも少ないファイルを前記パッケージ化アプリの実行中に使用されないファイルとみなす判定をし、
前記ファイル分離部は、前記実行中に使用されないファイルが分離されたパッケージ化アプリから更に前記使用されないとみなしたファイルを分離するようにした請求項3に記載のアプリケーション実行装置。
【請求項5】
前記ファイル分離部は、分離したファイルを示す復元情報を生成し、前記データ記憶部に記憶するとともに、
前記アプリケーション実行装置は、前記復元情報を用いて分離したファイルを復元する復元部を更に備えることを特徴とする請求項1記載のアプリケーション実行装置。
【請求項6】
前記ファイル分離部により生成される復元情報は前記パッケージ化アプリから分離したファイルを特定する情報および前記特定したファイルが格納されている前記データ記憶部の格納位置を示す情報を含み、
前記アプリ実行部により実行されるパッケージ化アプリが、既に分離され前記一時記憶部には格納されていないファイルの実行を要求する場合、前記分離されたファイルが格納されている前記データ記憶部の格納位置を示す情報を用いて、前記分離されたファイルを実行可能なデータ形式となるようにして前記一時記憶部に格納するようにした請求項5に記載のアプリケーション実行装置。
【請求項7】
前記アプリ実行部は、前記パッケージ化アプリに含まれる各ファイルが、前記一時記憶部に格納された前記パッケージ化アプリに含まれる各ファイルへのアクセスが前記アプリ実行部により実行されるパッケージ化アプリの実行中になされたかどうかを示すファイルアクセス関しテーブルを保持し、ファイルアクセス関しテーブルに基づいて、前記ファイル使用情報に含まれる該当するファイルについて、実行可能なデータ形式となるようにして前記一時記憶部に格納した回数を更新するよう、前記ファイル使用情報更新部に指示するように構成した請求項3記載のアプリケーション実行装置。
【請求項8】
前記アプリケーション実行装置は、更に
前記データ記憶部に記憶したパッケージ化アプリを削除する削除手段を備え、
前記削除手段は、前記データ記憶部に記憶したパッケージ化アプリを削除する場合、前記分離したパッケージ化アプリおよび前記分離したファイルを削除するように構成した請求項2に記載のアプリケーション実行装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate


【公開番号】特開2010−66872(P2010−66872A)
【公開日】平成22年3月25日(2010.3.25)
【国際特許分類】
【出願番号】特願2008−230768(P2008−230768)
【出願日】平成20年9月9日(2008.9.9)
【出願人】(000005821)パナソニック株式会社 (73,050)
【Fターム(参考)】