(57)【要約】【課題】同じ操作体系によってネイティブアプリケーションおよびハードウェア非依存アプリケーションの起動を選択的に行なえるアプリケーション管理装置を提供すること。【解決手段】仮想アプリケーション１３０は、ネイティブコードによって記述され、ハードウェア非依存アプリケーション１６０の起動時に生成される。アプリケーションマネージャ１００が仮想アプリケーション１３０に対してハードウェア非依存アプリケーション１６０の起動を要求すると、仮想アプリケーション１３０は、仮想マシン１４０に対してハードウェア非依存アプリケーション１６０の起動を要求する。したがって、ネイティブアプリケーションの制御と同様にしてハードウェア非依存アプリケーションの制御を行なえるようになり、同じ操作体系によってアプリケーションの起動を選択的に行なうことが可能となる。【選択図】　　　　図１
2004102398.tif 000002
【特許請求の範囲】
【請求項１】
ネイティブアプリケーションおよびハードウェア非依存アプリケーションの実行を管理するアプリケーション管理装置であって、
前記ハードウェア非依存アプリケーションの実行を管理する仮想マシンと、
前記ハードウェア非依存アプリケーションの起動時に生成され、前記仮想マシンに対して前記ハードウェア非依存アプリケーションの起動を要求する仮想アプリケーションと、
アプリケーションの起動要求を出力するランチャと、
前記ランチャによるアプリケーションの起動要求に応じて、前記ネイティブアプリケーションおよび前記仮想アプリケーションを制御して、アプリケーションの実行を管理するアプリケーションマネージャとを含む、アプリケーション管理装置。
【請求項２】
前記アプリケーションマネージャは、前記ランチャから出力されたアプリケーションの起動要求に応じて、起動中のネイティブアプリケーションおよびハードウェア非依存アプリケーションの数を参照し、起動状態にあるアプリケーションの数を制限してアプリケーションの実行を管理する、請求項１記載のアプリケーション管理装置。
【請求項３】
前記仮想アプリケーションは、ネイティブコードで記述される、請求項１または２記載のアプリケーション管理装置。
【請求項４】
前記仮想アプリケーションは起動時に、前記仮想マシンが起動されていなければ前記仮想マシンを起動する、請求項１〜３のいずれかに記載のアプリケーション管理装置。
【請求項５】
前記ハードウェア非依存アプリケーションは複数存在するのに対して、前記仮想マシンは１つだけ存在する、請求項１または２記載のアプリケーション管理装置。
【請求項６】
前記仮想マシンは、前記仮想アプリケーションからの起動要求に応じて当該ハードウェア非依存アプリケーションを起動するとともに、当該ハードウェア非依存アプリケーションに一意のアプリケーションＩＤを付与して前記仮想アプリケーションに通知する、請求項１または２記載のアプリケーション管理装置。
【請求項７】
前記仮想アプリケーションは、自身を終了するときに、前記アプリケーションＩＤを含んだ終了通知を前記仮想マシンに送信する、請求項６記載のアプリケーション管理装置。
【請求項８】
前記仮想マシンは、前記ハードウェア非依存アプリケーションの終了を検知すると、前記仮想アプリケーションに対して終了通知を送信し、
前記仮想アプリケーションは、前記仮想マシンから終了通知を受信すると、自身を終了する処理を実行する、請求項１または２記載のアプリケーション管理装置。
【請求項９】
ネイティブアプリケーションおよびハードウェア非依存アプリケーションの実行を管理するアプリケーション管理方法であって、
アプリケーションの起動要求を出力するステップと、
前記アプリケーションの起動要求が前記ハードウェア非依存アプリケーションに対する起動要求の場合に、ネイティブコードで記述された仮想アプリケーションを起動するステップと、
前記仮想アプリケーションからの起動要求に応じて、仮想マシン上で前記ハードウェア非依存アプリケーションを実行するステップとを含む、アプリケーション管理方法。
【請求項１０】
前記アプリケーション管理方法はさらに、前記ハードウェア非依存アプリケーションの終了を検知するステップと、
前記ハードウェア非依存アプリケーションの終了が検知されたときに、前記仮想アプリケーションを終了するステップとを含む、請求項９記載のアプリケーション管理方法。
【請求項１１】
ネイティブアプリケーションおよびハードウェア非依存アプリケーションの実行を管理するアプリケーション管理方法をコンピュータに実行させるためのコンピュータ・プログラムであって、
前記アプリケーション管理方法は、アプリケーションの起動要求を出力するステップと、
前記アプリケーションの起動要求が前記ハードウェア非依存アプリケーションに対する起動要求の場合に、ネイティブコードで記述された仮想アプリケーションを起動するステップと、
前記仮想アプリケーションからの起動要求に応じて、仮想マシン上で前記ハードウェア非依存アプリケーションを実行するステップとを含む、コンピュータ・プログラム。
【請求項１２】
前記アプリケーション管理方法はさらに、前記ハードウェア非依存アプリケーションの終了を検知するステップと、
前記ハードウェア非依存アプリケーションの終了が検知されたときに、前記仮想アプリケーションを終了するステップとを含む、請求項１１記載のコンピュータ・プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、アプリケーションの起動、実行などを管理する技術に関し、特に、組込み機器等のメモリリソースに制限のある機器におけるアプリケーションの管理を行なうアプリケーション管理装置、その方法およびそのコンピュータ・プログラムに関する。
【０００２】
【従来の技術】
近年、携帯電話、ＰＤＡ（Ｐｅｒｓｏｎａｌ　Ｄｉｇｉｔａｌ　Ａｓｓｉｓｔａｎｔｓ）、情報家電などの組込み機器が広く普及している。従来、組込み機器においては、ハードウェアに依存するネイティブコードによって記述されたプログラムを実行して、アプリケーションを動作させていた。
【０００３】
このような組込み機器において、複数のアプリケーションが動作する場合、アプリケーション実行の制御および管理を行なうプログラムとしてアプリケーションマネージャが組込まれている。このアプリケーションマネージャによって、複数のアプリケーション実行の制御および管理が実現されている。
【０００４】
図１３は、従来の組込み機器に組込まれたアプリケーションマネージャの動作を説明するための図である。組込み機器の一例であるＰＤＡ５００は、アプリケーションマネージャ（Ｎａｔｉｖｅ　Ａｐｐｌｉｃａｔｉｏｎ　Ｍａｎａｇｅｒ）５１０と、アプリケーションの起動を行なうためのアプリケーション（以下、ランチャ（ｎａｔｉｖｅ　Ｌａｕｎｃｈｅｒ）と呼ぶ。）５２０と、複数のアプリケーション（ｎａｔｉｖｅ　ＡＰＰＬ）５３１〜５３３とを含む。
【０００５】
ＰＤＡ５００の起動時には、まずランチャ５２０が起動される。ユーザは、ランチャ５２０によって表示される起動アプリケーション選択画面を操作し、アプリケーション５３１〜５３３のいずれかを選択してアプリケーションの起動の操作を行なう。この起動操作が行なわれると、ランチャ５２０はアプリケーションマネージャ５１０に対してアプリケーション起動コマンドを発行して、アプリケーション５３１〜５３３のいずれかの起動を要求する。アプリケーションマネージャ５１０は、このアプリケーション起動コマンドを解釈し、アプリケーション５３１〜５３３のうち対応するアプリケーションを起動する。
【０００６】
組込み機器の場合、メモリリソースなどの制約があり、多くのアプリケーションを同時に起動したままにしておくことが不可能な場合が多い。そのため、同時に起動したままにしておけるアプリケーション数に上限を設け、アプリケーションマネージャ５１０がアプリケーションを起動するときに現在起動されているアプリケーション数を確認し、起動されているアプリケーション数が多い場合には、アプリケーション起動履歴を参照して起動された時間が最も古いアプリケーションなどを終了させて、新たにアプリケーションを起動させるような機構を設けている場合が多い。
【０００７】
従来、アプリケーションマネージャ５１０、ランチャ５２０およびアプリケーション５３１〜５３３は、全て搭載対象のハードウェアに依存するネイティブコードによるプログラム（以下、ネイティブアプリケーションと呼ぶ。）によって構成されていた。しかし、これらはハードウェア依存であるので移植性が低い。したがって、プログラムを他の機器において動作させるためには、プログラムの修正および移植が必要であり、生産性の低下を招くといった問題点があった。
【０００８】
そのため、ハードウェアに依存するネイティブコードに代わって、ハードウェアに依存しないハードウェア非依存型言語によって、アプリケーション開発が行なわれることが多くなってきた。ハードウェア非依存型言語によって記述されたアプリケーション（以下、ハードウェア非依存アプリケーションと呼ぶ。）は、この言語を解釈して実行するハードウェアを仮想的に実現するための仮想マシン（Ｖｉｒｔｕａｌ　Ｍａｃｈｉｎｅ）と呼ばれるプログラムによって、ハードウェア上で実行される。仮想マシンそのものは、ネイティブアプリケーションの１つである。
【０００９】
ハードウェア非依存アプリケーションは、仮想マシンが動作するハードウェア上であれば、仮想マシンによってその解釈、実行を行なわせることができるため、どのような機器でも実装でき、移植性が高く、生産性の向上に貢献している。
【００１０】
しかし、ハードウェア非依存型言語は、ハードウェアが直接実行することができるネイティブコードと比較して、プログラムの解釈に必要な時間と、仮想マシンそのものが必要とするメモリ容量とが余計に必要となるため、ＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）、メモリなどのハードウェアリソースに乏しい組込み機器における動作では十分な性能を発揮することができなかった。
【００１１】
近年、携帯端末のような組込み機器において、数年前のパーソナルコンピュータ並の性能を持つようになり、仮想マシンによってハードウェア非依存アプリケーションを動作させても、十分な性能を発揮させることが可能になってきている。しかし、仮想マシン上でのアプリケーション動作は比較的遅く、即時応答性を必要とするアプリケーションにおいては、ハードウェア非依存アプリケーションでは十分な実行速度が得られない場合が多い。
【００１２】
したがって、即時応答性を必要とするアプリケーションのみをネイティブコードで実装し、それ以外のアプリケーションをハードウェア非依存型言語によって実装することにより、即時応答性を保ちつつ、ハードウェア非依存型言語による移植性の高さの恩恵を受けることが可能になる。
【００１３】
図１４は、ネイティブアプリケーションとハードウェア非依存アプリケーションとが実装された場合のアプリケーションマネージャの動作を説明するための図である。この組込み機器は、アプリケーションマネージャ５１０と、ランチャ５２０と、ネイティブアプリケーション５３１および５３２と、仮想マシン５４０および５５０と、仮想マシン５４０および５５０上で動作するハードウェア非依存アプリケーション５４１および５５１とを含む。
【００１４】
このような、ネイティブアプリケーションとハードウェア非依存アプリケーションとが混在する環境において、ネイティブアプリケーションの起動および実行は、図１３を用いて説明したのと同様に行なわれる。
【００１５】
ユーザがランチャ５２０を操作してハードウェア非依存アプリケーション５４１または５５１を実行させる場合には、ランチャ５２０がアプリケーションマネージャ５１０に対して、ハードウェア非依存アプリケーション５４１または５５１を起動するコマンドを発行する。このとき、コマンドのパラメータとして、起動対象であるハードウェア非依存アプリケーション５４１または５５１が指定される。
【００１６】
アプリケーションマネージャ５１０は、ランチャ５２０から受けたハードウェア非依存アプリケーションの起動コマンドを解釈し、仮想マシン５４０または５５０の起動処理を行なう。このとき、仮想マシン５４０または５５０上で動作する対象アプリケーション５４１または５５１が指定される。そして、アプリケーションマネージャ５１０による起動処理によって仮想マシン５４０または５５０が起動され、対象アプリケーション５４１または５５１に記述されたハードウェア非依存型言語が解釈されながら実行されることにより、対象アプリケーション５４１または５５１が実行される。
【００１７】
このとき、仮想マシン５４０または５５０自体はネイティブコードによって構築されているアプリケーションであるので、アプリケーションマネージャ５１０からの起動および制御については、通常のネイティブアプリケーションと全く同様に行なわれる。すなわち、アプリケーションマネージャ５１０に、ハードウェア非依存アプリケーション５４１または５５１を実行するための特殊な機構を追加する必要は全くない。
【００１８】
組み込み機器においては、このような構成においても、上述したように同時に起動したままにしておけるアプリケーション数に上限を設けて、メモリリソースの枯渇を防ぐ機構が適用される場合がある。
【００１９】
このアプリケーション数の抑制機構についても、仮想マシン５４０または５５０自体がネイティブアプリケーションであるため、ネイティブアプリケーションのみから構成されるときと同様の抑制機構が適用され、ハードウェア非依存アプリケーション５４１または５５１を実行するための特殊な機構を追加する必要はない。すなわち、停止させる必要があるアプリケーションがハードウェア非依存アプリケーション５４１または５５１の場合は、ネイティブアプリケーションである仮想マシン５４０または５５０に対する停止処理が行なわれる。
【００２０】
しかし、図１４に示す構成においては、ハードウェア非依存アプリケーション５４１または５５１を起動する毎に、仮想マシン５４０または５５０が起動される。仮想マシン５４０または５５０は、仮想的にハードウェアを実現するためのアプリケーションであるためメモリの消費量が多い。したがって、複数の仮想マシンが起動された場合には、仮想マシン間でメモリが共有されないため、メモリ容量の多くが消費されることになる。
【００２１】
これは、近年のパーソナルコンピュータ等のような大容量メモリを搭載した機器においては特に問題とはならないが、メモリ容量に制約のある組込み機器においては致命的な問題となる。このメモリ容量の消費の問題を解決する技術として、特開２０００−２５０７５８号公報に開示された発明がある。
【００２２】
図１５は、特開２０００−２５０７５８号公報に開示された組込み機器用Ｊａｖａ（Ｒ）アプリケーションマネージャの動作を説明するための図である。この組込み機器は、アプリケーションマネージャ５１０と、ランチャ５２０と、ネイティブアプリケーション５３１および５３２と、仮想マシン５６０と、ハードウェア非依存型言語アプリケーションマネージャ（以下、ハードウェア非依存アプリケーションマネージャと呼ぶ。）５６１と、ハードウェア非依存型言語ランチャ（以下、ハードウェア非依存ランチャと呼ぶ。）５６２と、ハードウェア非依存アプリケーション５６３および５６４とを含む。
【００２３】
仮想マシン５６０上にハードウェア非依存アプリケーション５６３および５６４をロードして実行させるハードウェア非依存ランチャ５６２と、ハードウェア非依存アプリケーション５６３および５６４を管理するハードウェア非依存アプリケーションマネージャ５６１とを設けることにより、単一の仮想マシン５６０を用いてその仮想マシン５６０上で複数のハードウェア非依存アプリケーション５６３および５６４を同時に実行させることができる。
【００２４】
このハードウェア非依存アプリケーションマネージャ５６１によって、複数の仮想マシンを同時に起動したままにしておくことによって生じていたメモリ容量の不足を防止でき、複数のハードウェア非依存アプリケーション５６３および５６４を同時に動作させることが可能である。
【００２５】
図１５に示すアプリケーションマネージャ５１０において、アプリケーション５３１および５３２の起動および制御については、図１３を用いて説明したのと同様に行なわれる。また、ハードウェア非依存アプリケーション５６３および５６４の起動および制御については、以下のように行なわれる。
【００２６】
まず、ユーザが組込み機器を起動した場合、アプリケーションマネージャ５１０と、仮想マシン５６０とが起動される。このとき、仮想マシン５６０はハードウェア非依存アプリケーションマネージャ５６１を実行するよう起動時に指定される。ハードウェア非依存アプリケーションマネージャ５６１は、ハードウェア非依存アプリケーション５６３または５６４を起動するためのハードウェア非依存ランチャ５６２を起動する。
【００２７】
ハードウェア非依存ランチャ５６２はユーザの指示に応じて、ハードウェア非依存アプリケーションマネージャ５６１にアプリケーションの起動要求を送信する。ハードウェア非依存アプリケーションマネージャ５６１は、起動要求があったハードウェア非依存アプリケーション５６３または５６４を起動する。
【００２８】
【特許文献１】
特開２０００−２５０７５８号公報
【００２９】
【発明が解決しようとする課題】
しかし、図１５に示す構成においては、上述したように、ネイティブアプリケーション５３１および５３２はランチャ５２０から起動され、ハードウェア非依存アプリケーション５６３および５６４はハードウェア非依存ランチャ５６２から起動される。したがって、操作体系が二重に存在するため、ユーザがランチャを切替えてアプリケーションの起動操作をする必要があり、操作性が著しく低下するといった問題点があった。
【００３０】
このように、アプリケーション起動操作の体系が二重化してしまうのは、ランチャ５２０がネイティブアプリケーション５３１および５３２を起動する能力しかなく、ハードウェア非依存アプリケーション５６３および５６４を起動するためには、ハードウェア非依存アプリケーションマネージャ５６１が有するインタフェースを介して起動要求を行なうことができる別のアプリケーション、すなわちハードウェア非依存ランチャ５６２が必要になるためである。
【００３１】
また、この構成でアプリケーション数の上限を設けようとする場合、アプリケーションマネージャ５１０からは現在のアプリケーション数を把握できなくなるという問題も発生する。これは、アプリケーションマネージャ５１０が仮想マシン５６０を１つのネイティブアプリケーションとして認識できるのみであり、仮想マシン５６０上でハードウェア非依存アプリケーションがどれだけ起動されているのか、または全く起動されていないのかを把握することが不可能なためである。
【００３２】
さらには、ハードウェア非依存アプリケーション５６３または５６４の動作を停止させる場合においても、アプリケーションマネージャ５１０の機能では、ネイティブアプリケーションである仮想マシン５６０を停止させることしかできず、その上で動作しているハードウェア非依存アプリケーション５６３および５６４を個別に停止させることはできない。仮想マシン５６０を停止させてしまうと、動作中のハードウェア非依存アプリケーションをすべて停止させてしまうといった問題が発生する。
【００３３】
本発明は、上記問題点を解決するためになされたものであり、第１の目的は、同じ操作体系によってネイティブアプリケーションおよびハードウェア非依存アプリケーションの起動を選択的に行なえるアプリケーション管理装置、その方法およびそのコンピュータ・プログラムを提供することである。
【００３４】
第２の目的は、アプリケーションマネージャがネイティブアプリケーションおよびハードウェア非依存アプリケーションの実行状況を把握することが可能なアプリケーション管理装置、その方法およびそのコンピュータ・プログラムを提供することである。
【００３５】
【課題を解決するための手段】
本発明のある局面に従えば、ネイティブアプリケーションおよびハードウェア非依存アプリケーションの実行を管理するアプリケーション管理装置であって、ハードウェア非依存アプリケーションの実行を管理する仮想マシンと、ハードウェア非依存アプリケーションの起動時に生成され、仮想マシンに対してハードウェア非依存アプリケーションの起動を要求する仮想アプリケーションと、アプリケーションの起動要求を出力するランチャと、ランチャによるアプリケーションの起動要求に応じて、ネイティブアプリケーションおよび仮想アプリケーションを制御して、アプリケーションの実行を管理するアプリケーションマネージャとを含む。
【００３６】
アプリケーションマネージャは、仮想アプリケーションを制御して仮想マシンに対してハードウェア非依存アプリケーションの起動を要求するので、ネイティブアプリケーションの制御と同様にしてハードウェア非依存アプリケーションの制御を行なえるようになり、同じ操作体系によってネイティブアプリケーションおよびハードウェア非依存アプリケーションの起動を選択的に行なうことが可能となる。したがって、アプリケーションマネージャがネイティブアプリケーションおよびハードウェア非依存アプリケーションの実行状況を把握することが可能となる。
【００３７】
好ましくは、アプリケーションマネージャは、ランチャから出力されたアプリケーションの起動要求に応じて、起動中のネイティブアプリケーションおよびハードウェア非依存アプリケーションの数を参照し、起動状態にあるアプリケーションの数を制限してアプリケーションの実行を管理する。
【００３８】
したがって、メモリ容量に制約がある組込み機器であっても、複数のアプリケーションを同時に起動したままにしておくことが可能となる。
【００３９】
好ましくは、仮想アプリケーションは、ネイティブコードで記述される。
したがって、アプリケーションマネージャは、仮想アプリケーションをネイティブアプリケーションと同様に制御することができ、従来のアプリケーションマネージャを変更せずに用いることが可能となる。
【００４０】
好ましくは、仮想アプリケーションは起動時に、仮想マシンが起動されていなければ仮想マシンを起動する。
【００４１】
したがって、アプリケーション管理装置の起動時に仮想マシンを起動する必要がなくなり、ハードウェア非依存アプリケーションが起動されていないにもかかわらず、仮想マシンが起動されているといった不具合を防止でき、アプリケーション管理装置の処理効率を向上させることが可能となる。
【００４２】
好ましくは、ハードウェア非依存アプリケーションは複数存在するのに対して、仮想マシンは１つだけ存在する。
【００４３】
したがって、メモリの共有を図ることができ、メモリ容量の不足を防止することが可能となる。
【００４４】
好ましくは、仮想マシンは、仮想アプリケーションからの起動要求に応じて当該ハードウェア非依存アプリケーションを起動するとともに、当該ハードウェア非依存アプリケーションに一意のアプリケーションＩＤを付与して仮想アプリケーションに通知する。
【００４５】
したがって、仮想マシンは、ハードウェア非依存アプリケーションの管理を容易に行なうことが可能となる。
【００４６】
さらに好ましくは、仮想アプリケーションは、自身を終了するときに、アプリケーションＩＤを含んだ終了通知を仮想マシンに送信する。
【００４７】
したがって、仮想マシンは、終了すべきハードウェア非依存アプリケーションを容易に把握することが可能となる。
【００４８】
好ましくは、仮想マシンはハードウェア非依存アプリケーションの終了を検知すると、仮想アプリケーションに対して終了通知を送信し、仮想アプリケーションは、仮想マシンから終了通知を受信すると、自身を終了する処理を実行する。
【００４９】
したがって、ユーザによってハードウェア非依存アプリケーションが終了されたときに、対応する仮想アプリケーションも終了させることが可能となる。
【００５０】
本発明の別の局面に従えば、ネイティブアプリケーションおよびハードウェア非依存アプリケーションの実行を管理するアプリケーション管理方法であって、アプリケーションの起動要求を出力するステップと、アプリケーションの起動要求がハードウェア非依存アプリケーションに対する起動要求の場合に、ネイティブコードで記述された仮想アプリケーションを起動するステップと、仮想アプリケーションからの起動要求に応じて、仮想マシン上でハードウェア非依存アプリケーションを実行するステップとを含む。
【００５１】
仮想アプリケーションからの起動要求に応じて、仮想マシン上でハードウェア非依存アプリケーションを実行するので、ネイティブアプリケーションの制御と同様にしてハードウェア非依存アプリケーションの制御を行なえるようになり、同じ操作体系によってネイティブアプリケーションおよびハードウェア非依存アプリケーションの起動を選択的に行なうことが可能となる。したがって、アプリケーションマネージャがネイティブアプリケーションおよびハードウェア非依存アプリケーションの実行状況を把握することが可能となる。
【００５２】
好ましくは、アプリケーション管理方法はさらに、ハードウェア非依存アプリケーションの終了を検知するステップと、ハードウェア非依存アプリケーションの終了が検知されたときに仮想アプリケーションを終了するステップとを含む。
【００５３】
したがって、ユーザによってハードウェア非依存アプリケーションが終了されたときに、対応する仮想アプリケーションも終了させることが可能となる。
【００５４】
本発明のさらに別の局面に従えば、ネイティブアプリケーションおよびハードウェア非依存アプリケーションの実行を管理するアプリケーション管理方法をコンピュータに実行させるためのコンピュータ・プログラムであって、アプリケーション管理方法は、アプリケーションの起動要求を出力するステップと、アプリケーションの起動要求がハードウェア非依存アプリケーションに対する起動要求の場合に、ネイティブコードで記述された仮想アプリケーションを起動するステップと、仮想アプリケーションからの起動要求に応じて、仮想マシン上でハードウェア非依存アプリケーションを実行するステップとを含む。
【００５５】
仮想アプリケーションからの起動要求に応じて、仮想マシン上でハードウェア非依存アプリケーションを実行するので、ネイティブアプリケーションの制御と同様にしてハードウェア非依存アプリケーションの制御を行なえるようになり、同じ操作体系によってネイティブアプリケーションおよびハードウェア非依存アプリケーションの起動を選択的に行なうことが可能となる。したがって、アプリケーションマネージャがネイティブアプリケーションおよびハードウェア非依存アプリケーションの実行状況を把握することが可能となる。
【００５６】
好ましくは、アプリケーション管理方法はさらに、ハードウェア非依存アプリケーションの終了を検知するステップと、ハードウェア非依存アプリケーションの終了が検知されたときに仮想アプリケーションを終了するステップとを含む。
【００５７】
したがって、ユーザによってハードウェア非依存アプリケーションが終了されたときに、対応する仮想アプリケーションも終了させることが可能となる。
【００５８】
【発明の実施の形態】
図１は、本発明の実施の形態におけるアプリケーション管理装置の概略構成を示すブロック図である。なお、このアプリケーション管理装置は、ハードウェア非依存型言語としてＪａｖａ（Ｒ）を用い、仮想マシンとしてＪａｖａ（Ｒ）ＶＭを用いるものとする。
【００５９】
このアプリケーション管理装置は、アプリケーションマネージャ１００と、ランチャ１１０と、ネイティブアプリケーション１２０および１２１と、仮想アプリケーション１３０および１３１と、仮想マシン１４０と、ハードウェア非依存型言語アプリケーションマネージャ（以下、ハードウェア非依存アプリケーションマネージャと呼ぶ。）１５０と、ハードウェア非依存アプリケーション１６０および１６１とを含む。
【００６０】
アプリケーションマネージャ１００は、ネイティブコードで構築され、アプリケーション管理装置上で動作する他のアプリケーションの管理および実行制御を行なう。アプリケーションマネージャ１００の実行開始時に、アプリケーションマネージャ１００は、ランチャ１１０および仮想マシン１４０を起動する。そして、ユーザの操作によるランチャ１１０からのアプリケーションの起動要求にしたがって、ネイティブアプリケーション１２０および１２１と、仮想アプリケーション１３０および１３１とを選択的に起動する。
【００６１】
ランチャ１１０は、アプリケーションマネージャ１００に対してアプリケーション起動コマンドを送信する、ネイティブコードで記述されたアプリケーションである。ユーザがＣＵＩ（Ｃｈａｒａｃｔｅｒ　Ｕｓｅｒ　Ｉｎｔｅｒｆａｃｅ）を用いてコマンドを入力することにより、ランチャ１１０がアプリケーションマネージャ１００に対してコマンドを送信するようにしてもよいし、ユーザがＧＵＩ（Ｇｒａｐｈｉｃａｌ　Ｕｓｅｒ　Ｉｎｔｅｒｆａｃｅ）の操作によってコマンドを決定し、ランチャ１１０がそのコマンドをアプリケーションマネージャ１００に送信するようにしてもよい。
【００６２】
仮想マシン１４０は、このアプリケーション管理装置上でただ１つだけ起動され、起動時にその仮想マシン１４０上でハードウェア非依存アプリケーションの管理および実行を行なうハードウェア非依存アプリケーションマネージャ１５０が起動される。
【００６３】
仮想アプリケーション１３０および１３１は、ハードウェア非依存アプリケーションマネージャ１５０との間で通信を行ない、ハードウェア非依存アプリケーション１６０および１６１のそれぞれの実行制御を、アプリケーションマネージャ１００が仮想的に実行できるようにするために起動される、ネイティブコードで記述されたアプリケーションである。
【００６４】
図２は、アプリケーションマネージャ１００の詳細な構成を示すブロック図である。アプリケーションマネージャ１００は、ランチャ１１０からコマンドを受信するコマンド受信部２００と、コマンドとコマンドに対応する処理内容とを関連づけて格納するコマンドテーブル２１０と、コマンド受信部２００によって受信されたコマンドとコマンドテーブル２１０とを照合して、コマンドの処理内容を決定し、その処理内容を実行するコマンド実行部２３０と、アプリケーションの起動、終了などの実行制御を行なうアプリケーション制御部２２０と、アプリケーション制御部２２０によって起動されたアプリケーションを登録するアプリケーションリスト２４０と、アプリケーション制御部２２０によって同時に起動できるアプリケーションの個数の上限が記憶されるアプリケーション上限数記憶部２５０とを含む。
【００６５】
図３は、仮想マシン１４０の詳細な構成を示すブロック図である。仮想マシン１４０は、仮想マシン１４０全体の制御を行なうハードウェア非依存アプリケーションマネージャ１５０と、ハードウェア非依存アプリケーション１６０および１６１と、外部との間で通信を行なう仮想マシン通信部３２０と、要求されたクラスをロードするクラスローダ３３０とを含む。
【００６６】
また、ハードウェア非依存アプリケーションマネージャ１５０は、ハードウェア非依存アプリケーション１６０および１６１の実行を制御するハードウェア非依存アプリケーション制御部３００と、仮想マシン通信部３２０を介して外部からハードウェア非依存アプリケーション１６０および１６１の制御要求を受信するハードウェア非依存アプリケーション制御情報受信部３１０とを含む。
【００６７】
Ｊａｖａ（Ｒ）においては、ハードウェア非依存アプリケーションマネージャ１５０が通常待機しており、ハードウェア非依存アプリケーション制御情報受信部３１０が、仮想マシン通信部３２０を介して外部からハードウェア非依存アプリケーション制御要求を受信するのを待つ。ハードウェア非依存アプリケーション制御情報受信部３１０が外部からハードウェア非依存アプリケーションの制御要求を受信すると、その制御要求をハードウェア非依存アプリケーション制御部３００に転送する。ハードウェア非依存アプリケーション制御部３００は、その制御要求の内容に従って、ハードウェア非依存アプリケーション１６０または１６１に対してアプリケーション制御を実行する。
【００６８】
また、ハードウェア非依存アプリケーション１６０または１６１の実行時にクラスをロードする必要が生じた場合には、ハードウェア非依存アプリケーション制御部３００がクラスローダ３３０に対してクラスのロードを要求する。クラスローダ３３０は、ハードウェア非依存アプリケーション制御部３００からの要求に応じて、指定されたクラスパスと呼ばれるクラスファイルの読込み先指定、または複数のクラスファイルを１つにまとめたアーカイブから、要求されたクラスをロードする。
【００６９】
図４は、仮想アプリケーション１３０および１３１の詳細な構成を示すブロック図である。仮想アプリケーション１３０および１３１は、ハードウェア非依存アプリケーションマネージャ１５０に対してハードウェア非依存アプリケーションの制御要求を行なうハードウェア非依存アプリケーション実行制御部４２０と、仮想マシン通信部３２０を介してハードウェア非依存アプリケーション制御情報受信部３１０との間で通信を行なう仮想アプリケーション通信部４００と、ハードウェア非依存アプリケーションＩＤが格納されるハードウェア非依存アプリケーションＩＤ格納部４１０とを含む。
【００７０】
ハードウェア非依存アプリケーション実行制御部４２０は、仮想アプリケーション通信部４００を介して仮想マシン通信部３２０と接続し、ハードウェア非依存アプリケーション制御情報受信部３１０にアプリケーション制御要求を送信する。
【００７１】
図５は、ハードウェア非依存アプリケーションの起動の一例として、Ｊａｖａ（Ｒ）で作成されたメモ帳を起動する場合の処理手順を説明するためのフローチャートである。このフローチャートにおいては、他にアプリケーションが起動されておらず、アプリケーションリスト２４０にはいずれのアプリケーションも登録されていない状態である。また、アプリケーション起動数の上限は３に設定されているものとする。
【００７２】
まず、ユーザはメモ帳を起動するために、ランチャ１１０から次に示すコマンドを発行するための入力操作を行なう（Ｓ１００）。
【００７３】
ｊａｖａ　／ｊａｐｐｌ／ｍｅｍｏ．ｊａｒ　Ｍｅｍｏ
このコマンドの先頭部分はコマンド名であり、それ以降はコマンド処理する際のパラメータである。ここでは、ｊａｖａというコマンド名を指定することで、Ｊａｖａ（Ｒ）アプリケーションが起動するものとする。ユーザによる入力操作が行なわれると、ランチャ１１０は、コマンド受信部２００に上記コマンドを送信する（Ｓ１１０）。
【００７４】
コマンド受信部２００がコマンドを受信すると、コマンド実行部２３０にコマンド文字列を転送する（Ｓ１２０）。コマンド実行部２３０は、コマンドテーブル２１０を検索し、その検索結果に基づいて実行すべき処理を決定する（Ｓ１３０）。
【００７５】
図６は、コマンドテーブル２１０に予め定義されている情報の一例を示す図である。コマンドテーブル２１０には、コマンド名文字列と、コマンドに対応する処理内容とが格納されている。
【００７６】
コマンド実行部２３０は、コマンドテーブル２１０を参照して、仮想アプリケーション１３０を起動することを決定する（Ｓ１４０）。ここで、コマンド名がｊａｖａであるので、実行すべき処理として仮想アプリケーション１３０の起動に決定される。
【００７７】
次に、コマンド実行部２３０は、アプリケーションリスト２４０を参照して、現在起動されているアプリケーション数を調べる（Ｓ１５０）。ここでは、アプリケーションリスト２４０には何も登録されていない状態であり、起動アプリケーション数は０である。
【００７８】
次に、コマンド実行部２３０は、アプリケーション上限数記憶部２５０に格納されているアプリケーション起動数上限を参照し、起動アプリケーション数と比較することによって起動判定を行なう（Ｓ１６０）。ここでは、起動アプリケーション数の上限は３であるので、起動アプリケーション数が起動アプリケーション数の上限未満であり、そのままアプリケーションを起動することが可能であると判定される。
【００７９】
その判定にしたがって、コマンド実行部２３０は、アプリケーション制御部２２０を用いて仮想アプリケーション１３０に起動要求を出力する（Ｓ１７０）。このとき、仮想アプリケーション１３０の起動パラメータとして、“／ｊａｐｐｌ／ｍｅｍｏ．ｍａｒ”および“Ｍｅｍｏ”がアプリケーション制御部２２０に転送される。
【００８０】
仮想アプリケーション１３０が起動されると、ハードウェア非依存アプリケーション実行制御部４２０が、以下のようなハードウェア非依存アプリケーション起動要求を作成する。
【００８１】
制御内容　　　　　　　　　アーカイブおよびクラスパス　　　メインクラス
Ｊａｖａ（Ｒ）アプリ起動　／ｊａｐｐｌ／ｍｅｍｏ．ｊａｒ　Ｍｅｍｏ
次に、ハードウェア非依存アプリケーション実行制御部４２０が、仮想アプリ
ケーション通信部４００および仮想マシン通信部３２０を介して、上記メッセージをハードウェア非依存アプリケーション制御情報受信部３１０へ送信する（Ｓ１８０）。
【００８２】
ハードウェア非依存アプリケーション制御情報受信部３１０がメッセージを受信すると、ハードウェア非依存アプリケーション制御部３００にメッセージを転送する。ハードウェア非依存アプリケーション制御部３００は、クラスローダ３３０にアーカイブ“／ｊａｐｐｌ／ｍｅｍｏ．ｊａｒ”からクラスＭｅｍｏのロードを要求し、Ｍｅｍｏクラスのｍａｉｎメソッドを実行する。ＭｅｍｏはＪａｖａ（Ｒ）メモ帳のメインクラスであり、ｍａｉｎメソッドが呼び出されることにより、Ｊａｖａ（Ｒ）メモ帳が実行を開始する（Ｓ１９０）。
【００８３】
Ｊａｖａ（Ｒ）メモ帳の実行が開始されると、ハードウェア非依存アプリケーション制御部３００はハードウェア非依存アプリケーションＩＤを発行し、仮想マシン通信部３２０を介して、仮想アプリケーション１３０にハードウェア非依存アプリケーションの起動通知を行なう（Ｓ２００）。
【００８４】
ハードウェア非依存アプリケーションＩＤは、ハードウェア非依存アプリケーションが起動されるたびに発行される一意の値である。ここでは、ハードウェア非依存アプリケーションＩＤとして０００１が発行されたものとすると、ハードウェア非依存アプリケーション制御部３００は、以下のように起動通知のパラメータとしてハードウェア非依存アプリケーションＩＤを指定する。
【００８５】
通知内容　　　　　　　　　　　　　　Ｊａｖａ（Ｒ）アプリケーションＩＤ
Ｊａｖａ（Ｒ）アプリケーション起動　０００１
仮想アプリケーション１３０は、仮想アプリケーション通信部４００を介して仮想マシン通信部３２０から起動通知を受信すると、ハードウェア非依存アプリケーションＩＤを抽出して、ハードウェア非依存アプリケーションＩＤ格納部４１０に格納する。このとき、仮想アプリケーション１３０の起動処理は完了する（Ｓ２１０）。
【００８６】
最後に、アプリケーション制御部２２０は、仮想アプリケーション１３０の起動処理完了を受けて、仮想アプリケーション１３０をアプリケーションリスト２４０に登録する（Ｓ２２０）。
【００８７】
以上の手順により、ユーザの起動コマンド入力によるアプリケーション起動が行なわれる。
【００８８】
仮想アプリケーション１３０は、Ｊａｖａ（Ｒ）メモ帳の実行が終了するまで起動しつづけたままの状態である。これによって、アプリケーションマネージャ１００は、アプリケーションリスト２４０を集計して現在起動しているアプリケーションの数を把握するときに、仮想アプリケーション１３０を計上することによって、間接的にＪａｖａ（Ｒ）メモ帳を計上することができる。
【００８９】
図７は、ユーザの操作によってＪａｖａ（Ｒ）メモ帳を終了する場合における、仮想アプリケーション１３０が終了するまでの処理手順を説明するためのフローチャートである。
【００９０】
ユーザの操作によってＪａｖａ（Ｒ）メモ帳を終了すると（Ｓ３００）、ハードウェア非依存アプリケーション制御部３００が、ハードウェア非依存アプリケーションの終了を検知する（Ｓ３１０）。ハードウェア非依存アプリケーション制御部３００は、ハードウェア非依存アプリケーションの終了を検知すると、仮想マシン通信部３２０および仮想アプリケーション通信部４００を介して仮想アプリケーション１３０にＪａｖａ（Ｒ）メモ帳の終了を通知する（Ｓ３２０）。
【００９１】
仮想アプリケーション１３０が仮想マシン１３０から終了通知を受信すると、仮想アプリケーション１３０は直ちに終了する（Ｓ３３０）。アプリケーション制御部２２０は、この仮想アプリケーション１３０の終了を検知すると（Ｓ３４０）、アプリケーションリスト２４０から仮想アプリケーション１３０の登録を削除する（Ｓ３５０）。
【００９２】
図８は、新たなハードウェア非依存アプリケーションを起動するときに、起動中のアプリケーション数が既にアプリケーション上限数に達している場合の処理手順を説明するためのフローチャートである。図８は、現在起動中のハードウェア非依存アプリケーションを終了させて、新しいハードウェア非依存アプリケーションを起動させる一例として、すでにＪａｖａ（Ｒ）メモ帳の他に２個のアプリケーションが起動している状態で、ユーザが新たに電話帳の起動を要求した場合の処理手順を示している。
【００９３】
まず、ユーザは電話帳を起動するために、ランチャ１１０から次に示すコマンドを発行するための入力操作を行なう（Ｓ４００）。
【００９４】
ｐｈｏｎｅｂｏｏｋ
ランチャ１１０は、コマンド受信部２００に上記コマンドを送信する（Ｓ４１０）。コマンド受信部２００はコマンドを受信すると、コマンド実行部２３０に受信したコマンド文字列を転送する（Ｓ４２０）。コマンド実行部２３０は、コマンドテーブル２１０を検索し、実行すべき処理を決定する（Ｓ４３０）。
【００９５】
コマンドテーブル２１０は、図６のように定義されており、この情報よって電話帳アプリケーションの起動が決定される（Ｓ４４０）。
【００９６】
次に、コマンド実行部２３０は、アプリケーションリスト２４０に登録されている実行中のアプリケーション数を確認する（Ｓ４５０）。ここで、アプリケーションリスト２４０には、Ｊａｖａ（Ｒ）メモ帳の他に２個のアプリケーションが登録されており、アプリケーション数は３である。コマンド実行部２３０は、このアプリケーション数と、アプリケーション上限数記憶部２５０に格納されているアプリケーション上限数とを比較する。
【００９７】
電話帳の起動によってアプリケーション数が上限に達するため、コマンド実行部２３０は終了するアプリケーションを選択する（Ｓ４６０）。終了するアプリケーションの選択方法については、機器に応じた任意の方法を用いてもよい。たとえば、最後に操作されたのが最も古いアプリケーションを自動的に選択するようにしてもよいし、起動されているアプリケーションのリストをユーザに提示して、ダイアログ形式で終了させるアプリケーションをユーザに選択させて決定するようにしてもよい。
【００９８】
本実施の形態においては、Ｊａｖａ（Ｒ）メモ帳が終了するアプリケーションとして選択された場合について説明する。
【００９９】
コマンド実行部２３０は、アプリケーション制御部２２０にアプリケーション停止要求を行なう（Ｓ４７０）。アプリケーション制御部２２０は、コマンド実行部２３０からアプリケーション停止要求を受けると、仮想アプリケーション１３０に対して停止要求を行なう。
【０１００】
仮想アプリケーション１３０は、アプリケーション制御部２２０から停止要求を受けると、自らが起動要求したハードウェア非依存アプリケーションに対するハードウェア非依存アプリケーションＩＤをハードウェア非依存アプリケーションＩＤ格納部４１０から取得し、仮想アプリケーション通信部４００を介して以下に示すようなＪａｖａ（Ｒ）アプリケーション停止要求をハードウェア非依存アプリケーションマネージャ１５０に送信する（Ｓ４８０）。本実施の形態においては、Ｊａｖａ（Ｒ）メモ帳起動時のアプリケーションＩＤとして、０００１が格納されているので、以下のようなメッセージが送信されることになる。
【０１０１】
制御内容　　　　　　　　　　アプリケーションＩＤ
Ｊａｖａ（Ｒ）アプリ終了　　０００１
ハードウェア非依存アプリケーション制御情報受信部３１０は、上記メッセージを受信すると、ハードウェア非依存アプリケーション制御部３００に停止要求を出力する。ハードウェア非依存アプリケーション制御部３００は、ハードウェア非依存アプリケーション１６０の動作を停止させる（Ｓ４９０）。
【０１０２】
ハードウェア非依存アプリケーション制御部３００は、仮想マシン通信部３２０を介して仮想アプリケーション１３０に停止通知を送信する（Ｓ５００）。アプリケーション実行制御部４２０は、仮想アプリケーション通信部４００を介して停止通知を受けると、仮想アプリケーション１３０を停止する（Ｓ５１０）。
【０１０３】
仮想アプリケーション１３０が停止すると、アプリケーション制御部２２０は仮想アプリケーション１３０の終了を検知し、アプリケーションリスト２４０から仮想アプリケーション１３０の登録を削除して、アプリケーション終了をコマンド実行部２３０に通知する（Ｓ５２０）。
【０１０４】
最後に、コマンド実行部２３０は、アプリケーション制御部２２０に電話帳アプリケーションの起動を要求する。アプリケーション制御部２２０は、起動要求を受けると電話アプリケーションを起動し、アプリケーションリスト２４０に電話アプリケーションの登録を行なう（Ｓ５３０）。
【０１０５】
図９は、仮想アプリケーションが起動されてから、アプリケーションマネージャ１００がハードウェア非依存アプリケーション１６０を起動するまでの処理手順を模式的に示す図である。また、図１０は、その処理手順を説明するためのフローチャートである。以下、図９および図１０を参照しながら、仮想アプリケーション１３０または１３１と仮想マシン１４０との間の情報の送受信について詳細に説明する。
【０１０６】
まず、仮想アプリケーション１３０が起動されると、仮想アプリケーション１３０は仮想マシン通信部３２０に接続の要求を行なう（Ｓ６００）。仮想マシン通信部３２０は、仮想アプリケーション１３０からの接続要求を受けると、仮想アプリケーション１３０との通信を行ない、仮想アプリケーション１３０から受信したアプリケーション制御メッセージをハードウェア非依存アプリケーション制御情報受信部３１０に転送する。そして、アプリケーション制御処理の終了後におけるハードウェア非依存アプリケーション制御部３００からの結果通知を仮想アプリケーション１３０に転送するための、通信エージェント３２１を作成する（Ｓ６１０）。
【０１０７】
通信エージェント３２１は、作成されると直ちに仮想アプリケーション１３０と通信エージェント３２１との間の接続を確立する（Ｓ６２０）。なお、仮想アプリケーション１３０と通信エージェント３２１とは１対１で通信を行なう。すなわち、仮想マシン通信部３２０は、別の仮想アプリケーション１３１が接続を要求した場合、新規に通信エージェント３２２を作成し、仮想アプリケーション１３１と通信エージェント３２２との間での接続が確立される。
【０１０８】
接続が確立されると、仮想アプリケーション１３０は、通信エージェント３２１に対してハードウェア非依存アプリケーションの起動メッセージを送信する（Ｓ６３０）。通信エージェント３２１は、受信したアプリケーション起動メッセージをハードウェア非依存アプリケーション制御情報受信部３１０に転送する（Ｓ６４０）。
【０１０９】
次に、ハードウェア非依存アプリケーション制御情報受信部３１０は、ハードウェア非依存アプリケーション制御部３００に起動メッセージを通知する（Ｓ６５０）。このとき、ハードウェア非依存アプリケーション制御情報受信部３１０は、起動メッセージとともに、ハードウェア非依存アプリケーション制御情報受信部３１０に起動メッセージを通知してきた通信エージェントが通信エージェント３２１であるという情報をあわせて通知する。
【０１１０】
次に、ハードウェア非依存アプリケーション制御部３００は、起動メッセージにしたがってハードウェア非依存アプリケーションを起動する（Ｓ６６０）。また、ハードウェア非依存アプリケーション制御部３００は、起動したアプリケーションインスタンスに対して一意なハードウェア非依存アプリケーションＩＤを発行する（Ｓ６７０）。
【０１１１】
ここで、一意なアプリケーションＩＤを発行するために、図示しないハードウェア非依存アプリケーションＩＤカウンタが用いられる。ハードウェア非依存アプリケーションＩＤカウンタは、ハードウェア非依存アプリケーションマネージャ１５０の起動時に、ハードウェア非依存アプリケーション制御部３００によってたとえば０００１に初期化される。
【０１１２】
ハードウェア非依存アプリケーション制御部３００は、ハードウェア非依存アプリケーションを起動するたびに、ハードウェア非依存アプリケーションＩＤカウンタの値を起動したハードウェア非依存アプリケーションのアプリケーションＩＤとし、ハードウェア非依存アプリケーションＩＤカウンタの値を１だけインクリメントする。
【０１１３】
たとえば、ハードウェア非依存アプリケーションＩＤカウンタの初期値が０００１であった場合、初期化後始めてハードウェア非依存アプリケーションを起動するときに０００１をアプリケーションＩＤとして発行し、ハードウェア非依存アプリケーションＩＤカウンタの値をインクリメントして０００２とする。
【０１１４】
ハードウェア非依存アプリケーション制御部３００は、ハードウェア非依存アプリケーションを起動した時に、起動したアプリケーションについての情報をハードウェア非依存アプリケーションリスト３０１に格納する（Ｓ６８０）。アプリケーションリスト３０１には、以下の情報が格納される。
【０１１５】
▲１▼　アプリケーションＩＤ（ステップＳ６７０で発行したＩＤ）
▲２▼　アプリケーションクラス（起動パラメータで指定されたクラス）
▲３▼　結果通知先（ステップＳ６５０で通知した通信エージェント）
次に、ハードウェア非依存アプリケーション制御部３００は、通信エージェント３２１にアプリケーション起動結果を通知する（Ｓ６９０）。アプリケーション起動結果通知には、起動したハードウェア非依存アプリケーションのアプリケーションＩＤが記載されている。
【０１１６】
次に、通信エージェント３２１は、自身と通信している仮想アプリケーション１３０にそのアプリケーション起動結果通知を送信する（Ｓ７００）。仮想アプリケーション１３０は、アプリケーション起動結果通知を受信すると、ハードウェア非依存アプリケーションＩＤ格納部４１０にそのアプリケーション起動結果通知に記載されているアプリケーションＩＤを格納する（Ｓ７１０）。これによって一連のアプリケーション起動の処理は完了する。
【０１１７】
図１１は、ハードウェア非依存アプリケーションが終了したときに、そのハードウェア非依存アプリケーションに対応する仮想アプリケーションに対して終了が通知されるまでの処理手順を説明するためのフローチャートである。
【０１１８】
まず、ハードウェア非依存アプリケーション制御部３００がハードウェア非依存アプリケーションの終了を検知すると（Ｓ８００）、終了したハードウェア非依存アプリケーションのアプリケーションＩＤに基づいて、アプリケーションリスト３０１を検索し、終了通知先を取得する（Ｓ８１０）。
【０１１９】
ハードウェア非依存アプリケーション制御部３００は、終了通知先に設定されている通信エージェント３２１を参照して、通信エージェント３２１にハードウェア非依存アプリケーションの終了を通知する（Ｓ８２０）。通信エージェント３２１はその通知を受けると、仮想アプリケーション１３０にアプリケーション終了を通知する（Ｓ８３０）。
【０１２０】
図１２は、仮想アプリケーションが終了するときに、対応するハードウェア非依存アプリケーションが終了するまでの処理手順を説明するためのフローチャートである。
【０１２１】
仮想アプリケーション１３０自身を終了する必要があるときは、自身を終了する前にハードウェア非依存アプリケーション終了要求メッセージを通信エージェント３２１に送信する（Ｓ９００）。このとき、パラメータとして、ハードウェア非依存アプリケーションＩＤ格納部４１０から取得されたハードウェア非依存アプリケーションＩＤが指定される。
【０１２２】
通信エージェント３２１はメッセージを受信すると、ハードウェア非依存アプリケーション制御情報受信部３１０にそのメッセージを通知する（Ｓ９１０）。ハードウェア非依存アプリケーション制御情報受信部３１０は、このメッセージにしたがってハードウェア非依存アプリケーション制御部３００にハードウェア非依存アプリケーションの終了を要求する（Ｓ９２０）。このとき終了すべきハードウェア非依存アプリケーションを指示するために、メッセージ中に指定されていたハードウェア非依存アプリケーションＩＤが転送される。
【０１２３】
最後に、ハードウェア非依存アプリケーション制御部３００は、指定されたハードウェア非依存アプリケーションＩＤに基づいて、ハードウェア非依存アプリケーションリスト３０１から検索を試みる（Ｓ９３０）。ハードウェア非依存アプリケーション制御部３００は、該当するアプリケーション情報を取得できれば、アプリケーション情報に対応するハードウェア非依存アプリケーションを停止させる（Ｓ９４０）。
【０１２４】
なお、本発明の実施の形態においては、仮想マシン１４０はアプリケーションマネージャ１００の実行開始時にランチャ１１０とともに起動されるとしたが、１個目のハードウェア非依存アプリケーション起動時に、当該ハードウェア非依存アプリケーションに対応する仮想アプリケーションのハードウェア非依存アプリケーション実行制御部４２０が仮想マシン１４０が起動されているか否か調べて、起動されていなければ先に仮想マシン１４０を起動するようにしてもよい。
【０１２５】
以上説明したように、本実施の形態におけるアプリケーション管理装置によれば、アプリケーションマネージャ１００が、ネイティブコードで記述された仮想アプリケーション１３０または１３１を介して仮想マシン１４０にハードウェア非依存アプリケーション１６０または１６１の起動要求を送信し、仮想マシン１４０内のハードウェア非依存アプリケーションマネージャ１５０が対応するハードウェア非依存アプリケーション１６０または１６１の起動を制御するようにしたので、単一仮想マシン１４０上に複数のハードウェア非依存アプリケーション１６０および１６１を動作させ、ネイティブアプリケーションであるアプリケーションマネージャ１００からもそれらの実アプリケーションを個々に認識することが可能となった。
【０１２６】
また、従来のアプリケーション起動に関する操作体系およびアプリケーションマネージャによるアプリケーション実行制御機構を変更することなく、複数のハードウェア非依存アプリケーション１６０および１６１を個別に管理、動作させる環境をメモリリソースに大きな負荷を及ぼすことなく提供することが可能になった。
【０１２７】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【０１２８】
【発明の効果】
本発明のある局面によれば、アプリケーションマネージャが仮想アプリケーションを制御して仮想マシンに対してハードウェア非依存アプリケーションの起動を要求するので、ネイティブアプリケーションの制御と同様にしてハードウェア非依存アプリケーションの制御を行なえるようになり、同じ操作体系によってネイティブアプリケーションおよびハードウェア非依存アプリケーションの起動を選択的に行なうことが可能となった。したがって、アプリケーションマネージャがネイティブアプリケーションおよびハードウェア非依存アプリケーションの実行状況を把握することが可能となった。
【０１２９】
また、アプリケーションマネージャがランチャから出力されたアプリケーションの起動要求に応じて、起動中のネイティブアプリケーションおよびハードウェア非依存アプリケーションの数を参照し、起動状態にあるアプリケーションの数を制限してアプリケーションの実行を管理するので、メモリ容量に制約がある組込み機器であっても、複数のアプリケーションを同時に起動したままにしておくことが可能となった。
【０１３０】
また、仮想アプリケーションは、ネイティブコードで記述されるので、アプリケーションマネージャは、仮想アプリケーションをネイティブアプリケーションと同様に制御することができ、従来のアプリケーションマネージャを変更せずに用いることが可能となった。
【０１３１】
また、仮想アプリケーションは起動時に、仮想マシンが起動されていなければ仮想マシンを起動するので、アプリケーション管理装置の起動時に仮想マシンを起動する必要がなくなり、ハードウェア非依存アプリケーションが起動されていないにもかかわらず、仮想マシンが起動されているといった不具合を防止でき、アプリケーション管理装置の処理効率を向上させることが可能となった。
【０１３２】
また、ハードウェア非依存アプリケーションは複数存在するのに対して、仮想マシンは１つだけ存在するので、メモリの共有を図ることができ、メモリ容量の不足を防止することが可能となった。
【０１３３】
また、仮想マシンが、仮想アプリケーションからの起動要求に応じて当該ハードウェア非依存アプリケーションを起動するとともに、当該ハードウェア非依存アプリケーションに一意のアプリケーションＩＤを付与して仮想アプリケーションに通知するので、仮想マシンはハードウェア非依存アプリケーションの管理を容易に行なうことが可能となった。
【０１３４】
また、仮想アプリケーションは、自身を終了するときに、アプリケーションＩＤを含んだ終了通知を仮想マシンに送信するので、仮想マシンは終了すべきハードウェア非依存アプリケーションを容易に把握することが可能となった。
【０１３５】
また、仮想マシンがハードウェア非依存アプリケーションの終了を検知すると、仮想アプリケーションに対して終了通知を送信し、仮想アプリケーションは、仮想マシンから終了通知を受信すると、自身を終了する処理を実行するので、ユーザによってハードウェア非依存アプリケーションが終了されたときに、対応する仮想アプリケーションも終了させることが可能となった。
【図面の簡単な説明】
【図１】本発明の実施の形態におけるアプリケーション管理装置の概略構成を示すブロック図である。
【図２】アプリケーションマネージャ１００の詳細な構成を示すブロック図である。
【図３】仮想マシン１４０の詳細な構成を示すブロック図である。
【図４】仮想アプリケーション１３０および１３１の詳細な構成を示すブロック図である。
【図５】ハードウェア非依存アプリケーションの起動の一例として、Ｊａｖａ（Ｒ）で作成されたメモ帳を起動する場合の処理手順を説明するためのフローチャートである。
【図６】コマンドテーブル２１０に予め定義されている情報の一例を示す図である。
【図７】ユーザの操作によってＪａｖａ（Ｒ）メモ帳を終了する場合における、仮想アプリケーション１３０が終了するまでの処理手順を説明するためのフローチャートである。
【図８】新たなハードウェア非依存アプリケーションを起動するときに、起動中のアプリケーション数が既にアプリケーション上限数に達している場合の処理手順を説明するためのフローチャートである。
【図９】仮想アプリケーションが起動されてから、アプリケーションマネージャ１００がハードウェア非依存アプリケーション１６０を起動するまでの処理手順を模式的に示す図である。
【図１０】仮想アプリケーションが起動されてから、アプリケーションマネージャ１００がハードウェア非依存アプリケーション１６０を起動するまでの処理手順を説明するためのフローチャートである。
【図１１】ハードウェア非依存アプリケーションが終了したときに、そのハードウェア非依存アプリケーションに対応する仮想アプリケーションに対して終了が通知されるまでの処理手順を説明するためのフローチャートである。
【図１２】仮想アプリケーションが終了するときに、対応するハードウェア非依存アプリケーションが終了するまでの処理手順を説明するためのフローチャートである。
【図１３】従来の組込み機器に組込まれたアプリケーションマネージャの動作を説明するための図である。
【図１４】ネイティブアプリケーションとハードウェア非依存アプリケーションとが実装された場合のアプリケーションマネージャの動作を説明するための図である。
【図１５】特開２０００−２５０７５８号公報に開示された組込み機器用Ｊａｖａ（Ｒ）アプリケーションマネージャの動作を説明するための図である。
【符号の説明】
１００　アプリケーションマネージャ、１１０　ランチャ、１２０，１２１　ネイティブアプリケーション、１３０，１３１　仮想アプリケーション、１４０仮想マシン、１５０　ハードウェア非依存アプリケーションマネージャ、１６０，１６１　ハードウェア非依存アプリケーション、２００　コマンド受信部、２１０　コマンドテーブル、２２０　アプリケーション制御部、２３０　コマンド実行部、２４０　アプリケーションリスト、２５０　アプリケーション上限数記憶部、３００　ハードウェア非依存アプリケーション制御部、３０１　アプリケーションリスト、３１０　ハードウェア非依存アプリケーション制御情報受信部、３２０　仮想マシン通信部、３２１，３２２　通信エージェント、３３０　クラスローダ、４００　仮想アプリケーション通信部、４１０　ハードウェア非依存アプリケーションＩＤ格納部、４２０　ハードウェア非依存アプリケーション実行制御部。
【図１】
2004102398.tif 000003
【図２】
2004102398.tif 000004
【図３】
2004102398.tif 000005
【図４】
2004102398.tif 000006
【図５】
2004102398.tif 000007
【図６】
2004102398.tif 000008
【図７】
2004102398.tif 000009
【図８】
2004102398.tif 000010
【図９】
2004102398.tif 000011
【図１０】
2004102398.tif 000012
【図１１】
2004102398.tif 000013
【図１２】
2004102398.tif 000014
【図１３】
2004102398.tif 000015
【図１４】
2004102398.tif 000016
【図１５】
2004102398.tif 000017