"画像形成装置のエミュレータとして機能し、アプリ実行環境を有する情報処理装置であって、前記アプリ実行環境は、当該アプリ実行環境において実行されるアプリケーションを制御する制御手段を有し、前記制御手段は、当該情報処理装置における他の前記アプリ実行環境の前記制御手段又は前記画像形成装置における前記アプリ実行環境の前記制御手段を介して、当該他の前記アプリ実行環境において実行されるアプリケーション又は前記画像形成装置における前記アプリ実行環境において実行されるアプリケーションを制御することを特徴とする情報処理装置。画像形成装置のエミュレータとして機能し、アプリ実行環境を備えた情報処理装置によって実行される情報処理方法であって、前記アプリ実行環境が、当該アプリ実行環境において実行されるアプリケーションを制御する第一の制御手順と、前記アプリ実行環境が、当該情報処理装置における他の前記アプリ実行環境又は前記画像形成装置における前記アプリ実行環境を介して、当該他の前記アプリ実行環境において実行されるアプリケーション又は前記画像形成装置における前記アプリ実行環境において実行されるアプリケーションを制御する第二の制御手順とを有することを特徴とする情報処理方法。請求項2記載の情報処理方法をコンピュータに実行させるための情報処理プログラム。請求項3記載の情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体。さて、複合機や融合機に実装されるアプリケーションと言えば、従来はC言語のアプリケーションが主流だったが、近頃はJava登録商標言語のアプリケーションも登場しつつある。さらに、一言でJava登録商標言語のアプリケーションと言っても、AppletやXletやServletやJSP等の様々な種類のアプリケーションが存在する。ゆえに、これらのアプリケーションの管理を行うプラットフォーム等のアプリケーション管理機構は徐々に複雑化する傾向にある。アプリケーション管理機構の複雑化は機器の性能面から言っても開発の効率面から言ってもあまり好ましくないため、アプリケーション管理機構はなるべく統合的に構成することが望ましい。本発明は、画像形成装置に実装されるアプリケーションの管理を行うアプリケーション管理機構を統合的に構成することを課題とする。そこで上記課題を解決するため、本発明は、画像形成装置のエミュレータとして機能し、アプリ実行環境を有する情報処理装置であって、前記アプリ実行環境は、当該アプリ実行環境において実行されるアプリケーションを制御する制御手段を有し、前記制御手段は、当該情報処理装置における他の前記アプリ実行環境の前記制御手段又は前記画像形成装置における前記アプリ実行環境の前記制御手段を介して、当該他の前記アプリ実行環境において実行されるアプリケーション又は前記画像形成装置における前記アプリ実行環境において実行されるアプリケーションを制御することを特徴とする。このような情報処理装置では、画像形成装置に実装されるアプリケーションの管理を行うアプリケーション管理機構を統合的に構成することができる。本発明は、画像形成装置に実装されるアプリケーションの管理を行うアプリケーション管理機構を統合的に構成することを可能にする。図1は、本発明の実施例に該当する融合機101を表す。図1の融合機101は、種々のハードウェア111と、種々のソフトウェア112と、融合機起動部113により構成される。融合機101のハードウェア111としては、撮像部121と、印刷部122と、その他のハードウェア123が存在する。撮像部121は、読取原稿から画像画像データを読み取るためのハードウェアである。印刷部122は、画像画像データを印刷用紙に印刷するためのハードウェアである。融合機101のソフトウェア112としては、種々のアプリケーション131と、種々のプラットフォーム132が存在する。これらのプログラムは、UNIX登録商標等のOSオペレーティングシステムによりプロセス単位で並列的に実行される。アプリケーション131としては、コピー用のアプリケーションであるコピーアプリ141、プリンタ用のアプリケーションであるプリンタアプリ142、スキャナ用のアプリケーションであるスキャナアプリ143、ファクシミリ用のアプリケーションであるファクシミリアプリ144、ネットワークファイル用のアプリケーションであるネットワークファイルアプリ145が存在する。アプリケーション131は、専用のSDKソフトウェア開発キットを使用して開発することができる。SDKを使用して開発したアプリケーション131をSDKアプリと呼ぶ。専用のSDKとしては、C言語でアプリケーション131を開発するためのCSDKや、Java登録商標言語でアプリケーション131を開発するためのJSDKが提供される。CSDKを使用して開発したアプリケーション131をCSDKアプリと呼び、JSDKを使用して開発したアプリケーション131をJSDKアプリと呼ぶ。図1の融合機101にも、CSDKアプリ146と、JSDKアプリ147が存在する。図1の融合機101にはさらに、Java登録商標言語で記述されたJSDKアプリ147とC言語で記述された他のソフトウェア112との仲介を行うソフトウェア112として、JSDKプラットフォーム148が存在する。すなわち、融合機101は、C言語で実装されたCSDKアプリの実行環境やJava登録商標言語で実装されたJSDKアプリの実行環境等、複数のアプリ実行環境を有する。なお、JSDKアプリの実行環境の具体例としては、JSDKプラットフォーム148が相当する。プラットフォーム132としては、種々のコントロールサービス151、システムリソースマネージャ152、種々のハンドラ153が存在する。コントロールサービス151としては、ネットワークコントロールサービスNCS161、ファクシミリコントロールサービスFCS162、デリバリコントロールサービスDCS163、エンジンコントロールサービスECS164、メモリコントロールサービスMCS165、オペレーションパネルコントロールサービスOCS166、サーティフィケーションコントロールサービスCCS167、ユーザディレクトリコントロールサービスUCS168、システムコントロールサービスSCS169が存在する。ハンドラ153としては、ファクシミリコントロールユニットハンドラFCUH171、イメージメモリハンドラIMH172が存在する。NCS161のプロセスは、ネットワーク通信の仲介を行う。FCS162のプロセスは、ファクシミリのAPIを提供する。DCS163のプロセスは、蓄積文書の配信処理に関する制御を行う。ECS164のプロセスは、撮像部121や印刷部122に関する制御を行う。MCS165のプロセスは、メモリやハードディスクドライブに関する制御を行う。OCS166のプロセスは、オペレーションパネルに関する制御を行う。CCS167のプロセスは、認証処理や課金処理に関する制御を行う。UCS168のプロセスは、ユーザ情報の管理に関する制御を行う。SCS169のプロセスは、システムの管理に関する制御を行う。アプリケーション131とプラットフォーム132の仲介を行うソフトウェア112として、仮想アプリケーションサービスVAS135が存在する。VAS135は、アプリケーション131をクライアントとするサーバプロセスとして動作すると共に、プラットフォーム132をサーバとするクライアントプロセスとして動作する。VAS135は、アプリケーション131から見てプラットフォーム132を隠蔽するラッピング機能を備え、プラットフォーム132のバージョンアップに伴うバージョン差を吸収する役割等を担う。融合機起動部113は、融合機101の電源投入時に最初に実行される。これにより、UNIX登録商標等のOSが起動され、アプリケーション131やプラットフォーム132が起動される。これらのプログラムは、ハードディスクドライブやメモリカードに蓄積されており、ハードディスクドライブやメモリカードから再生されて、メモリに起動されることになる。図2は、図1の融合機101に係るハードウェア構成図である。融合機101のハードウェア111としては、コントローラ201と、オペレーションパネル202と、ファクシミリコントロールユニットFCU203と、撮像部121と、印刷部122が存在する。コントローラ201は、CPU211、ASIC212、NB221、SB222、MEM-P231、MEM-C232、HDDハードディスクドライブ233、メモリカードスロット234、NICネットワークインタフェースコントローラ241、USBデバイス242、IEEE1394デバイス243、セントロニクスデバイス244により構成される。CPU211は、種々の情報処理用のICである。ASIC212は、種々の画像処理用のICである。NB221は、コントローラ201のノースブリッジである。SB222は、コントローラ201のサウスブリッジである。MEM-P231は、融合機101のシステムメモリである。MEM-C232は、融合機101のローカルメモリである。HDD233は、融合機101のストレージである。メモリカードスロット234は、メモリカード235をセットするためのスロットである。NIC241は、MACアドレスによるネットワーク通信用のコントローラである。USBデバイス242は、USB規格の接続端子を提供するためのデバイスである。IEEE1394デバイス243は、IEEE1394規格の接続端子を提供するためのデバイスである。セントロニクスデバイス244は、セントロニクス仕様の接続端子を提供するためのデバイスである。オペレーションパネル202は、オペレータが融合機101に入力を行うためのハードウェア操作部であると共に、オペレータが融合機101から出力を得るためのハードウェア表示部である。図3は、図1の融合機101に係る外観図である。図3には、撮像部121の位置と、印刷部122の位置と、オペレーションパネル202の位置が図示されている。図3には更に、読取原稿のセット先となる原稿セット部301と、印刷用紙の給紙先となる給紙部302と、印刷用紙の排紙先となる排紙部303が図示されている。オペレーションパネル202は、図4のように、タッチパネル311と、テンキー312と、スタートボタン313と、リセットボタン314と、機能キー315と、初期設定ボタン316により構成される。タッチパネル311は、タッチ操作で入力を行うためのハードウェアタッチ操作部であると共に、画面表示で出力を得るためのハードウェア画面表示部である。テンキー312は、キーボタン操作で数字入力を行うためのハードウェアである。スタートボタン313は、ボタン操作でスタート操作を行うためのハードウェアである。リセットボタン314は、ボタン操作でリセット操作を行うためのハードウェアである。機能キー315は、キーボタン操作でCSDKアプリ146やJSDKアプリ147による操作画面を表示させるためのハードウェアである。初期設定ボタン316は、ボタン操作で初期設定画面を表示させるためのハードウェアである。原稿セット部301は、ADF自動原稿搬送装置321と、フラットベッド322と、フラットベッドカバー323により構成される。給紙部302は、4個の給紙トレイにより構成される。排紙部303は、1個の排紙トレイにより構成される。CSDKとJSDK図5は、CSDKアプリとJSDKアプリの管理機構の第一の例を示す図である。CSDKアプリ146は、C言語のアプリケーションであり、それぞれプロセスとして実行される事になる。JSDKアプリ147は、Java登録商標言語のアプリケーションであり、それぞれスレッドとして実行される事になる。図1の融合機101には、CSDKアプリ146として、他のCSDKアプリ146の制御を行うSASSDKアプリケーションサービス411が存在し、JSDKアプリ147として、他のJSDKアプリ147の制御を行うSASManagerSDKアプリケーションサービスマネージャ511が存在する。SAS411とSASManager511はそれぞれ、CSDKアプリ146とJSDKアプリ147の起動制御,起動解除停止も含む制御,インストール制御,アンインストール制御,アップデート制御等を行う。このように、CSDKアプリ146とJSDKアプリ147とによってそれぞれ管理機構体が異なるのは、それぞれのアプリケーションの開発言語が異なる点がその理由の一つとして挙げられる。例えば、SAS411によって、JSDKアプリ147の制御を直接行おうとすると、C言語のソースコードの中からJava登録商標言語によるインタフェースを呼び出さなければならず、高度なプログラミング技術が必要とされるとともに、その処理内容が煩雑となるからである。また、CSDKアプリ146の方はプロセスとして実行され、JSDKアプリ147の方はスレッドとして実行されるといったように、両者の実行形態が異なる点を考慮しても、CSDKアプリ146用のアプリケーション管理機構とJSDKアプリ147用のアプリケーション管理機構とを別個に設けた方が、管理機構の単純化といった観点から有利であると考える。但し、SAS411は、CSDKアプリ146の制御を行う事ができるだけではなく、SASManager511を介してJSDKアプリ147の制御を行う事もできる。SAS411は、CSDKアプリ146については直接的にその制御を行う事ができると共に、JSDKアプリ147についてはSASManager511を介して間接的にその制御を行う事ができるのである。このように、CSDKアプリ146用のアプリケーション管理機構とJSDKアプリ147用のアプリケーション管理機構は、SASManager511を制御できる機能をSAS411に具備させると言う形で統合的に構成されている。なお、SAS411とSASManager511とのやり取りは、HTTPHyperTextTransferProtocolやSOAPSimpleObjectAccessProtocol等、開発言語の別を問わず簡便に利用できるプロトコルを用いるとよい。そうすることによって、C言語のソースコードの中からJava登録商標言語によるインタフェースを呼び出す必要がなくなり、処理内容の煩雑さの問題が解消される。また、融合機101のソフトウェアの根幹部分がC言語によることも、SDKアプリを制御する機能を同じくC言語によるSAS411に集中しておくのが好適である理由の一つであるといえる。また、図6は、CSDKアプリとJSDKアプリの管理機構の第二の例を示す図である。図6中、図5と同一部分には同一符号を付し、その説明は省略する。図6ではJSDKプラットフォーム148が複数存在する例が示されている。このような場合、JSDKプラッとフォーム148ごとにSASManager511が設けられる。したがって、SAS411は、各JSDKプラットフォーム148のSASManager511を介して、それぞれのJSDKプラットフォーム148上のJSDKアプリ147の制御を行う。したがって、この場合もSDKアプリの管理機構はSAS411に統合されている。更に、図7は、CSDKアプリが存在しない場合のJSDKアプリの管理機構の例を示す図である。図7中、図5又は図6と同一部分には同一符号を付し、その説明は省略する。すなわち、図7では、CSDKアプリは存在せず、複数のJSDKプラットフォーム148が存在する場合に、各プラットフォーム上のJSDKアプリの制御を統合的に管理するための機構が示されている。この場合、複数のJSDKプラットフォーム148のうちのいずれか一つのJSDKプラットフォーム148上で動作するSASManager511が、他のJSDKプラットフォーム148上のSASManager511を介して、当該他のJSDKプラットフォーム148上のJSDKアプリ147の制御を統合的に行えばよい。図8は、タッチパネル311図4参照に表示される操作画面の画面遷移図である。図8Aの操作画面で機能キー315図4参照を押下すると、図8Bの操作画面に遷移する。図8Bの操作画面は、CSDKアプリ146とJSDKアプリ147を操作対象とする操作画面である。図8Bの操作画面でCSDKアプリ1,2,3のどれかを指定すると、図8Cの操作画面に遷移する。図8Cの操作画面は、指定されたCSDKアプリ146による操作画面である。一方、図8Bの操作画面でJSDKアプリを指定すると、図8Dの操作画面に遷移する。図8Dの操作画面は、スレッドとして実行されているJSDKアプリ147を操作対象とする操作画面である。図8Dから図8Eへの画面遷移が表示画面を占有するJSDKアプリ147の切替として実施されるので、実行中のJSDKアプリ147のみが図8Dの操作画面の表示対象となり、実行中でないJSDKアプリ147は図8Dの操作画面の表示対象とならない。図8Dの操作画面でJSDKアプリ1,2,3,4,5,6のどれかを指定すると、図8Eの操作画面に遷移する。図8Eの操作画面は、指定されたJSDKアプリ147による操作画面である。図8Bの操作画面を表示する機能や、図8B,C,Dの操作画面に画面を遷移する機能は、SCS169図1参照が受け持つ。図8Dの操作画面を表示する機能や、図8Eの操作画面に画面を遷移する機能は、ScreenManager512図11参照が受け持つ。あるCSDKアプリ146やJSDKアプリ147を図8Bや図8Dの操作画面の表示対象とするには、そのCSDKアプリ146やJSDKアプリ147をインストール操作画面でのインストール操作をもってインストールしておく必要がある。必要がある場合には、起動画面での起動操作をもって起動しておく必要もある。そして、インストール操作画面でのインストール操作や起動画面での起動操作に呼応してCSDKアプリ146やJSDKアプリ147のインストール制御や起動制御を行うのが、SAS411やSASManager511である。CSDKアプリ146やJSDKアプリ147のアンインストール制御や起動解除制御についても同様である。OSGi図9は、JSDKプラットフォーム及びJSDKアプリの詳細について説明するための図である。本実施の形態におけるJSDKプラットフォーム148は、OSGiOpenServiceGatewayinitiativeサービスプラットフォームに準拠している。OSGiサービスプラットフォームは、OSGiアライアンスによる標準化技術であり、Java登録商標言語に基づいたオープンなソフトウェア部品化技術である。OSGiサービスプラットフォームが実装された機器では、Java登録商標言語のソフトウェアはバンドルBundleと言うソフトウェア部品の形で実装される。そして、該機器の諸機能はバンドルをもって構成する事ができると共に、該機器の諸機能のアップデートやカスタマイズやメンテナンスはバンドルのダウンロードをもって実現する事ができる。図9において、OSGiフレームワーク403及びOSGiサービス402は、JSDKプラットフォーム148をOSGiプラットフォームとして機能させるためのものである。OSGiフレームワーク403は、バンドルの管理及び制御バンドルのライフサイクルやデータの管理等を行う。OSGiサービス402は、バンドルに対して各種のサービスを提供するライブラリ群である。このように、JSDKプラットフォーム148は、OSGiサービスプラットフォームとして機能するため、その上で動作するアプリケーションすなわちJSDKアプリ147は、バンドルとして実装されうる。図中においても、JSDKアプリ147の一部がバンドル407として実装されている様子が示されている。OSGiサービスプラットフォームにおいて、各バンドルにはBundleActivator4071が実装されることになっている。BundleActivator4071は、OSGiフレームワーク403にバンドルを管理及び制御させるためのインフェースを提供する。すなわち、OSGiフレームワーク403は、各バンドルのBundleActivator4071を呼び出すことにより、当該バンドルの管理及び制御を行う。なお、本実施の形態においてバンドル407を総称する場合、OSGiアプリ401という。更に、本実施の形態における融合機101は、JSDKアプリ147として、バンドル以外のアプリケーションの実行も可能とされている。本実施の形態では、かかるアプリケーションとしてXlet406を採用した例を示す。図中のJSDKプラットフォーム148において、JSDKシステムサービス405は、Xlet406に対して各種サービスを提供するものである。JSDKシステムサービス405には、XletBundleActivator404、MultiXletManager532、InstallManager545等のクラスが含まれる。XletBundleActivator404は、OSGiフレームワーク403に対して、Xlet406をバンドルとして見せるためのモジュールである。MultiXletManager532は、各Xlet406のライフサイクル等を管理する。InstallManager545は、Xlet406について、SDcardやWebからのインストールやアンインストールの管理を行う。なお、CVM555は、Java登録商標の実行環境を実現する仮想マシンである。XletBundleActivator404について更に詳しく説明する。Xlet406は、バンドルとして実装されていないため、そのままではOSGiフレームワーク403によって管理等することができない。そうすると、JSDKアプリ147において、バンドル407として実装されたアプリケーションとXlet406として実装されたアプリケーションとの管理機構を別個に設けなければならず、JSDKプラットフォーム148の構成が複雑化してしまう。したがって、OSGiフレーム403によって全てのJSDKアプリ147の管理等が一元的に行われることが望まれる。そこで、OSGiフレームワーク403が、Xlet406をバンドル407と同様のインタフェースによって管理できるようXletBundleActivator404が設けられている。具体的には、XletBundleActivator404は、それぞれのバンドル407に実装されているBundelActivatorと同様のインタフェースをOSGiフレームワーク404に対して提供する。XletBundleActivator404は、OSGiフレームワーク403による当該インタフェーの呼び出しに応じ、Xlet406において当該インタフェースに対応したインタフェースを呼び出す。すなわち、XletBundleActivator404は、OSGiフレームワーク403が解釈可能なインタフェースと、Xlet406が解釈可能なインタフェースとの仲介を行うことにより、Xlet406のライフサイクル管理等の仲介を行うのである。このように、XletBundleActivator404によって、バンドルであるかXletであるかを問わず、OSGiフレームワーク403によるJSDKアプリ147の管理の一元化が実現されている。図10は、XletBundleActivatorによるXletのバンドル化の様子を概念的に示す図である。ここで、バンドル化とは、OSGiフレームワーク403から見て、Xlet406がバンドル407と同様の制御方法によって制御可能なように構成されることをいう。OSGiサービスプラットフォームにおいて、OSGiフレームワークは、バンドルを起動する際、当該バンドルのBundleActivatorに実装されているstartメソッドを呼び出す。また、バンドルを起動解除させる際、当該バンドルのBundleActivatorに実装されているstopメソッドを呼び出す。一方、Xletは、起動及び起動解除を含むライフサイクルを制御するためのメソッドとして、initXlet、startXlet、pauseXlet、及びdestroyXlet等が実装される。図10では、このようなインタフェースの相違が、XletBundleActivator404によって吸収されている様子が示されている。すなわち、OSGiフレームワーク403は、XletBundleActivator404のstartやstopを呼び出すことで、Xlet406の起動又は起動解除を要求する。XletBundleActivator404は、これらのメソッドの呼び出しに応じ、Xlet406のinitXlet、startXlet、pauseXlet、及びdestroyXlet等を呼び出すことにより、Xlet406の起動又は起動解除を実現する。したがって、OSGiフレームワーク403は、JSDKアプリ147が、Xlet406として実装されているか又はバンドル407として実装されているかを意識することなく、各JSDKアプリ147を管理することができる。このようにJSDKプラットフォーム148においてXletBundleActivator404が実装されているといった構成は、JSDKアプリ147のベンダにとって特に便宜である。例えば、既存のXlet406によるJSDKアプリ147に対して何の変更もせずに、当該Xlet406によるJSDKアプリ147をOSGiフレームワーク403の上で動作させることができるからである。ところで、バンドルとXletとの状態遷移は異なっており、その相違が両者のインタフェースの相違にも現れている。したがって、かかる状態遷移の整合性が図られてこそ、Xletのバンドル化が実現されるといえる。本実施の形態において、両者の状態遷移の整合性がどのように図られているか、以下に説明する。図11は、バンドルの状態遷移図である。バンドルの状態には、インストール状態INSTALLEDや、アンインストール状態UNINSTALLEDや、有効状態ACTIVEや、無効状態RESOLVEDや、起動処理中状態STARTINGや、起動解除処理中状態STOPPING等が存在する。バンドルの状態は、インストールinstallや、アンインストールuninstallや、アップデートupdateや、起動startや、起動解除stop等により遷移する。バンドルのライフサイクルとは、このようなバンドルの状態遷移にほかならない。バンドルのライフサイクルは、OSGiフレームワーク403により管理される。インストール状態は、バンドルのインストールの直後の状態である。アンインストール状態は、バンドルのアンインストールの直後の状態である。有効状態は、バンドルが起動中の状態である。無効状態は、バンドルが起動解除中の状態である。起動処理中状態は、バンドルの起動処理を実行中の状態である。起動解除処理中状態は、バンドルの起動解除処理を実行中の状態である。図12は、Xletの状態遷移図である。Xletの状態には、初期化状態Loadedや、停止状態Pausedや、活性化状態Activeや、終了状態Destroyedが存在する。Xletの状態は、起動initXletや、開始startXletや、停止pauseXletや、終了destroyXletにより遷移する。Xletのライフサイクルとは、このようなXletの状態遷移にほかならない。XletであるJSDKアプリ147のライフサイクルは、JSDKプラットフォーム148により管理される。初期化状態は、Xletインスタンスの生成直後の状態である。停止状態は、サービス提供停止中の状態である。活性化状態は、サービス提供中の状態である。終了状態は、Xletインスタンスの消滅直後の状態である。初期化状態や終了状態への遷移は1度だけ可能であり、停止状態と活性化状態との間の遷移は何度でも可能である。図13は、バンドル化されて管理されるXletの状態遷移図である。Xletがバンドル化されて管理される場合には、Xletの初期化状態,停止状態,活性化状態,終了状態はバンドルの有効状態に入る事になる。即ち、バンドルの有効状態として、Xletの初期化状態,停止状態,活性化状態,終了状態が存在する事になる。このように、Xlet406の状態遷移をバンドルの状態遷移にマッピングすることで、OSGiフレームワーク403上において、Xlet406は、バンドル407と同様の状態遷移を実現する。次に、OSGiフレームワーク403上において、Xlet406とバンドル401とのインストール及びアンインストール処理、並びに起動及び起動解除処理が、どのように整合性がとられているかについてシーケンス図を用いて説明する。まず、インストール及びアンインストール処理について説明する。図14は、バンドルのインストール処理及びアンインストール処理を説明するためのシーケンス図である。SAS411が、タッチパネル311に表示させている操作画面を介して、JSDKアプリ147のインストールの指示をユーザより受け付けると、SAS411は、SASManager511にインストールの実行を要求するS11。JSDKアプリ147のインストールはSASManager511によって制御されるからである。SASManager511は、操作画面において選択されているインストール元例えば、WebサイトやSDカード等よりインストール可能なJSDKアプリ147を検索するようInstallManager545に要求するS12。InstallManager545は、当該インストール可能なJSDKアプリ147を検索し、検索結果をSASManager511に返却するS13。SASManager511は、検索結果として取得されたJSDKアプリ147の一覧の中からユーザによって選択されたJSDKアプリ147がバンドル407として実装されたものである場合は、当該バンドル407のインストールをOSGiフレームワーク403に要求するS14。OSGiフレームワーク403は、インストール対象とされたバンドル407のBundleActivator4071に対してインストールを要求するS15。その要求に基づいて、バンドル407は融合機101にインストールされる。一方、SAS411が、タッチパネル311に表示させている操作画面を介して、JSDKアプリ147のアンインストールの指示をユーザより受け付けると、SAS411は、SASManager511にアンインストールの実行を要求するS21。SASManager511は、融合機101にインストールされているJSDKアプリ147の検索をInstallManager545に要求するS22。InstallManager545は、インストールされているJSDKアプリ147を検索し、検索結果をSASManager511に返却するS23。SASManager511は、検索結果として取得されたJSDKアプリ147の一覧の中からユーザによって選択されたJSDKアプリ147がバンドル407である場合は、当該バンドル407のアンインストールをOSGiフレームワーク403に要求するS24。OSGiフレームワーク403は、アンインストールの対象とされたバンドル407のBundleActivator4071に対してアンインストールを要求するS25。その要求に基づいて、バンドル407は融合機101からアンインストールされる。また、図15は、バンドル化されたXletのインストール処理及びアンインストール処理を説明するためのシーケンス図である。図15において、ステップS31~S33は、図14におけるステップS11~S23と同様であるためここでの説明は省略する。SASManager511は、検索結果として取得されたJSDKアプリ147の一覧の中からユーザによって選択されたJSDKアプリ147がXlet406として実装されたものである場合は、当該Xlet406のインストールをInstallManager545に要求するS34。InstallManager545は、XletBundleActivator404のクラスファイルをコピーすることにより、インストール対象とされたXlet406に対するXletBundleActivator404を生成するS35、S36。すなわち、XletBunleActivator404のクラスファイルは、Xlet406ごとに必要とされるが、その実装内容は共通のものでよいため、予め用意されているクラスファイルを単にコピーすることでインストール対象とされたXlet406に対するXletBundleActivator404が生成されるのである。続いて、InstallManager545は、Xlet406を融合機101にインストールするS37。Xlet406のインストールが正常に行われると、SASManager511は、OSGiフレームワーク403に、バンドル化されたXlet406のインストールを要求するS38。この呼び出しは、図14におけるステップS14に相当する。この場合、OSGiフレームワーク403は、インストール対象がXlet406であることは関知しない。したがって、バンドル407のインストールが要求された場合と同様の処理を実行する。ここでは、OSGiフレームワーク403には、XletBunldleActivator404が、図14におけるBundleActivator4071と同様に見えている。したがって、OSGiフレームワーク403は、XletBundleActivator404に対してインストールを要求するS39。但し、Xlet406は既にインストールされているため、ここではXlet406ではなくXletBundleActivator404がインストールされる。図15において、ステップS41以降は、Xlet406のアンインストール処理を示すものである。ステップS41~S43は、図14におけるステップS21~S23と同様であるためここでの説明は省略する。SASManager511は、検索結果として取得されたJSDKアプリ147の一覧の中からユーザによって選択されたJSDKアプリ147がXlet406である場合は、当該Xlet406のアンインストールをInstallManager545に要求するS44。InstallManger545は、アンインストールの対象とされたXlet406をアンインストールするS45。Xlet406のアンインストールが正常に行われると、SASManager511は、OSGiフレームワーク403に、バンドル化されたXlet406のアンインストールを要求するS46。この呼び出しは、図14におけるステップS24に相当する。この場合、OSGiフレームワーク403は、アンインストール対象がXlet406であることは関知しない。したがって、バンドル407のアンインストールが要求された場合と同様の処理を実行する。ここでは、OSGiフレームワーク403には、XletBunldleActivator404が図14におけるBundleActivator4071と同様に見えている。したがって、OSGiフレームワーク403は、XletBundleActivator404に対してアンインストールを要求するS47。但し、Xlet406は既にアンインストールされているため、ここではXlet406ではなくXletBundleActivator404がアンインストールされる。このように、本実施の形態における融合機101では、OSGiフレームワーク403から見て、バンドル407とXlet406のインストール及びアンインストール処理が同様の手順によって行われる。すなわち、図14におけるOSGiフレームワーク403に対する呼び出しS14、S24と、図15におけるOSGiフレームワーク403に対する呼び出しS38、S46とは整合性がとられている。また、図14におけるOSGiフレームワーク403による呼び出しS15、S25と、図15におけるOSGiフレームワーク403による呼び出しS39、S47とは整合性がとられている。したがって、OSGiフレームワーク403は、バンドル407とXlet406との違いを意識することなく、そのインストール及びアンインストールを実現しているといえる。次に、起動及び起動解除処理について説明する。図16は、バンドルの起動処理及び起動解除処理を説明するためのシーケンス図である。SAS411が、タッチパネル311に表示させている操作画面を介して、JSDKアプリ147の起動の指示をユーザより受け付けると、SAS411はSASManager511に起動の実行を要求するS51。JSDKアプリ147の起動はSASManager511によって制御されるからである。SASManager511は、融合機101にインストールされているJSDKアプリ147を検索するようInstallManager545に要求するS52。InstallManager545は、インストールされているJSDKアプリ147を検索し、検索結果をSASManager511に返却するS53。SASManager511は、検索結果として取得されたJSDKアプリ147の一覧の中から、ユーザによって選択されたJSDKアプリ147の起動をOSGiフレームワーク403に要求するS54。OSGiフレームワーク403は、起動対象とされたバンドル407のBundleActivator4071のstartメソッドを呼び出すことによりバンドル407を起動させるS55。一方、SAS411が、タッチパネル311に表示させている操作画面を介して、JSDKアプリ147の停止起動解除の指示をユーザより受け付けると、SAS411は、SASManager511にJSDKアプリ147の停止の実行を要求するS61。SASManager511は、融合機101にインストールされているJSDKアプリ147の検索をInstallManager545に要求するS62。InstallManager545は、インストールされているJSDKアプリ147を検索し、検索結果をSASManager511に返却するS63。SASManager511は、検索結果として取得されたJSDKアプリ147の一覧の中からユーザによって選択されたJSDKアプリ147の停止をOSGiフレームワーク403に要求するS64。OSGiフレームワーク403は、停止対象とされたバンドル407のBundleActivator4071のstopメソッドを呼び出すことにより当該バンドル407を停止させるS65。また、図17は、バンドル化されたXletの起動処理及び起動解除処理を説明するためのシーケンス図である。図17において、ステップS71~S74は図16におけるステップS51~S54と同様であるためここでの説明は省略する。OSGiフレームワーク403は、起動対象とされたXlet406に対応するXletBundleActivator404のstartメソッドを呼び出すS75。但し、OSGiフレームワーク403は、起動対象がXlet406であることは意識していない。OSGiフレームワーク403には、XletBundleActivator404が、図16におけるBundleActivator401と同様に見えており、図16のステップS55においてBundleActivator404のstartメソッドを呼び出す場合と同様に、XletBundleActivator404のstartメソッドを呼び出しているだけである。startメソッドを呼び出されたXletBundleActivator404は、MultiXletManager532のcreateXletメソッドを呼び出すことにより、Xlet406の起動生成を要求するS76。MultiXletManager532は、Xlet406のinitXletメソッドを呼び出すことによりXlet406を初期化しS77、更に、startXletメソッドを呼び出すことによりXlet406を起動させるS78。図17において、ステップS81以降は、Xlet406の起動解除処理を示すものである。図中ステップS81~S84は、図16におけるステップS61~S64と同様であるためここでの説明は省略する。OSGiフレームワーク403は、停止対象とされたXlet406に対応するXletBundleActivator404のstopメソッドを呼び出すS85。但し、OSGiフレームワーク403は、停止対象がXlet406であることは意識していない。すなわち、図16のステップS65においてBundleActivator404のstopメソッドを呼び出す場合と同様に、XletBundleActivator404のstopメソッドを呼び出しているだけである。stopメソッドを呼び出されたXletBundleActivator404は、MultiXletManager532のdestroyXletメソッドを呼び出すことにより、Xlet406の停止破棄を要求するS86。MultiXletManager532は、Xlet406のdestroyXletメソッドを呼び出すことによりXlet406停止させるS87。このように、本実施の形態における融合機101では、OSGiフレームワーク403から見て、バンドル407とXlet406の起動及び起動解除処理が同様の手順によって行われる。すなわち、図16におけるOSGiフレームワーク403に対する呼び出しS54、S64と、図17におけるOSGiフレームワーク403に対する呼び出しS74、S84とは整合性がとられている。また、図16におけるOSGiフレームワーク403による呼び出しS55、S65と、図17におけるOSGiフレームワーク403による呼び出しS75、S85とは整合性がとられている。したがって、OSGiフレームワーク403は、バンドル407とXlet406との違いを意識することなく、その起動及び起動解除を実現しているといえる。JSDK図18は、図1のJSDKアプリ147とJSDKプラットフォーム148のクラス図である。JSDKアプリ147とJSDKプラットフォーム148は、全体で1プロセスとして、同一のプロセス上で実行される。JSDKアプリ147とJSDKプラットフォーム148中の各ブロックは、それぞれ1プロセス上のスレッドとして、スレッド単位で並列的に実行マルチスレッドされる。JSDKアプリ147とJSDKプラットフォーム148は、Java登録商標コンパイラによりソースコードからバイトコードに一括翻訳されており、Java登録商標仮想マシンにより逐次実行される。JSDKアプリ147とJSDKプラットフォーム148はJava登録商標2MicroEditionのFoundationProfileがベースとなっている。JSDKアプリ147としては、図に示す通り、ユーザアプリ501と、SASManager511と、ScreenManager512等が存在する。ユーザアプリ501は、融合機101のユーザ例えばベンダがJSDKを使用して開発したJSDKアプリ147である。SASManager511は、他のJSDKアプリ147ユーザアプリ501等の制御等を行うJSDKアプリ147である。ScreenManager512は、他のJSDKアプリ147ユーザアプリ501等を操作対象とする操作画面の表示等を行うJSDKアプリ147である。ユーザアプリ501はここでは、スタンドアロンアプリケーションやアプレットと並ぶJava登録商標アプリケーションの一種であるXletである。SASManager511とScreenManager512はここでは、独自の拡張を施したXletXletExである。JSDKプラットフォーム148には、図に示す通り、JSDKEnvironment521と、XletManager531と、MultiXletManager532と、SendManager541と、EventManager542と、SystemEventManager543と、PanelManager544と、InstallManager545と、Server/ClientManager546等のクラスが存在する。JSDKEnvironment521は、JSDKシステムの実行環境を反映したJSDKシステムの起動環境設定を実行するクラスである。XletManager531は、1対1でXletを管理するクラスである。ここでは、5個のXletのライフサイクルやデータがそれぞれ1対1で5個のXletManager531によって管理される。MultiXletManager532は、全てのXletManager531を管理するクラスである。ここでは、5個のXletManager531のライフサイクルやデータが全て1個のMultiXletManager532によって管理される。なお、SASManager511,ScreenManager512,JSDKEnvironment521,MultiXletManager532,SendManager541,EventManager542,SystemEventManager543,PanelManager544,InstallManager545,Server/ClientManager546のバンドルのライフサイクルやデータは、OSGiフレームワーク403によって管理される。SystemEventManager543は、図1のプラットフォーム132からのシステムイベント電力モード等の管理を行うクラスである。PanelManager544は、1個のXletがオペレーションパネル202の画面を占有する際の調停を行うクラスである。InstallManager545は、SDcardやWebからのインストールやアンインストールの管理を行うクラスである。図18のJSDKシステムでは、JSDKAPI551とJSDKAPI552がAPIとして利用される。なお、XletとXletExの差異として、オブジェクトにアクセスするのにJSDKAPI551の利用とJSDKプラットフォーム148へのアクセスが可能である点が挙げられる。図1の融合機101には更に、図18のJSDKシステムに係る要素として、C言語とJava登録商標言語のインタフェースとなるJSDKSession553とNativeJSDKSession554や、JSDKアプリ147とJSDKプラットフォーム148を実行するためJava登録商標仮想マシンであるCVM555が存在する。図19は、JSDKシステムの起動処理に関するクラス図である。JSDKシステムの起動処理では先ず、OSGiフレームワーク403が、OSGiアプリ401やOSGiサービス402を構成するバンドルを生成S1する。次に、OSGiフレームワーク403が、JSDKアプリ147やJSDKプラットフォーム148を構成するバンドルを生成S2する。次に、JSDKEnvironment521が、JSDKSession553やNativeJSDKSession554を生成するなど、JSDKシステムの実行環境を反映したJSDKシステムの起動環境設定を実行S3する。次に、JSDKSession553が、SendManager541やEventManager542を生成S4する。なお、ユーザアプリ501の起動処理に関してはSAS411やSASManager511が関与S5する。エミュレータ図20は、本発明の実施例に該当するPCパーソナルコンピュータ701を表す。図20のPC701は、図1の融合機101とネットワーク801で接続されており、図1の融合機101のエミュレータとして機能する。図20のPC701は、PC本体711と、キーボード712と、マウス713と、ディスプレイ714等により構成される。PC本体711には、CPU、ROM、RAM、NVRAM、HDD、MODEM、NIC等が存在する。キーボード712とマウス713は、融合機101のオペレーションパネル202に代わって、オペレータが入力を行うためのハードウェア操作部となる。ディスプレイ714は、融合機101のオペレーションパネル202に代わって、オペレータが出力を得るためのハードウェア表示部となる。図21は、図20のPC701内のJSDKアプリ147とJSDKプラットフォーム148のクラス図である。図1の融合機101と同様のJSDKアプリ147,JSDKプラットフォーム148,OSGiアプリ401,OSGiサービス402,OSGiフレームワーク403が、図20のPC701内にも存在するのである。図1の融合機101内のJSDKアプリ147とJSDKプラットフォーム148のクラス図については、図18を参照されたい。以下、図18と図21の差異について説明する。第1に、図18のSAS411は、図21のSASEmulator611に置換される。第2に、図18のPanelManager544は、図21のPanelManagerEmulator744に置換される。第3に、図18のJSDKSession553は、図21のEmulatorJSDKSession753に置換される。第4に、図18のNativeJSDKSession554は、図21のEventEmulator754に置換される。第5には、図18のCVM555は、図21のJVM755に置換される。SASEmulator611は、他のCSDKアプリ146の制御を行うCSDKアプリ146であり、融合機101内やPC701内のSASManager511を介してJSDKアプリ147の制御図中の矢印Aや矢印Bを行う事もできる。PanelManagerEmulator744は、PanelManager544をエミュレートして、オペレーションパネル202の操作をキーボード712やマウス713の操作に変換するクラスである。EmulatorJSDKSession753は、通信経路の確立処理を実行するクラスである。EventEmulator754は、融合機101の動作をエミュレートするクラスである。JVM755は、JSDKアプリ147,JSDKプラットフォーム148,OSGiアプリ401,OSGiサービス402,OSGiフレームワーク403を実行するためのJava登録商標仮想マシンである。なお、図20のPC701内のJSDKシステムの起動処理に関しては、図19と同様である。また、図20のPC701では図1の融合機101の遠隔操作を行う事ができるのだが、図20のPC701にて図1の融合機101の遠隔操作を行うに際しては、図1の融合機101内のJSDKシステムの起動処理は図22や図23のように実施される。第1に、図19のS3の処理の代わりとして、融合機101内のJSDKEnvironment521が、PC701内のJSDKプラットフォーム148を登録S3する。第2に、図19のS4の処理の代わりとして、融合機101内のOSGiフレームワーク403が、PC701内のServer/ClientManager546を登録S4する。図22では、ユーザアプリ501の起動処理にPC701内のSASEmulator611が関与するため、図22のS4の処理では、融合機101内のOSGiフレームワーク403が、PC701内のSASEmulator611を登録する。図23では、ユーザアプリ501の起動処理に融合機101内のSAS411が関与するため、図23のS4の処理では、融合機101内のOSGiフレームワーク403は、PC701内のSASEmulator611を登録しない。なお、図5から図17による説明事項については、図1の融合機101についてと同様に、図20のPC701についても成り立つ。ただし、SAS411はSASManager611に読み替えるものとする。"