(57)【要約】【課題】単一のプロセスまたは単一のバーチャルマシン上で、複数のアプリケーションを並列に処理することが可能なアプリケーション管理装置を提供すること。【解決手段】アプリケーション管理テーブル２２２は、各アプリケーションの現在の状態を管理する。スレッドグループ管理テーブル２２３は、各スレッドの現在の状況を管理する。スレッドグループ制御部２２１は、複数のアプリケーションにおいて発生するイベントに応じて、アプリケーション管理テーブル２２２およびスレッドグループ管理テーブル２２３を更新すると共に、イベントに応じた指示をマルチスレッド管理部１１３へ出力する。したがって、複数のアプリケーションを１つのプロセス上で動作させることが可能となる。【選択図】        図２
2005031752.tif 000002
【特許請求の範囲】
【請求項１】
マルチスレッド機能を有する中間言語処理用のバーチャルマシン部を有する機器において動作するアプリケーション管理装置であって、
複数のアプリケーションのメインスレッドによって生成されるスレッドグループと、
前記複数のアプリケーションを管理するためのアプリケーション管理テーブルと、
前記スレッドグループを管理するためのスレッドグループ管理テーブルと、
前記複数のアプリケーションにおいて発生するイベントに応じて、前記アプリケーション管理テーブルおよび前記スレッドグループ管理テーブルを更新すると共に、前記スレッドグループの動作を制御するためのスレッドグループ制御手段とを含み、
前記複数のアプリケーションが１つのプロセス上で動作する、アプリケーション管理装置。
【請求項２】
前記アプリケーション管理装置はさらに、前記複数のアプリケーションの実行を監視するための実行監視手段を含み、
前記複数のアプリケーションは、第１のプロセス上で動作し、
前記スレッドグループ管理手段および前記実行監視手段は、前記第１のプロセスとは異なる第２のプロセス上で動作する、請求項１記載のアプリケーション管理装置。
【請求項３】
前記スレッドグループ制御手段は、アプリケーションの起動イベントが発生した場合、当該アプリケーションに対応するスレッドの生成を制御し、生成されるスレッドを前記スレッドグループ管理テーブルに追加する、請求項１または２記載のアプリケーション管理装置。
【請求項４】
前記スレッドグループ制御手段は、アプリケーションの一時停止イベントが発生した場合、当該アプリケーションに対応するスレッドグループの一時停止を制御し、当該スレッドグループに対応する前記スレッドグループ管理テーブルを更新する、請求項１または２記載のアプリケーション管理装置。
【請求項５】
前記スレッドグループ制御手段は、アプリケーションの再開イベントが発生した場合、当該アプリケーションに対応するスレッドグループの再開を制御し、当該スレッドグループに対応する前記スレッドグループ管理テーブルを更新する、請求項１または２記載のアプリケーション管理装置。
【請求項６】
前記スレッドグループ制御手段は、アプリケーションの停止イベントが発生した場合、当該アプリケーションに対応するスレッドグループの停止を制御し、当該スレッドグループに対応する前記スレッドグループ管理テーブルを更新する、請求項１または２記載のアプリケーション管理装置。
【請求項７】
前記スレッドグループ管理手段は、スレッドの切替えタイミングで前記複数のアプリケーションからのイベントが発生しているか否かを判定する、請求項３〜６のいずれかに記載のアプリケーション管理装置。
【請求項８】
前記アプリケーション管理装置はさらに、通信によって外部からアプリケーションを取得するためのアプリケーション取得手段と、
前記アプリケーション取得手段によって取得されたアプリケーションを保存するための保存手段と、
前記アプリケーション取得手段によって取得されたアプリケーションを前記アプリケーション管理テーブルに登録するためのアプリケーション登録手段とを含む、請求項１〜７のいずれかに記載のアプリケーション管理装置。
【請求項９】
前記アプリケーション登録手段は、前記アプリケーション管理テーブルを参照して、前記アプリケーション取得手段によって取得されたアプリケーションと同一アプリケーションが既にあるか否かを判定し、同一アプリケーションが既にある場合には、当該アプリケーションの置換を行なう、請求項８記載のアプリケーション管理装置。
【請求項１０】
前記アプリケーション登録手段は、前記同一アプリケーションが動作中であるか否かを判定し、前記同一アプリケーションが動作中の場合には、動作中の前記同一アプリケーションを停止させ、当該アプリケーションの置換を行なった後に再起動させる、請求項９記載のアプリケーション管理装置。
【請求項１１】
前記アプリケーション管理テーブルには、アプリケーションの初期起動フラグが設けられ、
前記スレッドグループ制御手段は、システム起動時に前記初期起動フラグを参照して、初期起動アプリケーションを起動させた後、当該初期起動アプリケーションを一時停止させる、請求項１〜１０のいずれかに記載のアプリケーション管理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、携帯電話などの組込み機器において実行されるアプリケーションを管理する技術に関し、特に、簡易な方法によって複数のアプリケーションを並列処理するアプリケーション管理装置に関する。
【０００２】
【従来の技術】
近年、携帯電話に代表されるように、通信機能を有する組込み機器が広く普及している。このような組込み機器にＪａｖａ（Ｒ）が搭載され、ハードウェアへの依存性が低い、より汎用性が高いソフトウェアコードの開発が行なわれるようになってきている。
【０００３】
また、Ｊａｖａ（Ｒ）の搭載によりソフトウェアコードの抽象性が増し、ハードウェアシステムをよく知らない者でもソフトウェアの開発が行なえるようになってきている。さらには、インターネットなどに代表されるネットワークなど、組込み機器の外部からのソフトウェアの追加や更新が可能になるなど様々なメリットが生まれている。
【０００４】
しかし、現在、これらメリットの多いＪａｖａ（Ｒ）対応のコードを用いたアプリケーション開発が一部に留まっている事が多い。その原因の１つとして、現在のＪａｖａ（Ｒ）対応コードを仮想的に実行するバーチャルマシン（以下、Ｊａｖａ（Ｒ）ＶＭと呼ぶ。）が、複数のアプリケーションを同時に並行処理できる構成になっていないことが挙げられる。
【０００５】
図１４は、Ｊａｖａ（Ｒ）ＶＭにおける問題点を説明するための図である。図１４は、３つのアプリケーションＡ〜Ｃが、それぞれプロセス２０１〜２０３上で起動されているところを示している。たとえば、アプリケーションＡ実行プロセス２０１上で、バーチャルマシン部２１０と、メインスレッドＡ２２０と、スレッドＡ２〜Ａ４（２３０，２４０，２５０）とが動作する。また、バーチャルマシン部２１０は、中間言語をネイティブコードに変換して処理する中間言語処理部２１１と、バーチャルマシン部２１０が使用するメモリを管理するメモリ管理部２１２と、マルチスレッドの制御および管理を行なうマルチスレッド管理部２１３と、アプリケーションにおいて発生するイベントを処理するイベント処理部２１４とを含む。なお、他のプロセス２０２および２０３上でも、アプリケーションＡ実行プロセス２０１と同様のアプリケーションが起動される。
【０００６】
上述したように、Ｊａｖａ（Ｒ）ＶＭにおいては、各アプリケーションＡ〜Ｃ毎にＪａｖａ（Ｒ）ＶＭが起動され、Ｊａｖａ（Ｒ）対応のアプリケーションが起動される。そのため、Ｊａｖａ（Ｒ）対応のアプリケーションを実行するために、その都度Ｊａｖａ（Ｒ）ＶＭを起動し、その後対象となるアプリケーションコードをロードしてアプリケーション処理を開始する必要がある。
【０００７】
また、上述したように、複数アプリケーションを並行処理できる構成になっていないため、並行処理の必要があるアプリケーションは、アプリケーション毎にＪａｖａ（Ｒ）ＶＭを起動するか、各組込み機器のハードウェアに依存したネイティブコードにより開発されたアプリケーション使用するしかなかった。そのため、Ｊａｖａ（Ｒ）のようなハードウェアに直接依存しない中間コードアプリケーションとハードウェアに依存したネイティブコードアプリケーションとが混在していた。
【０００８】
これに関連する技術として、特開２００２−６３０９６号公報、特開２０００−２５０７５８号公報および特開２０００−２９７２６号公報に開示された発明がある。
【０００９】
特開２００２−６３０９６号公報に開示された端末装置においては、端末装置のアプリ実行部がネイティブアプリとインタプリタアプリとの両方を実行可能である場合、端末装置のアプリ管理部は、アプリ実行部に、プラットホームに非依存のインタプリタアプリを提供源から選択的に取込ませて実行させる。ネイティブコンパイラは、インタプリタアプリを一括コンパイルして、インタプリタアプリと同機能の変換後ネイティブアプリを得る。
【００１０】
端末装置内にネイティブコンパイラがあれば、実行すべきインタプリタアプリが一括コンパイルされて、得られた変換後ネイティブアプリをアプリ実行部が実行する。提供源内にネイティブコンパイラがあれば、配布すべきインタプリタが一括コンパイルされて、得られた変換後ネイティブアプリが端末装置に対して配布される。
【００１１】
また、特開２０００−２５０７５８号公報に開示された組込み機器用Ｊａｖａ（Ｒ）アプリケーションマネージャにおいては、組込み機器が、クラスオブジェクトを格納するアプリケーションキャッシュと、ネットワークを介してクライアントと通信するネットワークインタフェースと、組込み機器にインストールされ組込み機器上で実行されるＪａｖａ（Ｒ）仮想マシンとを備える。
【００１２】
アプリケーションマネージャは、エントリを有し、エントリの各々が、組込み機器に現在ロードされているクラスオブジェクトを識別するクラスオブジェクトリストと、ネットワークインタフェースを介してクライアントから受信するアプリケーションクラスをロードし、アプリケーションクラスに対する新たなクラスオブジェクトを生成し、アプリケーションキャッシュに新たなクラスオブジェクトを格納し、新たなクラスオブジェクトをアプリケーションキャッシュにロードされているものとして識別するために、クラスオブジェクトリストに新たなエントリを付加するクラスローダメソッドとを具備する。
【００１３】
さらには、特開２０００−２９７２６号公報に開示されたＪａｖａ（Ｒ）プログラミング言語で書かれたプログラミングのための高速同期方法において、それぞれの同期のとれたスレッドは、複数の同期のとれたスレッドの間で共有されるオブジェクト識別子（ＯＩＤ）によって識別される少なくとも１つのオブジェクトを参照する。同期のとれているスレッドの中の１つが、実行のために選択される。選択されたスレッドに入る際に、エントリ・シーケンスは、共有されているオブジェクトが、そのＯＩＤをロック・スタックの上へのプッシュによってロックされるように指示する。選択されたスレッドによって定義される動作が実行され、ＯＩＤをロック・スタックからのポップによって除去される。
【００１４】
【特許文献１】
特開２００２−６３０９６号公報
【００１５】
【特許文献２】
特開２０００−２５０７５８号公報
【００１６】
【特許文献３】
特開２０００−２９７２６号公報
【００１７】
【発明が解決しようとする課題】
上述したように、携帯電話などの組込み機器に搭載されるＪａｖａ（Ｒ）ＶＭは、複数のアプリケーションを同時に並行処理できなる実装になっていないことが多い。そのため並行処理の必要があるアプリケーションは、各マシンのハードウェアに依存したネイティブコードによって開発を行なうのが一般的である。したがって、Ｊａｖａ（Ｒ）等の中間言語コードの特性である、ハードウェアに依存しない可搬性の高いアプリケーション開発ができないという問題点があった。
【００１８】
また、Ｊａｖａ（Ｒ）対応のアプリケーションを実行するためには、その都度Ｊａｖａ（Ｒ）ＶＭを起動し、その後対象となるアプリケーションコードをロードしてアプリケーション処理を開始する必要がある。そのため、アプリケーションの起動に多大な時間を要するといった問題点があった。
【００１９】
これらの問題点は、上述した特開２００２−６３０９６号公報、２０００−２５０７５８号公報および特開２０００−２９７２６号公報に開示された発明によっても解決することはできない。
【００２０】
本発明は、上記問題点を解決するためになされたものであり、第１の目的は、単一のプロセスまたは単一のバーチャルマシン上で、複数のアプリケーションを並列に処理することが可能なアプリケーション管理装置を提供することである。
【００２１】
第２の目的は、信頼性のないアプリケーションがはまり込んだ場合でも、他のアプリケーションの処理を継続することが可能なアプリケーション管理装置を提供することである。
【００２２】
第３の目的は、外部からアプリケーションを取得し、他のアプリケーションと並列に処理することが可能なアプリケーション管理装置を提供することである。
【００２３】
第４の目的は、システムの起動時に、アプリケーションを効率よく動作させることが可能なアプリケーション管理装置を提供することである。
【００２４】
【課題を解決するための手段】
本発明のある局面に従えば、マルチスレッド機能を有する中間言語処理用のバーチャルマシン部を有する機器において動作するアプリケーション管理装置であって、複数のアプリケーションのメインスレッドによって生成されるスレッドグループと、複数のアプリケーションを管理するためのアプリケーション管理テーブルと、スレッドグループを管理するためのスレッドグループ管理テーブルと、複数のアプリケーションにおいて発生するイベントに応じて、アプリケーション管理テーブルおよびスレッドグループ管理テーブルを更新すると共に、スレッドグループの動作を制御するためのスレッドグループ制御手段とを含み、複数のアプリケーションが１つのプロセス上で動作する。
【００２５】
スレッドグループ制御手段が、複数のアプリケーションにおいて発生するイベントに応じて、アプリケーション管理テーブルおよびスレッドグループ管理テーブルを更新すると共に、スレッドグループの動作を制御するので、複数のアプリケーションを１つのプロセス上で動作させることが可能となる。
【００２６】
好ましくは、アプリケーション管理装置はさらに、複数のアプリケーションの実行を監視するための実行監視手段を含み、複数のアプリケーションは、第１のプロセス上で動作し、スレッドグループ管理手段および実行監視手段は、第１のプロセスとは異なる第２のプロセス上で動作する。
【００２７】
したがって、アプリケーションのはまり込みなどが発生した場合に、第１のプロセスを停止して再起動させることにより、他のアプリケーションの処理を継続することが可能となる。
【００２８】
好ましくは、スレッドグループ制御手段は、アプリケーションの起動イベントが発生した場合、当該アプリケーションに対応するスレッドの生成を制御し、生成されるスレッドをスレッドグループ管理テーブルに追加する。
【００２９】
好ましくは、スレッドグループ制御手段は、アプリケーションの一時停止イベントが発生した場合、当該アプリケーションに対応するスレッドグループの一時停止を制御し、当該スレッドグループに対応するスレッドグループ管理テーブルを更新する。
【００３０】
好ましくは、スレッドグループ制御手段は、アプリケーションの再開イベントが発生した場合、当該アプリケーションに対応するスレッドグループの再開を制御し、当該スレッドグループに対応するスレッドグループ管理テーブルを更新する。
【００３１】
好ましくは、スレッドグループ制御手段は、アプリケーションの停止イベントが発生した場合、当該アプリケーションに対応するスレッドグループの停止を制御し、当該スレッドグループに対応するスレッドグループ管理テーブルを更新する。
【００３２】
さらに好ましくは、スレッドグループ管理手段は、スレッドの切替えタイミングで複数のアプリケーションからのイベントが発生しているか否かを判定する。
【００３３】
したがって、スレッド処理に伴う無駄なロック、アンロック処理を抑えることができ、アプリケーションの制御を効率よく行なうことが可能となる。
【００３４】
好ましくは、アプリケーション管理装置はさらに、通信によって外部からアプリケーションを取得するためのアプリケーション取得手段と、アプリケーション取得手段によって取得されたアプリケーションを保存するための保存手段と、アプリケーション取得手段によって取得されたアプリケーションをアプリケーション管理テーブルに登録するためのアプリケーション登録手段とを含む。
【００３５】
アプリケーション登録手段は、アプリケーション取得手段によって取得されたアプリケーションをアプリケーション管理テーブルに登録するので、外部からアプリケーションをインストールして、他のアプリケーションと並行に処理することが可能となる。
【００３６】
さらに好ましくは、アプリケーション登録手段は、アプリケーション管理テーブルを参照して、アプリケーション取得手段によって取得されたアプリケーションと同一アプリケーションが既にあるか否かを判定し、同一アプリケーションが既にある場合には、当該アプリケーションの置換を行なう。
【００３７】
したがって、外部から取得したアプリケーションと同一のアプリケーションがある場合でも、アプリケーションの管理を容易に行なうことが可能となる。
【００３８】
さらに好ましくは、アプリケーション登録手段は、同一アプリケーションが動作中であるか否かを判定し、同一アプリケーションが動作中の場合には、動作中の同一アプリケーションを停止させ、当該アプリケーションの置換を行なった後に再起動させる。
【００３９】
したがって、外部から取得したアプリケーションと同一のアプリケーションが動作中の場合でも、外部から取得したアプリケーションを動作させることが可能となる。
【００４０】
好ましくは、アプリケーション管理テーブルには、アプリケーションの初期起動フラグが設けられ、スレッドグループ制御手段は、システム起動時に初期起動フラグを参照して、初期起動アプリケーションを起動させた後、当該初期起動アプリケーションを一時停止させる。
【００４１】
したがって、ユーザは使用頻度の高いアプリケーションを自動的に起動させることが可能となる。
【００４２】
【発明の実施の形態】
（第１の実施の形態）
本発明の第１の実施の形態における組込み機器によって実行されるアプリケーション管理プログラム（以下、アプリケーション管理装置と呼ぶ。）においては、各アプリケーション毎にそれぞれプロセスを割当てるのではなく、１つのプロセスで複数のアプリケーションを並行処理するものである。
【００４３】
図１は、本発明の第１の実施の形態におけるアプリケーション管理装置の概略構成を示す図である。このアプリケーション管理装置は、アプリケーション実行プロセス１上で動作するバーチャルマシン部１１と、アプリケーションＡに属するスレッドグループＡ１２と、アプリケーションＢに属するスレッドグループＢ１３と、アプリケーションＣに属するスレッドグループＣ１４とを含む。
【００４４】
また、バーチャルマシン部１１は、中間言語をネイティブコードに変換して処理する中間言語処理部１１１と、バーチャルマシン部１１が使用するメモリを管理するメモリ管理部１１２と、マルチスレッドの制御および管理を行なうマルチスレッド管理部１１３と、アプリケーション毎のスレッドグループを管理するスレッドグループ管理部１１４と、各アプリケーションにおいて発生するイベントを処理するイベント処理部１１５とを含む。
【００４５】
図２は、スレッドグループ管理部１１４の構成をさらに詳細に説明するための図である。スレッドグループ管理部１１４は、スレッドグループ制御部２２１と、アプリケーション管理テーブル２２２と、スレッドグループ管理テーブル２２３とを含む。アプリケーション管理テーブル２２２は、各アプリケーションの現在の状態を管理するテーブルであり、アプリケーションＡが現在処理中であり、アプリケーションＢが現在停止中であることを示している。
【００４６】
また、スレッドグループ管理テーブル２２３は、各スレッドの現在の状況を管理するテーブルであり、スレッドＡ１が現在処理中であり、スレッドＡ２〜Ａ４が現在Ｒｅａｄｙ状態であり、スレッドＣ１〜Ｃ４が現在待機中であることを示している。
【００４７】
スレッドグループ制御部２２１は、スレッドの処理が切替わったときに、スレッドグループ管理テーブル２２３を検索し、次に処理するスレッドを特定してマルチスレッド管理部１１３にそのスレッドの実行を指示する。そして、マルチスレッド管理部１１３は、スレッドグループ制御部２２１から指示があったスレッドの実行を開始する。
【００４８】
また、スレッドグループ制御部２２１は、アプリケーション制御イベントが発生したときに、アプリケーション管理テーブル２２２を検索し、該当するアプリケーションに属するスレッドをスレッドグループ管理テーブル２２３を参照することによって特定し、そのスレッドの制御をマルチスレッド管理部１１３に指示する。
【００４９】
図３は、アプリケーション起動イベントが発生した場合のスレッドグループ管理部１１４の処理手順を説明するためのフローチャートである。イベント制御部１１５がアプリケーション起動イベントを検知すると（Ｓ１１，Ｙｅｓ）、スレッドグループ制御部２２１は、スレッドグループ管理テーブル２２３に、起動イベントに対応するスレッドテーブルを追加し（Ｓ１２）、マルチスレッド管理部１１３にスレッド生成を指示する（Ｓ１３）。
【００５０】
次に、スレッドグループ制御部２２１は、スレッドグループ管理テーブル２２３を更新し（Ｓ１４）、アプリケーション管理テーブル２２２を更新して（Ｓ１５）、マルチスレッド管理部１１３にスレッド処理を指示する（Ｓ１６）。マルチスレッド管理部１１３は、スレッドグループ制御部２２１からスレッド処理の指示を受けると、スレッドの処理を開始する。
【００５１】
図４は、アプリケーションの一時停止イベントを検知した場合のスレッドグループ管理部１１４の処理手順を説明するためのフローチャートである。まず、イベント制御部１１５がアプリケーションの一時停止イベントを検知すると（Ｓ２１，Ｙｅｓ）、スレッドグループ制御部２２１は、アプリケーション管理テーブル２２２およびスレッドグループ管理テーブル２２３を参照して、対象となるスレッドを検索する（Ｓ２２）。スレッドグループ制御部２２１が、対象スレッドを検出しなければ（Ｓ２３，Ｎｏ）、アプリケーション管理テーブル２２２を更新して（Ｓ２６）、処理を終了する。
【００５２】
また、スレッドグループ制御部２２１が、対象スレッドを検出すると（Ｓ２３，Ｙｅｓ）、マルチスレッド管理部１１３にスレッドの一時停止を指示し（Ｓ２４）、スレッドグループ管理テーブル２２３を更新し（Ｓ２５）、ステップＳ２２に戻って以降の処理を繰返す。以上の処理によって、アプリケーションに属するスレッドを全て一時停止状態にすることができる。
【００５３】
図５は、アプリケーションの再開イベントを検知した場合のスレッドグループ管理部１１４の処理手順を説明するためのフローチャートである。まず、イベント制御部１１５がアプリケーションの再開イベントを検知すると（Ｓ３１，Ｙｅｓ）、スレッドグループ制御部２２１は、アプリケーション管理テーブル２２２およびスレッドグループ管理テーブル２２３を参照して、対象となるスレッドを検索する（Ｓ３２）。スレッドグループ制御部２２１が、対象スレッドを検出しなければ（Ｓ３３，Ｎｏ）、アプリケーション管理テーブル２２２を更新して（Ｓ３６）、処理を終了する。
【００５４】
また、スレッドグループ制御部２２１が、対象スレッドを検出すると（Ｓ３３）、マルチスレッド管理部１１３にスレッドの再開を指示し（Ｓ３４）、スレッドグループ管理テーブル２２３を更新し（Ｓ３５）、ステップＳ３２に戻って以降の処理を繰返す。以上の処理によって、アプリケーションに属するスレッドを全て再開することができる。
【００５５】
図６は、アプリケーションの停止イベントを検知した場合のスレッドグループ管理部１１４の処理手順を説明するためのフローチャートである。まず、イベント制御部１１５がアプリケーションの停止イベントを検知すると（Ｓ４１，Ｙｅｓ）、スレッドグループ制御部２２１は、アプリケーション管理テーブル２２２およびスレッドグループ管理テーブル２２３を参照して、対象となるスレッドを検索する（Ｓ４２）。スレッドグループ制御部２２１が、対象スレッドを検出しなければ（Ｓ４３，Ｎｏ）、アプリケーション管理テーブル２２２を更新して（Ｓ４６）、処理を終了する。
【００５６】
また、スレッドグループ制御部２２１が、対象スレッドを検出すると（Ｓ４３）、マルチスレッド管理部１１３にスレッドの停止を指示し（Ｓ４４）、スレッドグループ管理テーブル２２３を更新し（Ｓ４５）、ステップＳ４２に戻って以降の処理を繰返す。以上の処理によって、アプリケーションに属するスレッドを全て停止することができる。
【００５７】
以上説明したように、本実施の形態におけるアプリケーション管理装置によれば、スレッドグループ制御部２２１が、アプリケーションのイベントに応じて各アプリケーションおよびスレッドの状態を管理し、マルチスレッド管理部１１３にイベントに対応した指示を出すようにしたので、単一のプロセスまたは単一のバーチャルマシン上で、複数のアプリケーションを並列に処理することが可能となった。
【００５８】
（第２の実施の形態）
第１の実施の形態においては、１つのプロセス上で複数のアプリケーションの処理を管理するものであった。本発明の第２の実施の形態においては、アプリケーション実行プロセスおよびスレッドグループ管理プロセスの２つのプロセスで複数のアプリケーション処理を管理するものである。
【００５９】
図７は、本発明の第２の実施の形態におけるアプリケーション管理装置の概略構成を示す図である。このアプリケーション管理装置は、アプリケーション実行プロセス３１と、スレッドグループ管理プロセス３２とを含む。アプリケーション実行プロセス３１上で、バーチャルマシン部３１１と、スレッドグループ１２〜１３とが動作する。また、スレッドグループ管理プロセス３２上で、スレッドグループ管理部１１４と、アプリケーション実行監視部３２２とが動作する。なお、バーチャルマシン部３１１は、図１に示すバーチャルマシン部１１からスレッドグループ管理部１１４が削除された構成を有しており、それ以外は図１に示すバーチャルマシン部１１と同様である。したがって、重複する構成および機能の詳細な説明は繰返さない。また、アプリケーション実行監視部３２２は、スレッドグループ管理プロセス３２とは別のプロセス上で動作してもよい。
【００６０】
アプリケーション実行監視部３２２は、アプリケーションの実行状況を監視する。そして、アプリケーションのはまり込みを検出した場合は、アプリケーション実行プロセス３１を強制的に停止した後、再度アプリケーション実行プロセス３１を起動することによって、バーチャルマシン部３１１を起動させる。また、アプリケーション実行監視部３２２は、各スレッドのメモリ使用状況と、スレッドの実行状態を検索し、はまり込んだアプリケーション以外のスレッドを、はまり込む前の状態に戻して処理を継続する。なお、アプリケーション実行監視部３２２は、一定時間ごとにアプリケーション実行プロセス３１の応答を検知するウォッチドッグタイマ等によって構成される。
【００６１】
以上説明したように、本実施の形態におけるアプリケーション管理装置によれば、アプリケーション実行監視部３２２がアプリケーションの実行状況を監視し、アプリケーション実行プロセス１１から応答がなければ、アプリケーション実行プロセス３１を再起動するようにしたので、信頼性のないアプリケーションがはまり込んだ場合であっても、他のアプリケーションの処理を継続することが可能となった。
【００６２】
（第３の実施の形態）
本発明の第３の実施の形態におけるアプリケーション管理装置の概略構成は、図１に示す第１の実施の形態におけるアプリケーション管理装置または図７に示す第２の実施の形態におけるアプリケーション管理装置の概略構成と同様である。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００６３】
図８は、本発明の第３の実施の形態におけるアプリケーション管理装置のイベント制御部１１５の処理手順を説明するためのフローチャートである。中間言語処理部１１１が中間言語を処理しているときに（Ｓ５１）、イベント制御部１１５はスレッドが切替わったか否かを判定する（Ｓ５２）。スレッドが切替わっていなければ（Ｓ５２，Ｎｏ）、ステップＳ５１に戻って以降の処理を繰返す。
【００６４】
また、スレッドが切替わっていれば（Ｓ５２，Ｙｅｓ）、アプリケーションに対する起動、一時停止、再開または停止の制御イベントが発生しているか否かを検知する（Ｓ５３）。制御イベントが発生していなければ（Ｓ５３，Ｎｏ）、ステップＳ５１に戻って以降の処理を繰返す。また、制御イベントが発生していれば（Ｓ５３，Ｙｅｓ）、図３〜図７に示す制御イベント処理を行ない、ステップＳ５１に戻って以降の処理を繰返す。
【００６５】
以上説明したように、本実施の形態におけるアプリケーション管理装置によれば、制御イベントが発生している場合には、イベント制御部１１５が制御イベントに対応した処理を行なうようにしたので、スレッド処理に伴う無駄なロック、アンロック処理を抑えることができ、アプリケーションの制御を効率よく行なうことが可能となった。
【００６６】
（第４の実施の形態）
本発明の第４の実施の形態におけるアプリケーション管理装置は、図１に示す第１の実施の形態におけるアプリケーション管理装置または図７に示す第２の実施の形態におけるアプリケーション管理装置に、いくつかの構成が付加されたものである。
【００６７】
図９は、本発明の第４の実施の形態におけるアプリケーション管理装置に付加された構成を示す図である。第４の実施の形態におけるアプリケーション管理装置には、無線などの通信部４１と、通信部４１を介して外部からアプリケーションを取得するアプリケーション取得部４２と、アプリケーション取得部４２によって取得されたアプリケーションを図示しないＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのメモリに保存するアプリケーション保存部４３と、アプリケーション保存部４３によって保存されたアプリケーションをアプリケーション管理テーブル２２２に登録するアプリケーション登録部４４とが追加されている。
【００６８】
図１０は、本発明の第４の実施の形態におけるアプリケーション管理装置の処理手順を説明するためのフローチャートである。まず、イベント制御部１１５は、インストールイベントが発生したか否かを判定する（Ｓ６１）。インストールイベントが発生すれば（Ｓ６１，Ｙｅｓ）、インストールアプリケーションが起動される（Ｓ６２）。これによって、アプリケーション取得部４２は、通信部４１を介してアプリケーションを取得する。
【００６９】
次に、アプリケーション保存部４３が、アプリケーション取得部４２によって取得されたアプリケーションを保存する（Ｓ６３）。そして、アプリケーション登録部４４が、保存されたアプリケーションをアプリケーション管理テーブル２２２に登録する（Ｓ６４）。
【００７０】
以上説明したように、本実施の形態におけるアプリケーション管理装置によれば、アプリケーション取得部４２が通信部４１を介して外部からアプリケーションを取得し、アプリケーション管理テーブル２２２にそのアプリケーションを登録するようにしたので、インターネット等を利用して外部から取得したアプリケーションを組込み機器に追加することが可能となった。
【００７１】
（第５の実施の形態）
本発明の第４の実施の形態におけるアプリケーション管理装置においては、外部から取得したアプリケーションを全てアプリケーション管理テーブル２２２に登録するものであった。第５の実施の形態におけるアプリケーション管理装置は、外部から取得したアプリケーションが既に組込み機器内部に存在する場合には、そのアプリケーションを置換するものである。
【００７２】
本発明の第５の実施の形態におけるアプリケーション管理装置の概略構成は、図９に示す第４の実施の形態におけるアプリケーション管理装置の概略構成と同様である。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００７３】
図１１は、本発明の第５の実施の形態におけるアプリケーション管理装置の処理手順を説明するためのフローチャートである。まず、イベント制御部１１５は、インストールイベントが発生したか否かを判定する（Ｓ７１）。インストールイベントが発生すれば（Ｓ７１，Ｙｅｓ）、アプリケーション取得部４２は、通信部４１を介してアプリケーションを取得する。
【００７４】
次に、アプリケーション保存部４３が、アプリケーション取得部４２によって取得されたアプリケーションを保存する（Ｓ７２）。そして、アプリケーション登録部４４は、アプリケーション管理テーブル２２２を参照して、同一アプリケーションを検索する（Ｓ７３）。同一アプリケーションがなければ（Ｓ７４，Ｎｏ）、アプリケーション登録部４４は、保存されたアプリケーションをアプリケーション管理テーブル２２２に登録し（Ｓ７８）、処理を終了する。
【００７５】
また、同一アプリケーションがあれば（Ｓ７４，Ｙｅｓ）、アプリケーション登録部４４は、保存されたアプリケーションをアプリケーション管理テーブル２２２に登録し（Ｓ７５）、旧アプリケーションを削除して（Ｓ７６）、処理を終了する。
【００７６】
以上説明したように、本実施の形態におけるアプリケーション管理装置によれば、外部から取得されたアプリケーションと同じアプリケーションが既にあるか否かを判定し、同一アプリケーションがある場合にはそのアプリケーションを更新するようにしたので、新しいバージョンのアプリケーションなどを外部からインストールすることが可能となった。
【００７７】
（第６の実施の形態）
本発明の第５の実施の形態におけるアプリケーション管理装置は、外部から取得したアプリケーションが既に組込み機器内部に存在する場合には、そのアプリケーションを置換するものであった。しかし、更新されるアプリケーションが動作中の場合には、誤動作を起こすことが考えられる。第６の実施の形態においては、外部から取得したアプリケーションと同一のアプリケーションが動作中の場合には、動作中のアプリケーションを停止して、アプリケーション管理テーブル２２２を更新するものである。
【００７８】
本発明の第６の実施の形態におけるアプリケーション管理装置の概略構成は、図９に示す第４の実施の形態におけるアプリケーション管理装置の概略構成と同様である。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００７９】
図１２は、本発明の第６の実施の形態におけるアプリケーション管理装置の処理手順を説明するためのフローチャートである。まず、イベント制御部１１５は、インストールイベントが発生したか否かを判定する（Ｓ８１）。インストールイベントが発生すれば（Ｓ８１，Ｙｅｓ）、アプリケーション取得部４２は、通信部４１を介してアプリケーションを取得する。
【００８０】
次に、アプリケーション保存部４３が、アプリケーション取得部４２によって取得されたアプリケーションを保存する（Ｓ８２）。そして、アプリケーション登録部４４は、アプリケーション管理テーブル２２２を参照して、同一アプリケーションを検索する（Ｓ８３）。同一アプリケーションがなければ（Ｓ８４，Ｎｏ）、アプリケーション登録部４４は、保存されたアプリケーションをアプリケーション管理テーブル２２２に登録し（Ｓ９１）、処理を終了する。
【００８１】
また、同一アプリケーションがあれば（Ｓ８４，Ｙｅｓ）、アプリケーション管理部４４は、そのアプリケーションが動作中であるか否かを判定する（Ｓ８５）。そのアプリケーションが動作中でなければ（Ｓ８５，Ｎｏ）、ステップＳ８７へ進む。また、そのアプリケーションが動作中であれば（Ｓ８５，Ｙｅｓ）、動作中の旧アプリケーションを停止させる（Ｓ８６）。
【００８２】
ステップＳ８７において、アプリケーション登録部４４は、保存されたアプリケーションをアプリケーション管理テーブル２２２に登録し、旧アプリケーションを削除する（Ｓ８８）。そして、アプリケーション登録部４４は、旧アプリケーションが停止状態となっているか否かを判定する（Ｓ８９）。旧アプリケーションが停止状態でなければ（Ｓ８９，Ｎｏ）、処理を終了する。また、旧アプリケーションが停止状態であれば（Ｓ８９，Ｙｅｓ）、インストールした新アプリケーションを起動して（Ｓ９０）、処理を終了する。
【００８３】
以上説明したように、本実施の形態におけるアプリケーション管理装置によれば、外部から取得されたアプリケーションと同一アプリケーションが動作中の場合には、旧アプリケーションの動作を停止した後に旧アプリケーションを削除し、その後新アプリケーションを起動するようにしたので、旧アプリケーションが起動中であっても、誤動作を起こさずに新アプリケーションを起動することが可能となった。
【００８４】
（第７の実施の形態）
本発明の第７の実施の形態におけるアプリケーション管理装置は、第１〜第６の実施の形態におけるアプリケーション管理装置の構成に加えて、アプリケーション管理テーブル２２２にアプリケーションの初期起動フラグを設け、システムの起動時にこの初期起動フラグが設定されているアプリケーションを起動するものである。
【００８５】
本発明の第７の実施の形態におけるアプリケーション管理装置の概略は、図１および図７に示す第１および第２の実施の形態におけるアプリケーション管理装置の概略構成と同様である。したがって、重複する構成および機能の詳細な説明は繰返さない。
【００８６】
図１３は、本発明の第７の実施の形態におけるアプリケーション管理装置の処理手順を説明するためのフローチャートである。まず、組込み機器の電源がオンとなってシステムが起動すると（Ｓ１０１）、バーチャルマシン部１１が起動される（１０２）。そして、スレッドグループ制御部２２１はアプリケーション管理テーブル２２２を参照して、初期起動フラグのあるアプリケーションを検索する（Ｓ１０３）。
【００８７】
次に、初期起動フラグが検出されたか否かが判定される（Ｓ１０４）。初期起動フラグが検出されなければ（Ｓ１０４，Ｎｏ）、処理を終了する。初期起動フラグが検出されれば（Ｓ１０４，Ｙｅｓ）、スレッドグループ制御部２２１は、初期起動フラグに対応するアプリケーションを起動する（Ｓ１０５）。そして、起動したアプリケーションを一時停止状態にし（Ｓ１０６）、ステップＳ１０３に戻って以降の処理を繰返す。
【００８８】
以上説明したように、本実施の形態におけるアプリケーション管理装置によれば、システムの起動時に、初期起動フラグが付加されたアプリケーションを起動するようにしたので、使用頻度の高いアプリケーションを自動的に起動することができ、実際のアプリケーション使用時に、短時間でアプリケーションを使用することが可能となった。
【００８９】
また、中間コードを処理するバーチャルマシン部１１がＪａｖａ（Ｒ）ＶＭであるため、一般的に普及しているモジュールを使用でき、汎用性が高く、より広範囲のユーザがアプリケーションを利用することが可能となった。
【００９０】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【００９１】
【発明の効果】
本発明のある局面によれば、スレッドグループ制御手段が、複数のアプリケーションにおいて発生するイベントに応じて、アプリケーション管理テーブルおよびスレッドグループ管理テーブルを更新すると共に、スレッドグループの動作を制御するので、複数のアプリケーションを１つのプロセス上で動作させることが可能となった。
【００９２】
また、スレッドグループ管理手段および実行監視手段が、複数のアプリケーションが動作する第１のプロセスとは異なる第２のプロセス上で動作するので、アプリケーションのはまり込みなどが発生した場合に、第１のプロセスを停止して再起動させることにより、他のアプリケーションの処理を継続することが可能となった。
【００９３】
また、スレッドグループ管理手段が、スレッドの切替えタイミングで複数のアプリケーションからのイベントが発生しているか否かを判定するので、スレッド処理に伴う無駄なロック、アンロック処理を抑えることができ、アプリケーションの制御を効率よく行なうことが可能となった。
【００９４】
また、アプリケーション登録手段が、アプリケーション取得手段によって取得されたアプリケーションをアプリケーション管理テーブルに登録するので、外部からアプリケーションをインストールして、他のアプリケーションと並行に処理することが可能となった。
【００９５】
また、アプリケーション登録手段が、アプリケーション管理テーブルを参照して、アプリケーション取得手段によって取得されたアプリケーションと同一アプリケーションが既にあるか否かを判定し、同一アプリケーションが既にある場合には、当該アプリケーションの置換を行なうので、アプリケーションの管理を容易に行なうことが可能となる。
【００９６】
また、アプリケーション登録手段が、同一アプリケーションが動作中であるか否かを判定し、同一アプリケーションが動作中の場合には、動作中の同一アプリケーションを停止させ、当該アプリケーションの置換を行なった後に再起動させるので、外部から取得したアプリケーションを動作させることが可能となった。
【００９７】
また、スレッドグループ制御手段が、システム起動時に初期起動フラグを参照して、初期起動アプリケーションを起動させた後、当該初期起動アプリケーションを一時停止させるので、ユーザは使用頻度の高いアプリケーションを自動的に起動させることが可能となった。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態におけるアプリケーション管理装置の概略構成を示す図である。
【図２】スレッドグループ管理部１１４の構成をさらに詳細に説明するための図である。
【図３】アプリケーション起動イベントが発生した場合のスレッドグループ管理部１１４の処理手順を説明するためのフローチャートである。
【図４】アプリケーションの一時停止イベントを検知した場合のスレッドグループ管理部１１４の処理手順を説明するためのフローチャートである。
【図５】アプリケーションの再開イベントを検知した場合のスレッドグループ管理部１１４の処理手順を説明するためのフローチャートである。
【図６】アプリケーションの停止イベントを検知した場合のスレッドグループ管理部１１４の処理手順を説明するためのフローチャートである。
【図７】本発明の第２の実施の形態におけるアプリケーション管理装置の概略構成を示す図である。
【図８】本発明の第３の実施の形態におけるアプリケーション管理装置のイベント制御部１１５の処理手順を説明するためのフローチャートである。
【図９】本発明の第４の実施の形態におけるアプリケーション管理装置に付加された構成を示す図である。
【図１０】本発明の第４の実施の形態におけるアプリケーション管理装置の処理手順を説明するためのフローチャートである。
【図１１】本発明の第５の実施の形態におけるアプリケーション管理装置の処理手順を説明するためのフローチャートである。
【図１２】本発明の第６の実施の形態におけるアプリケーション管理装置の処理手順を説明するためのフローチャートである。
【図１３】本発明の第７の実施の形態におけるアプリケーション管理装置の処理手順を説明するためのフローチャートである。
【図１４】Ｊａｖａ（Ｒ）ＶＭにおける問題点を説明するための図である。
【符号の説明】
１  アプリケーション実行プロセス、１１，２１０，３１１  バーチャルマシン部、１２，１３，１４  スレッドグループ、４１  通信部、４２  アプリケーション取得部、４３  アプリケーション保存部、４４  アプリケーション登録部、１１１，２１１  中間言語処理部、１１２，２１２  メモリ管理部、１１３，２１３  マルチスレッド管理部、１１４  スレッドグループ管理部、１１５，２１４  イベント処理部、１２１，１３１，１４１，２２０  メインスレッド、１２２〜１２４，１３２，１３３，１４２〜１４４，２３０，２４０，２５０  スレッド、２２１  スレッドグループ制御部、２２２  アプリケーション管理テーブル、２２３  スレッドグループ管理テーブル、３２２  アプリケーション実行監視部。
【図１】
2005031752.tif 000003
【図２】
2005031752.tif 000004
【図３】
2005031752.tif 000005
【図４】
2005031752.tif 000006
【図５】
2005031752.tif 000007
【図６】
2005031752.tif 000008
【図７】
2005031752.tif 000009
【図８】
2005031752.tif 000010
【図９】
2005031752.tif 000011
【図１０】
2005031752.tif 000012
【図１１】
2005031752.tif 000013
【図１２】
2005031752.tif 000014
【図１３】
2005031752.tif 000015
【図１４】
2005031752.tif 000016