(57)【特許請求の範囲】
【請求項１】
第１のプログラムを起動する第１の起動手段と、前記第１のプログラムより高速な第２のプログラムをシステム起動時に起動する第２の起動手段とを有するプログラム起動装置であって、
前記第１のプログラムと、前記第２のプログラムとを含むアプリケーションがインストールされ、
前記第１のプログラムに基づく制御により起動された第２のプログラムについてシステム起動時に起動することが定義情報に記述されていれば、次回以降のシステム起動において、前記第１のプログラムより先に前記第２のプログラムが起動されるように、前記第２のプログラムを起動する前記第２の起動手段を設定する設定手段を更に有するプログラム起動装置。
【請求項２】
請求項１のプログラム起動装置において、前記第１の起動手段はフレームワークであり、前記第１の起動手段は、前記第２の起動手段により起動されるプログラム起動装置。
【請求項３】
請求項２のプログラム起動装置において、前記第１のプログラムより先に前記第２のプログラムが起動されるように、前記第２のプログラム、前記第１の起動手段、及び、前記第１のプログラムを起動するプログラム起動装置。
【請求項４】
請求項１のプログラム起動装置において、前記第２のプログラムが、前記第２の起動手段と、前記第１のプログラムに基づく制御とにより重複して起動されることを防止する防止手段を更に有するプログラム起動装置。
【請求項５】
請求項４のプログラム起動装置において、前記防止手段は、前記第２の起動手段と、前記第１のプログラムに基づく制御とにより重複して起動された２つの第２のプログラムのうち、後から起動された第２のプログラムを停止するプログラム起動装置。
【請求項６】
請求項４のプログラム起動装置において、前記防止手段は、前記第２の起動手段が前記第２のプログラムを起動するように前記第２の起動手段が設定された場合、前記第１の起動手段が前記第１のプログラムを起動しないように前記第１の起動手段を設定する設定手段を更に有するプログラム起動装置。
【請求項７】
請求項１のプログラム起動装置において、前記第２の起動手段は、前記第２のプログラムを起動したことを前記第１の起動手段に通知するプログラム起動装置。
【請求項８】
請求項１のプログラム起動装置において、前記第１の起動手段は、前記第１のプログラムの制御に基づいて前記第２のプログラムの起動を停止したときに、前記第２の起動手段が前記第２のプログラムを起動しないように、前記第２の起動手段を設定するプログラム起動装置。
【請求項９】
請求項１のプログラム起動装置において、前記第１の起動手段は、前記第１のプログラムと、前記第２のプログラムとを含むアプリケーションをインストールするインストール手段を有し、前記第１の起動手段は、インストールされたアプリケーションを管理するフレームワークであるプログラム起動装置。
【請求項１０】
第１のプログラムを起動する第１の起動手段と、前記第１のプログラムより高速な第２のプログラムをシステム起動時に起動する第２の起動手段とを有するプログラム起動装置が実行するプログラム起動方法であって、
前記第１のプログラムと、前記第２のプログラムとを含むアプリケーションがインストールされ、
前記第１のプログラムに基づく制御により起動された第２のプログラムについてシステム起動時に起動することが定義情報に記述されていれば、次回以降のシステム起動において、前記第２の起動手段は、前記第１のプログラムより先に前記第２のプログラムが起動されるように、前記第２のプログラムを起動するプログラム起動方法。
【請求項１１】
請求項１０のプログラム起動方法において、前記第１の起動手段はフレームワークであり、前記第２の起動手段は、前記第１の起動手段を起動するプログラム起動方法。
【請求項１２】
請求項１１のプログラム起動方法において、前記第２の起動手段は、前記第１のプログラムより先に前記第２のプログラムが起動されるように、前記第２のプログラム、前記第１の起動手段、及び、前記第１のプログラムを起動するプログラム起動方法。
【請求項１３】
請求項１０のプログラム起動方法において、前記第２のプログラムが、前記第２の起動手段と、前記第１のプログラムに基づく制御とにより重複して起動されることを防止するプログラム起動方法。
【請求項１４】
請求項１３のプログラム起動方法において、前記第２の起動手段は、前記第２のプログラムを起動するように前記第２の起動手段が設定された場合、前記第１の起動手段が前記第１のプログラムを起動しないように前記第１の起動手段を設定するプログラム起動方法。
【請求項１５】
請求項１０のプログラム起動方法において、前記第２の起動手段は、前記第２のプログラムを起動したことを前記第１の起動手段に通知するプログラム起動方法。
【請求項１６】
請求項１０のプログラム起動方法において、前記第１の起動手段は、前記第１のプログラムの制御に基づいて前記第２のプログラムの起動を停止したときに、前記第２の起動手段が前記第２のプログラムを起動しないように、前記第２の起動手段を設定するプログラム起動方法。
【請求項１７】
請求項１０のプログラム起動方法において、前記第１の起動手段は、前記第１のプログラムと、前記第２のプログラムとを含むアプリケーションをインストールし、前記第１の起動手段は、インストールされたアプリケーションを管理するフレームワークであるプログラム起動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム起動装置及びプログラム起動方法に関する。
【背景技術】
【０００２】
従来、各種ソフトウェアプログラム（以下、単にプログラムという）を起動するとき、システムの最適な利用形態を目指して起動制御を工夫することがよく行われている。
例えば、アプリケーションプログラム本体を改変することなく、好適な順序で複数のプログラムモジュールを実行することを目的とした技術がある（特開２００６−８５５２９号公報参照）。
【０００３】
又はハードウェア資源のチェック処理の結果に応じてチェック処理に関するプログラムを起動する技術もある（特開２００４−１９２６３０号公報参照）。
また、シンボルを入力することによって記憶されたアプリケーション群を一括して起動する技術もある（特表２００３−５２３５６８号公報参照）。
【０００４】
また、複数のソフトウェア・モジュールを管理する手法として、例えばＯＳＧｉ（Ｏｐｅｎ  Ｓｅｒｖｉｃｅ  Ｇａｔｅｗａｙ  Ｉｎｉｔｉａｔｉｖｅ）が定めた規格が存在する（（「ＯＳＧｉ  Ｓｅｒｖｉｃｅ  Ｐｌａｔｆｏｒｍ  Ｒｅｌｅａｓｅ４」、Ｏｐｅｎ  Ｓｅｒｖｉｃｅ  Ｇａｔｅｗａｙ  Ｉｎｉｔｉａｔｉｖｅ、２００６年９月）参照）。この規格では、ソフトウェア・モジュールをインストール、開始、停止、アンインストールするという、所謂ライフサイクル管理の仕様を定めている。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述したような従来技術では、異なる種類のプログラムの起動を一つのプログラム起動方法でまかなっているわけではない。
例えば、ＯＳＧｉ規格では、Ｊａｖａ（登録商標）言語で記述された、バンドルと呼ばれるプログラム単位のソフトウェア管理・制御を行う。しかし、この規格ではマイクロプロセッサ固有のネイティブコードを含んだネイティブプログラムは制御することはできない問題があった。
【０００６】
ネイティブプログラムを単に制御するだけなら、Ｊａｖａプログラムの他にネイティブプログラムの制御までもサポートしたプログラム制御手段（以下、ＯＳＧｉフレームワークという）を作成すればよい。
しかし、この方法では、ネイティブプログラムの起動がＯＳＧｉフレームワークより遅くなる。
【０００７】
通常、組み込み機器においては、電源投入後の高速な起動が望まれる。一般にネイティブプログラムの方がＪａｖａプログラムより高速であるので、特に高速な起動を要するものはネイティブプログラムとして作成される。一方、比較的後で起動しても構わないものはＪａｖａプログラムとして作成される。ＯＳＧｉフレームワーク自体はＪａｖａプログラムである。
【０００８】
この場合、機器の起動制御としては、ネイティブプログラム、ＯＳＧｉフレームワーク、（ＯＳＧｉフレームワークが起動する）Ｊａｖａプログラム若しくはネイティブプログラムという順序になる。
従って、ＯＳＧｉフレームワークが起動するネイティブプログラムの起動がどうしても遅れてしまうという問題がある。
【０００９】
本発明はこのような問題点に鑑みなされたもので、異なる種類のプログラムの起動を統一すると共に、プログラムを早く起動できるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
そこで、本発明のプログラム起動装置は、第１のプログラムを起動する第１の起動手段と、前記第１のプログラムより高速な第２のプログラムをシステム起動時に起動する第２の起動手段とを有するプログラム起動装置であって、前記第１のプログラムと、前記第２のプログラムとを含むアプリケーションがインストールされ、前記第１のプログラムに基づく制御により起動された第２のプログラムについてシステム起動時に起動することが定義情報に記述されていれば、次回以降のシステム起動において、前記第１のプログラムより先に前記第２のプログラムが起動されるように、前記第２のプログラムを起動する前記第２の起動手段を設定する設定手段を更に有する。
また、本発明は、プログラム起動方法としてもよい。
【発明の効果】
【００１１】
本発明によれば、異なる種類のプログラムの起動を統一すると共に、プログラムを早く起動できるようにすることができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施形態について図面に基づいて説明する。
【００１３】
図１は、情報処理装置（コンピュータ）のハードウェア構成の一例を示す図である。
図１において、情報処理装置は、ＣＰＵ２０１、ＲＯＭ２０２、ＲＡＭ２０３、タイマ２０４、ディスプレイ２０５、操作部２０６、ＦｌａｓｈＲＯＭ２０７、ネットワークＩ／Ｆ２０８、ＨＤ２０９から構成される。
【００１４】
ＣＰＵ（中央処理装置）２０１は、情報処理装置全体を制御する。ＲＯＭ２０２は、各種プログラム等を格納する。ＲＡＭ２０３は、実行中のプログラムを記憶すると共に実行中のプログラムに用いられるデータ等を一時的に記憶する。
【００１５】
タイマ２０４は、各種時間を計測する。ディスプレイ２０５は、ユーザインタフェースを表示する。操作部２０６は、例えばキーボード、マウス、又はタッチディスプレイ等で構成され、情報を入力する。ＦｌａｓｈＲＯＭ２０７は、各種設定データファイル等を記憶する。ネットワークＩ／Ｆ２０８は、情報処理装置を外部装置と接続する。ＨＤ２０９は、各種プログラム及び設定データファイルを記憶する。
【００１６】
ＣＰＵ２０１は、マイクロプロセッサで構成される。ＣＰＵ２０１が、ＲＯＭ２０２、又はＨＤ２０９に記憶されているプログラムをＲＡＭ２０３上に読み出して実行することによって、後述する機能、又はフローチャートに係る処理が実現される。
【００１７】
図２は、情報処理装置の機能構成の一例を示す図である。なお、図２のシステム１０１は、図１の情報処理装置等に対応する。図２に示される機能は、ＣＰＵ２０１がＲＡＭ２０３などから読み出したプログラムを実行することにより実現される。
第２の起動手段の一例であるシステム起動部１０２は、システム１０１の起動時に一乃至複数の、ネイティブプログラムを起動する。第１の起動手段の一例であるアプリケーション管理フレームワーク（以下、単にフレームワークという）１０３は、アプリケーション１１０を管理する。より具体的に説明すると、フレームワーク１０３は、一乃至複数のアプリケーション１１０をシステム１０１内にインストールし、更に開始、終了及びアンインストールする等、アプリケーション１１０のライフサイクル全般に渡る管理を行う。
【００１８】
Ｊａｖａ仮想マシン１０４は、Ｊａｖａ言語で記述されたソースコードをコンパイルしたところの中間コード（Ｊａｖａプログラム）を実行する。フレームワーク１０３自体はＪａｖａプログラムであり、Ｊａｖａ仮想マシン１０４は、フレームワーク１０３を動作させる役目を持つ。
【００１９】
なお、本実施形態ではＪａｖａプログラムに言及しているが、ネイティブプログラムと異なるものの一例としてＪａｖａプログラム、或いはＪａｖａ仮想マシン１０４を挙げているだけである。つまり、本実施形態はＪａｖａ言語・プログラムに限定されるものではない。他の言語・プログラムであっても本実施形態は適用することができる。
【００２０】
アプリケーション１１０は、フレームワーク１０３の管理単位のアプリケーションであり、少なくとも一つの第１のプログラムの一例であるＪａｖａプログラム１１２を備えている。Ｊａｖａプログラム１１２は、フレームワーク１０３からの開始要求、停止要求を受け付けるインタフェース（Ｊａｖａメソッド）（図２の１６０）を備える。より具体的に説明すると、これらの要求は、フレームワーク１０３からＪａｖａプログラム１１２中のＪａｖａメソッドを呼び出す形で実行される。
【００２１】
アプリケーション１１０は、マイクロプロセッサ固有のネイティブコードを含んだ、第２のプログラムの一例であるネイティブプログラム１１１も備えることができる。但し、後述するように、ネイティブプログラム１１１を備えることは必須ではない。即ち、アプリケーション１１０は、Ｊａｖａプログラム１１２を含んでいれば、ネイティブプログラム１１１は含んでいなくてもよい。
アプリケーション１１０がＪａｖａプログラム１１２及びネイティブプログラム１１１を備える場合、その機能分担は任意である。ネイティブプログラム１１１がアプリケーション１１０の機能の主な部分を実装し、Ｊａｖａプログラム１１２はフレームワーク１０３からのアプリケーション管理要求を受け付けるために、そのインタフェースだけを備えるという形態をとることもできる。一般にネイティブプログラム１１１の実行はＪａｖａプログラム１１２の実行よりも速いため、そのような実装形態をとることには意味がある。
【００２２】
ネイティブプログラム１１１を含まず、Ｊａｖａプログラム１１２のみを含むアプリケーション１１０の一形態であるＪａｖａアプリケーションの実行手順について、図３のフローチャートを用いて説明する。
【００２３】
図３は、Ｊａｖａアプリケーションの実行手順の一例を示すフローチャートである。
最初に、Ｊａｖａアプリケーションをシステム１０１にインストールするため、ユーザは操作部２０６を用いて所定の操作を行う。ここで、インストール対象のＪａｖａアプリケーションがどこに存在するかは問わない。ＨＤ２０９に存在してもよいし、システム１０１とネットワーク接続された他の機器に存在してもよい。操作部２０６を用いた所定の操作によって、ユーザは、どこからＪａｖａアプリケーションをインストールするのか、その位置を指定できるものとする。
【００２４】
ユーザが所定の操作を行うと、フレームワーク１０３が、Ｊａｖａアプリケーションをインストールする（ステップＳ３０１）。インストールされたＪａｖａアプリケーションは、ＨＤ２０９上のインストール済みアプリケーションが配置される位置に記憶される。
【００２５】
フレームワーク１０３は、ＲＡＭ２０３上のアプリケーション管理テーブルにインストールしたＪａｖａアプリケーションについての情報を記憶する。ここで、アプリケーション管理テーブルの構成を図４に示す。図４は、アプリケーション管理テーブルの構成の一例を示す図である。
【００２６】
図４に示されるように、アプリケーション管理テーブル６０１は、インストールしたアプリケーションのアプリケーションＩＤ６０２と、ネイティブプログラム有無フラグ６０３と、を構成要素として持つ。また、アプリケーション管理テーブル６０１は、更に、ネイティブプログラムパス６０４と、Ｊａｖａプログラム開始フラグ６０５と、ネイティブプログラム起動済みフラグ６０６と、を構成要素として持つ。
【００２７】
アプリケーションＩＤ６０２は、システム１０１にインストールされた複数のアプリケーション１１０を相互に識別するためのＩＤである。ネイティブプログラム有無フラグ６０３は、アプリケーション１１０がネイティブプログラム１１１を備えているかどうかを示すフラグである。ネイティブプログラムパス６０４は、ネイティブプログラム１１１を備えている場合のネイティブプログラムが記憶（又は格納）されている場所を指し示すパスである。Ｊａｖａプログラム開始フラグ６０５は、ネイティブプログラム１１１が既に起動されている場合でもＪａｖａプログラム１１２を起動すべきかどうかを示すフラグである。ネイティブプログラム起動済みフラグ６０６は、ネイティブプログラム１１１を既に起動したかどうかを示すフラグである。
【００２８】
アプリケーション１１０中には、これらの要素のうち、幾つかの要素（情報）が含まれる。例えば、アプリケーション１１０が、Ｊａｖａ実行環境における配置単位としてしばしば用いられるＪａｖａ  Ａｒｃｈｉｖｅ形式ファイル（Ｊａｒファイル）で提供されているものとする。この場合、実行可能なプログラム本体の他に、各種情報を格納した、定義情報の一例であるマニフェストファイルをＪａｒファイルに含めることができる。このような実施形態においては、マニフェストファイル中に、アプリケーションＩＤ、ネイティブプログラムの有無、ネイティブプログラムファイル名、Ｊａｖａプログラム開始フラグを設定することができる。なお、本実施形態では、ネイティブプログラムは、ダイナミックリンクライブラリ（ＤＬＬ）ファイル形式で実現されていることを想定している。しかし、本実施形態は、これに限定されるものではない。
【００２９】
インストール時、マニフェストファイル中のアプリケーションＩＤ、ネイティブプログラム有無、Ｊａｖａプログラム開始フラグに関しては、例えばフレームワーク１０３が、そのままアプリケーション管理テーブル６０１に記憶する。ネイティブプログラムパス６０４に関しては、フレームワーク１０３が、マニフェストファイル中のネイティブプログラムファイル名と、ネイティブプログラムが実際に配置されたＨＤ２０９上のディレクトリと、から格納すべきパスを決定する。
【００３０】
パスの決定は以下のように行われる。即ち、マニフェストファイルには、実行すべきネイティブプログラムファイル名として、"ＡＡＡ．ｄｌｌ"が記述されているものとする。一方、アプリケーション１１０のインストール時、このアプリケーション１１０のネイティブプログラムファイル群はＨＤ２０９のディレクトリ"／ａｐｐｓ／ａｐｐ＿１／ｎａｔｉｖｅｓ"に格納されるものとする。すると、この場合、フレームワーク１０３は、ネイティブプログラムパスを"／ａｐｐｓ／ａｐｐ＿１／ｎａｔｉｖｅｓ／ＡＡＡ．ｄｌｌ"と決定し、ネイティブプログラムパス６０４に格納する。このようにすれば、ネイティブプログラムファイルが複数存在する場合でも、起動すべきネイティブプログラムファイルを一意に決定することができる。
【００３１】
図３のステップＳ３０１の説明に戻る。ここでは、Ｊａｖａアプリケーションをインストールするので、アプリケーションＩＤ６０２と、ネイティブプログラム「無」の情報６０３とだけがアプリケーション管理テーブル６０１に記憶される。その他のネイティブプログラムに関する情報はアプリケーション管理テーブル６０１には記憶されない。
【００３２】
インストール後、ユーザが所定のアプリケーション開始操作を行うと、フレームワーク１０３は、Ｊａｖａアプリケーション中の所定のメソッドを呼び出すことによって、Ｊａｖａアプリケーションを開始する（ステップＳ３０２）。前記所定のメソッドとは、開始インタフェースを定義するメソッドである。
【００３３】
開始後、ユーザが所定のアプリケーション停止操作を行うと、フレームワーク１０３は、Ｊａｖａアプリケーション中の所定のメソッドを呼び出すことによって、Ｊａｖａアプリケーションを停止する（ステップＳ３０３）。前記所定のメソッドとは、停止インタフェースを定義するメソッドである。
【００３４】
停止後、ユーザが所定のアプリケーションアンインストール操作を行うと、フレームワーク１０３は、ＨＤ２０９上のインストールアプリケーション格納領域から該当するＪａｖａアプリケーションをアンインストールする（ステップＳ３０４）。このとき、フレームワーク１０３は、アプリケーション管理テーブル６０１から該当するＪａｖａアプリケーションに関する情報も削除する。
【００３５】
なお、図３のシーケンスはＪａｖａアプリケーションのライフサイクルを説明したものであり、必ずこの順序で実行されなければならないというわけではない。開始したまま、ずっとＪａｖａアプリケーションを利用し続けることや、インストール後、開始せずにアンインストールしてしまう場合もあり得る。
【００３６】
次に、ネイティブアプリケーションの実行手順について、図５のフローチャートを用いて説明する。図５は、ネイティブアプリケーションの実行手順の一例を示すフローチャートである。ここで、ネイティブアプリケーションとは、ネイティブプログラム１１１及びＪａｖａプログラム１１２を含むアプリケーション１１０のことをいう。
【００３７】
ネイティブアプリケーションをシステム１０１にインストールするため、ユーザは、操作部２０６を用いて所定の操作を行う。すると、フレームワーク１０３は、システム１０１の外部にあるネイティブアプリケーションを、システム１０１の内部にダウンロードする（ステップＳ４０１、図２の１５０）。ダウンロードされたネイティブアプリケーションは、ＨＤ２０９の所定の場所（記憶領域）に保存される。
【００３８】
インストール時、上述した図３の説明時と同様、フレームワーク１０３は、ネイティブアプリケーションのマニフェストファイルに記載された情報をアプリケーション管理テーブル６０１に格納する。より具体的に説明すると、フレームワーク１０３は、マニフェストファイルに記述されたアプリケーションＩＤ、ネイティブプログラム有無フラグ、Ｊａｖａプログラム開始フラグの各情報は、そのままアプリケーション管理テーブル６０１に記憶する。当然、ネイティブプログラム有無フラグ６０３は、「有」である。ネイティブプログラムパス６０４は、マニフェストファイル中のネイティブプログラムファイル名と、ネイティブプログラムが実際にインストールされたＨＤ２０９上のディレクトリと、から決定されたパスが格納される。
【００３９】
次に、ネイティブアプリケーションを開始するため、ユーザは操作部２０６を用いて所定の操作を行う。すると、フレームワーク１０３は、インストールしたネイティブアプリケーションを開始する（ステップＳ４０２、図２の１６０）。このとき、ネイティブアプリケーションの開始は、フレームワーク１０３が、そのネイティブアプリケーション中のＪａｖａプログラム１１２の所定のメソッドを呼び出すことで行われる。前記所定のメソッドは、開始インタフェースを定義したものであり、これを開始メソッドと呼ぶ。
【００４０】
開始メソッドが呼び出されたとき、その開始メソッドは、そのネイティブアプリケーションに同梱されたネイティブプログラム１１１を開始する（ステップＳ４０３、図２の１７０）。
【００４１】
開始方法としては、Ｊａｖａ言語が持つネイティブコードへの呼び出し機能を用いる。（なお、Ｊａｖａ言語に限らず、プログラム言語はネイティブコードへの呼び出し機能を持っていることが多い。）ネイティブコードの呼び出しはＪａｖａ仮想マシン１０４が行う。このとき、Ｊａｖａ仮想マシン１０４がネイティブコードを探すのに、ネイティブプログラムパス６０４の情報が用いられる。Ｊａｖａ仮想マシン１０４は、前記情報が示す記憶場所等に記憶されたＤＬＬファイルをＲＡＭ２０３にロードし、呼び出そうとしているネイティブコードのシンボルを探索する。そして、Ｊａｖａ仮想マシン１０４は、見つけたネイティブコードを呼び出す。なお、このような方法を用いてネイティブプログラム１１１を開始（起動）することを、Ｊａｖａプログラム１１２からネイティブプログラム１１１を開始（起動）するという。言い換えると、ネイティブプログラム１１１は、Ｊａｖａプログラム１１２から起動可能であると言うことができる。
【００４２】
以上のようにして、ネイティブプログラム１１１は開始される。この時点で、システム１０１は、ネイティブプログラム１１１及びＪａｖａプログラム１１２が提供する機能を利用することができる。
【００４３】
次に、フレームワーク１０３は、ネイティブプログラム１１１をシステム１０１の起動時に起動すべきかどうかを判定する（ステップＳ４０４）。起動すべきかどうかの情報は、マニフェストファイル中に記述されている。典型的な例としては、高速起動すべきもの、フレームワーク１０３の起動を待たずに先に起動したいものは、起動すべきものとしてマニフェストファイルに書かれている。高速起動の必要がない、若しくは他に起動されるプログラムを阻害したくない場合は、起動すべきものとしてマニフェストファイルに書かれない。フレームワーク１０３は、マニフェストファイルの記述を確認して、起動すべきかどうかを判定する。
【００４４】
起動すべきであると判定した場合、フレームワーク１０３は、ネイティブプログラム１１１をシステム起動部１０２に登録する（ステップＳ４０５、図２の１８０）。より具体的に説明すると、ネイティブプログラムパス６０４の情報が、システム起動部１０２が管理する記憶領域に記憶される。
【００４５】
起動すべきであると判定しなかった場合、フレームワーク１０３は、ステップＳ４０５の処理をスキップする。
次に、ネイティブアプリケーションを停止するため、ユーザは操作部２０６を用いて所定の操作を行う。すると、フレームワーク１０３は、インストールしたネイティブアプリケーションを停止する（ステップＳ４０６）。ネイティブアプリケーションの停止は、フレームワーク１０３がネイティブアプリケーション中のＪａｖａプログラム１１２の所定のメソッドを呼び出すことで行われる。前記所定のメソッドは停止インタフェースを定義したものであり、これを停止メソッドと呼ぶ。
【００４６】
停止メソッドが呼び出されたとき、この停止メソッドは、そのネイティブアプリケーションに同梱されたネイティブプログラム１１１を停止する（ステップＳ４０７）。停止方法としては、上述した開始方法と同様、Ｊａｖａ言語が持つネイティブコードへの呼び出し機能を用いる。
【００４７】
次に、フレームワーク１０３は、ネイティブプログラム１１１がシステム起動部１０２に登録されているかどうかを判定する（ステップＳ４０８）。即ち、ステップＳ４０５でネイティブプログラム１１１がシステム起動部１０２に登録されたかどうかを判定する。
【００４８】
登録されていると判定した場合、フレームワーク１０３は、登録したネイティブプログラム１１１をシステム起動部１０２から登録解除する（ステップＳ４０９）。より具体的に説明すると、フレームワーク１０３は、システム起動部１０２が管理する記憶領域から、ネイティブプログラムパス情報を消去する。登録されていないと判定した場合、フレームワーク１０３は、ステップＳ４０９の処理をスキップする。
【００４９】
本実施形態のシステム１０１では、ユーザの停止操作が次回のシステム１０１起動時も有効、つまり次回のシステム１０１起動時にはシステム起動部１０２がネイティブプログラム１１１を起動しないようにすることが前提となっている。そのような仕様を採用しないならば、ステップＳ４０８、Ｓ４０９の処理は不要である。アンインストール時に初めて、登録解除を行うという仕様ならば、ステップＳ４０９の処理は、次に説明するステップＳ４１０の処理の後に実行する。
【００５０】
次に、ネイティブアプリケーションをアンインストールするため、ユーザは操作部２０６を用いて所定の操作を行う。すると、フレームワーク１０３は、ネイティブアプリケーションをアンインストールする（ステップＳ４１０）。より具体的に説明すると、フレームワーク１０３は、ＨＤ２０９上のインストールアプリケーション格納領域から該当するネイティブアプリケーションをアンインストールする。このとき、フレームワーク１０３は、アプリケーション管理テーブル６０１から該当するネイティブアプリケーションに関する情報も削除する。アンインストールするための操作が行われない場合、ステップＳ４１０の処理は行われない。ネイティブアプリケーションの停止後に、停止されたネイティブアプリケーションを必ずアンインストールすることを意味するわけではない。
【００５１】
以上の手順では、フレームワーク１０３がネイティブプログラム１１１をシステム起動部１０２に登録する（ステップＳ４０５）のは、フレームワーク１０３がＪａｖａプログラム１１２を開始したとき（ステップＳ４０２）に行った。
【００５２】
しかし、他の手順でもよい。例えば、フレームワーク１０３がネイティブアプリケーションをインストールした（ステップＳ４０１）時点で、マニフェストファイルにアクセスが可能になるので、この時点で登録するようにしてもよい。
【００５３】
又は、別のタイミング、例えばシステム１０１の定常動作中に、ユーザが操作部２０６を操作することによって、フレームワーク１０３がネイティブプログラム１１１をシステム起動部１０２に登録するようにしてもよい。
【００５４】
次に、システム１０１の起動手順について、図６のフローチャートを用いて説明する。図６は、システム１０１の起動手順の一例を示すフローチャートである。
システム起動部１０２は、デフォルトで起動すべきネイティブプログラムを起動する（ステップＳ５０１）。これらは、ユーザがインストールしなくても最初からシステム１０１に組み込まれているプログラムである。
【００５５】
次に、システム起動部１０２は、システム１０１の起動時に起動すべきネイティブプログラム１１１が登録されているかどうかを判定する（ステップＳ５０２）。ここでは、図５のステップＳ４０５でネイティブプログラム１１１がシステム起動部１０２に登録された状態で、システム１０１が一旦シャットダウンされ、更に起動されたとする。なお、ステップＳ４０９でネイティブプログラム１１１はシステム起動部１０２から登録解除されていないものとする。
登録されていると判定した場合、システム起動部１０２は、登録されているネイティブプログラム１１１を開始する（ステップＳ５０３、図２の１９０）。より具体的に説明すると、システム起動部１０２は、上述した記憶領域に記憶されたネイティブプログラムパス６０４の情報を取得し、この情報が示すＤＬＬから開始インタフェースのシンボルを得て、このアドレスに対する呼び出しを行う。
【００５６】
なお、この開始インタフェース（１９０）は、ステップＳ４０３で説明した開始インタフェース（１７０）と直接の関係はない。それぞれの開始動作が異なってもよく、従って開始インタフェースそのものが異なっていてもよい。
【００５７】
次に、システム起動部１０２は、開始したネイティブプログラム１１１に対応する起動済みフラグをセットする（ステップＳ５０４）。より具体的に説明すると、システム起動部１０２は、ネイティブプログラム１１１に対応するアプリケーション管理テーブル６０１のネイティブプログラム起動済みフラグ６０６をセットする（通知）。他の方法としては、アプリケーション管理テーブル６０１をフレームワーク１０３が管理している場合、システム起動部１０２がフレームワーク１０３にフラグセットを要求するようにしてもよい。
【００５８】
ステップＳ５０２からステップＳ５０４までの処理では、システム起動部１０２は、複数の登録済みネイティブプログラムに関して、開始及びフラグのセットを行うことができる。但し、説明の簡略化のため、システム起動部１０２に複数のネイティブプログラムが登録されている場合に、それらのネイティブプログラムを開始し、フラグをセットするためのループの記述は省略している。
【００５９】
ステップＳ５０２で登録されていないと判定した場合、システム起動部１０２は、ステップＳ５０５に処理を進める。
ネイティブプログラムの起動が終了すると、システム１０１（又はシステム起動部１０２）は、Ｊａｖａ仮想マシン１０４を通じてフレームワーク１０３を起動する（ステップＳ５０５）。
【００６０】
次に、フレームワーク１０３は、起動すべきアプリケーション１１０は残っているかどうかを判定する（ステップＳ５０６）。
【００６１】
残っている場合、フレームワーク１０３は、残っている中から一つ選択されたアプリケーション１１０中にネイティブプログラム１１１が有るかどうかを判定する（ステップＳ５０７）。より具体的に説明すると、フレームワーク１０３は、そのアプリケーション１１０に対応するネイティブプログラム有無フラグ６０３を確認して、アプリケーション１１０中にネイティブプログラム１１１が有るかどうかを判定する。
【００６２】
ネイティブプログラム１１１が無い場合、フレームワーク１０３は、アプリケーション１１０を開始する（ステップＳ５１２）。その後、フレームワーク１０３は、ステップＳ５０６に戻る。ステップＳ５１２では、ネイティブプログラム１１１を含まず、Ｊａｖａプログラム１１２を含むアプケーション１１０が開始される。
【００６３】
ネイティブプログラム１１１が有る場合、フレームワーク１０３は、アプリケーション１１０に対応するＪａｖａプログラム開始フラグ６０５を確認する（参照する）。そして、フレームワーク１０３は、アプリケーション１１０中のＪａｖａプログラム１１２を無条件に開始すべきかどうかを判定する（ステップＳ５０８）。Ｊａｖａプログラム開始フラグ６０５が「開始」にセットされていれば、フレームワーク１０３は、無条件に開始すべきものと解釈する。
【００６４】
無条件には開始すべきでないと判定した場合、フレームワーク１０３は、アプリケーション１１０に対応するネイティブプログラム起動済みフラグ６０６を確認して、対応するネイティブプログラム１１１が既に起動済みかどうかを判定する（ステップＳ５０９）。
【００６５】
起動済みの場合、フレームワーク１０３は、ステップＳ５０６に戻る。
起動済みでない場合、フレームワーク１０３は、アプリケーション１１０を起動する（ステップＳ５１０）。実際には、フレームワーク１０３は、アプリケーション１１０中のＪａｖａプログラム１１２の所定のメソッドを呼び出す。
【００６６】
次に、Ｊａｖａプログラム１１２は、ネイティブプログラム１１１を開始する（ステップＳ５１１）。その後、Ｊａｖａプログラム１１２は、処理をステップＳ５０６に戻す。
上述したステップＳ５０７以降の処理によって該当するアプリケーション１１０についての処理が終了する。フレームワーク１０３はステップＳ５０６で次のアプリケーション１１０の処理に移る。
【００６７】
フレームワーク１０３は、起動すべき全てのアプリケーション１１０の起動を終了すると、ステップＳ５０６でＮｏに進み、システムの起動処理を終了する。
【００６８】
なお、ステップＳ５０８において、フレームワーク１０３は、無条件に開始すべきかどうかを判定しているが、「無条件に」という意味は、「既にシステム起動部１０２がネイティブプログラム１１１を起動済みであっても」という意味である。ネイティブプログラム１１１とＪａｖａプログラム１１２との果たす役割・機能が異なるのであれば、ネイティブプログラム１１１が起動済みであってもＪａｖａプログラム１１２を起動したい場合がある。この場合のシーケンスを以下に説明する。
【００６９】
ステップＳ５０８で無条件に開始すべきであると判定した場合は、フレームワーク１０３はアプリケーション１１０を起動する（ステップＳ５１３）。実際には、フレームワーク１０３は、アプリケーション１１０中のＪａｖａプログラム１１２の所定のメソッドを呼び出す。
【００７０】
次に、Ｊａｖａプログラム１１２は、対応するネイティブプログラム１１１が既に起動済みかどうかを判定する（ステップＳ５１４）。判定は、ネイティブプログラム起動済みフラグ６０６に基づいて行ってもよい。またこの判定は、ネイティブプログラム１１１と、Ｊａｖａプログラム１１２との間の所定のインタフェースを用いて、起動済みかどうかをネイティブプログラム１１１に確認することにより、行ってもよい。
【００７１】
起動済みでなければ、Ｊａｖａプログラム１１２は、ネイティブプログラム１１１を開始する（ステップＳ５１５）。その後、Ｊａｖａプログラム１１２は、処理をステップＳ５０６に戻す。
【００７２】
起動済みであれば、Ｊａｖａプログラム１１２は、ステップＳ５１５の処理をスキップする。
或いは、ステップＳ５１４でＪａｖａプログラム１１２が判定せずに、ネイティブプログラム１１１を開始してしまい、重複起動チェックをネイティブプログラム１１１に任せてしまうという方法もある。この方法の場合、後から起動されたネイティブプログラム１１１が、重複起動を検知すると、後から起動されたネイティブプログラム１１１が自らを停止するように動作する。
【００７３】
なお、システム起動時に重複起動を判定せずに、重複起動を防止することもできる。例えば、フレームワーク１０３がネイティブプログラム１１１をシステム起動部１０２に登録したときに、システム起動時に起動すべきプログラムとしてＪａｖａプログラム１１２を登録しないようにすればよい。
【００７４】
何れにしても重複起動を防止する手段があればよい。もっとも、動作仕様としてネイティブプログラム１１１の重複起動を行う必要がある場合は、重複起動防止処理は必要ない。
以上、Ｊａｖａプログラム１１２とネイティブプログラム１１１の例について説明してきたが、本実施形態はこれに限定されるものではない。
【００７５】
他の実施形態について、図７を用いて説明する。
図７において、統合アプリケーション７１０は、ドライバ７１１、アプリケーション７１２、マニフェストファイル７１３、を含む。
ドライバ７１１は、典型的には、各種Ｉ／Ｏ等の周辺機器を駆動するプログラムであるが、これに限定されるものではない。ドライバ７１１の機能はアプリケーション７１２の機能と関連があるので、ここでは統合アプリケーション７１０の中に同梱されている。
本実施形態では、統合アプリケーション７１０をシステム１０１にインストールし、ドライバ７１１及びアプリケーション７１２を起動する。
【００７６】
アプリケーション７１２の実行手順について、図８のフローチャートを用いて説明する。
最初に、統合アプリケーション７１０をシステム１０１にインストールするため、ユーザは操作部２０６において所定の操作を行う。すると、フレームワーク１０３は、システム１０１の外部にある統合アプリケーション７１０を、システム１０１の内部にダウンロードする（ステップＳ８０１。図７の７５０）。ダウンロードされた統合アプリケーション７１０は、ＨＤ２０９の所定の場所に保存される。
インストール時、フレームワーク１０３はマニフェストファイル７１３に記載された情報をアプリケーション管理テーブル６０１と同様のテーブル（図示せず）に格納する。より具体的に説明すると、マニフェストファイルに記述されたアプリケーションＩＤ、アプリケーションパス、ドライバ有無フラグ、ドライバパス、ドライバ名、アプリケーション開始フラグが記憶される。
【００７７】
次に、アプリケーション７１２を開始するため、ユーザは操作部２０６において所定の操作を行う。すると、フレームワーク１０３は、上記インストールしたアプリケーション７１２を開始する（ステップＳ８０２。図７の７６０）。
アプリケーション７１２が開始されたとき、アプリケーション７１２はドライバ７１１を開始（起動）する（ステップＳ８０３。図７の７７０）。
ここでは、アプリケーション７１２はドライバ７１１を開始したが、アプリケーション７１２がシステム起動部１０２にドライバ７１１の開始を依頼してもよい。また、フレームワーク１０３がアプリケーション７１２に対応付けられたドライバ７１１を開始してもよい。なお、この後者の形態では、統合アプリケーション７１０の中にアプリケーション７１２と同梱されたドライバ７１１を、アプリケーション７１２に対応付けられていると見なしている。
以上のようにして、ドライバ７１１は開始される。この時点で、ドライバ７１１及びアプリケーション７１２が提供する機能は利用可能である。
【００７８】
次に、フレームワーク１０３は、ドライバ７１１をシステム１０１の起動時に起動すべきかどうかを判定する（ステップＳ８０４）。起動すべきかどうかの情報は、マニフェストファイル７１３中に記述されている。
起動すべきであると判定した場合は、フレームワーク１０３はドライバ７１１をシステム起動部１０２に登録する（ステップＳ８０５。図７の７８０）。より具体的に説明すると、フレームワーク１０３は、ドライバ７１１をインストールするようなＯＳのシステムコールを呼び出す。
ここでは、システム起動部１０２にドライバ７１１を登録しているが、本実施形態の場合、ドライバ７１１を起動する形態であり、典型的な例はオペレーティングシステム（ＯＳ）にドライバ７１１を登録する。本実施形態において、ＯＳの種類を問わない。
起動すべきであると判定されなかった場合は、フレームワーク１０３はステップＳ８０５の処理をスキップする。
【００７９】
次に、アプリケーション７１２を停止するため、ユーザは操作部２０６において所定の操作を行う。するとフレームワーク１０３はアプリケーション７１２を停止する（ステップＳ８０６）。
アプリケーション７１２が停止されたとき、アプリケーション７１２はドライバ７１１を停止する（ステップＳ８０７）。
次に、フレームワーク１０３は、ドライバ７１１がシステム起動部１０２に登録されているかどうかを判定する（ステップＳ８０８）。即ち、フレームワーク１０３は、ステップＳ８０５でドライバ７１１がシステム起動部１０２に登録されたかどうかを判定する。
【００８０】
登録されていると判定した場合は、フレームワーク１０３は、登録したドライバ７１１をシステム起動部１０２から登録解除する（ステップＳ８０９）。より具体的に説明すると、フレームワーク１０３は、ドライバ７１１をアンインストールするようなＯＳのシステムコールを呼び出す。登録されていないと判断した場合は、フレームワーク１０３は、ステップＳ８０９の処理をスキップする。
ここでは、ユーザの停止操作が次回システム１０１起動時も有効、つまり次回システム１０１起動時には起動しないようにすることが前提となっている。そのような仕様を採用しないならば、ステップＳ８０８、Ｓ８０９の処理は不要である。また、アンインストール時に初めて、登録解除を行うという仕様ならば、ステップＳ８０９は次に説明するステップＳ８１０の後に実行される。
【００８１】
次に、統合アプリケーション７１０をアンインストールするため、ユーザは操作部２０６において所定の操作を行う。すると、フレームワーク１０３は、統合アプリケーション７１０をアンインストールする（ステップＳ８１０）。より具体的に説明すると、フレームワーク１０３は、ＨＤ２０９上のインストールアプリケーション格納領域から該当する統合アプリケーション７１０をアンインストールする。このとき、フレームワーク１０３は、アプリケーション管理テーブル６０１から該当するネイティブアプリケーションに関する情報も削除する。アンインストールするための操作が行われない場合、ステップＳ８１０の処理は行われない。アプリケーション７１２の停止後に、統合アプリケーション７１０を必ずアンインストールすることを意味するわけではない。
【００８２】
以上の手順では、フレームワーク１０３がドライバ７１１をシステム起動部１０２に登録する（ステップＳ８０５）のは、フレームワーク１０３がアプリケーション７１２を開始した（ステップＳ８０２）後に行った。
しかし、他の手順でもよい。例えば、フレームワーク１０３が統合アプリケーション７１０をインストールした（ステップＳ８０１）時点で、マニフェストファイル７１３にアクセスが可能になるので、ここで登録するようにしてもよい。
又は、別のタイミング、例えばシステム１０１の定常動作中に、ユーザが操作部２０６を操作することによって、フレームワーク１０３がドライバ７１１をシステム起動部１０２に登録するようにしてもよい。
【００８３】
次に、システム１０１の起動手順について、図９のフローチャートを用いて説明する。
最初に、システム起動部１０２が、デフォルトで起動すべきドライバを起動する（ステップＳ９０１）。これらは、ユーザがインストールしなくても最初からシステム１０１に組み込まれているプログラムである。
【００８４】
次に、システム起動部１０２は、システム１０１の起動時に起動すべきドライバ７１１が登録されているかどうかを判定する（ステップＳ９０２）。
登録されていると判定した場合は、システム起動部１０２が、登録されているドライバ７１１を開始する（ステップＳ９０３。図７の７９０）。起動方法は通常のドライバ起動方法と同じである。
次に、システム起動部１０２が、開始したドライバ７１１に対応する起動済みフラグをセットする（ステップＳ９０４）。より具体的に説明すると、システム起動部１０２は、ドライバ７１１に対応するアプリケーション管理テーブル６０１と同様のテーブル（図示せず）のドライバ起動済みフラグをセットする。他の方法としては、上記テーブルをフレームワーク１０３が管理しているなら、システム起動部１０２がフレームワーク１０３にフラグセットを要求するようにしてもよい。
【００８５】
ステップＳ９０２からステップＳ９０４にかけてのフローでは、複数の登録済みドライバ７１１に関して開始及びフラグセットが可能である。ループ記述は省略している。
ステップＳ９０２で登録されていないと判定した場合は、システム起動部１０２は、ステップＳ９０５に処理を進める。
ドライバ７１１の起動が終了すると、システム１０１は、フレームワーク１０３を起動する（ステップＳ９０５）。
【００８６】
次に、フレームワーク１０３は、起動すべきアプリケーション７１２は残っているかどうかを判定する（ステップＳ９０６）。
残っている場合は、フレームワーク１０３は、アプリケーション７１２と対応付けられたドライバ７１１が有るかどうかを判定する（ステップＳ９０７）。より具体的に説明すると、フレームワーク１０３は、そのアプリケーション７１２に対応するドライバ有無フラグを確認して前記判定を行う。
ドライバ７１１が無い場合は、フレームワーク１０３は、単にアプリケーション７１２を開始する（ステップＳ９１２）。その後、フレームワーク１０３は、ステップＳ９０６に戻る。
【００８７】
ドライバ７１１が有る場合は、フレームワーク１０３は、アプリケーション７１２に対応するアプリケーション開始フラグを確認して、アプリケーション７１２を無条件に開始すべきかどうかを判定する（ステップＳ９０８）。アプリケーション開始フラグが「開始」にセットされていれば、無条件に開始すべきものと解釈される。
無条件には開始すべきでないと判断した場合は、フレームワーク１０３は、アプリケーション７１２に対応するドライバ起動済みフラグを確認して、ドライバ７１１が既に起動済みかどうかを判定する（ステップＳ９０９）。
起動済みの場合は、フレームワーク１０３は、ステップＳ９０６に戻る。
起動済みでない場合は、フレームワーク１０３は、アプリケーション７１２を起動する（ステップＳ９１０）。
【００８８】
次に、アプリケーション７１２は、ドライバ７１１を開始する（ステップＳ９１１）。その後、アプリケーション７１２は、処理をステップＳ９０６に戻す。
フレームワーク１０３は、起動すべき全てのアプリケーション７１２の起動を終了すると、ステップＳ９０６でＮｏに進み、終了する。
【００８９】
上記ステップＳ９０８において、フレームワーク１０３は、無条件に開始すべきかどうかを判断しているが、「無条件に」という意味は、「既にシステム起動部１０２がドライバ７１１を起動済みであっても」という意味である。その場合のシーケンスを以下に説明する。
ステップＳ９０８で無条件に開始すべきであると判断した場合は、フレームワーク１０３は、アプリケーション７１２を起動する（ステップＳ９１３）。
次に、アプリケーション７１２は、ドライバ７１１が既に起動済みかどうかを判定する（ステップＳ９１４）。判定は、ドライバ起動済みフラグに基づいて行ってもよい。またこの判定は、ドライバ７１１とアプリケーション７１２との間の所定のインタフェースを用いて行ってもよい。
【００９０】
起動済みでなければ、アプリケーション７１２は、ドライバ７１１を開始する（ステップＳ９１５）。その後、ステップＳ９０６に戻る。
起動済みであれば、アプリケーション７１２は、ステップＳ９１５の処理をスキップする。
或いは、ステップＳ９１４でアプリケーション７１２が判断せずに、ドライバ７１１を開始してしまい、重複起動チェックをドライバ７１１に任せてしまうという方法もある。この場合、後から起動されたドライバ７１１が重複起動を検知すると、後から起動されたドライバ７１１が自らを停止するように動作する。
【００９１】
なお、システム起動時に重複起動を判定せずに、重複起動を防止することもできる。例えば、フレームワーク１０３がドライバ７１１をシステム起動部１０２に登録したときに、システム起動時に起動すべきプログラムとしてアプリケーション７１２を登録しないようにすればよい。
何れにしても重複起動を防止する手段があればよい。もっとも、動作仕様としてドライバ７１１の重複起動を行う必要がある場合は、上記重複起動防止手順は必要ない。
以上、ドライバ７１１とアプリケーション７１２を利用する実施形態について説明した。しかし、本実施形態はこれにとどまるものではない。システム起動時に起動するプログラムであるサービス（ＯＳによってはデーモンと呼ぶ場合もある）にも適用できる。依存関係にある２つのサービスの間でも本実施形態は適用することができる。本実施形態はＯＳにも依存しない。
【００９２】
また、本実施形態の目的は、以下のようにすることによって達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（又は記録媒体）を、システム或いは装置に供給する。そして、そのシステム或いは装置の中央演算処理手段（ＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行する。この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現し、そのプログラムコードを記録した記憶媒体は本実施形態を構成する。
【００９３】
また、システム或いは装置の前記中央演算処理手段が読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、システム或いは装置上で稼働しているオペレーティングシステム（ＯＳ）等が実際の処理の一部又は全部を行う。その処理によって上述した実施形態の機能が実現される場合も含まれる。
【００９４】
更に、記憶媒体から読み出されたプログラムコードが、前記システム或いは装置に挿入された機能拡張カードや、接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって上述した実施形態の機能が実現される場合も含まれる。
【００９５】
本実施形態を前記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードが格納される。
【００９６】
以上、上述した実施形態によれば、異なる種類のプログラムの起動を統一して管理すると共に、システム起動時に早期に起動したいプログラムについては早く起動できるようにすることができる。また、上述した実施形態によれば、重複起動を防止することができる。また、上述した実施形態によれば、システム起動時に早期に起動する対象からプログラムを外すことができるので、プログラムの管理が従来と変わらない操作性で達成することができる。つまり、プログラム種別によらないシームレスなプログラム制御管理を行うことができる。
【００９７】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【００９８】
【図１】図１は、情報処理装置（コンピュータ）のハードウェア構成の一例を示す図である。
【図２】図２は、情報処理装置の機能構成の一例を示す図である。
【図３】図３は、Ｊａｖａアプリケーションの実行手順の一例を示すフローチャートである。
【図４】図４は、アプリケーション管理テーブルの構成の一例を示す図である。
【図５】図５は、ネイティブアプリケーションの実行手順の一例を示すフローチャートである。
【図６】図６は、システム１０１の起動手順の一例を示すフローチャートである。
【図７】図７は、情報処理装置の機能構成の他の例を示す図である。
【図８】図８は、アプリケーション実行手順の一例を示すフローチャートである。
【図９】図９は、システム１０１０の起動手順の他の例を示すフローチャートである。
【符号の説明】
【００９９】
１０１  システム
１０２  システム起動部
１０３  アプリケーション管理フレームワーク
１０４  Ｊａｖａ仮想マシン
１１０  アプリケーション
１１１  ネイティブプログラム
１１２  Ｊａｖａプログラム
【図１】
0005197159.tif 000002
【図２】
0005197159.tif 000003
【図３】
0005197159.tif 000004
【図４】
0005197159.tif 000005
【図５】
0005197159.tif 000006
【図６】
0005197159.tif 000007
【図７】
0005197159.tif 000008
【図８】
0005197159.tif 000009
【図９】
0005197159.tif 000010