(57)【特許請求の範囲】
【請求項１】
アプリケーションプログラムを実行可能な実行環境を複数有する装置であって、
第一の実行環境で実行される第一のアプリケーションプログラムを制御する第一の制御手段と、
第二の実行環境で実行される第二のアプリケーションプログラムを制御する第二の制御手段とを有し、
前記第一の制御手段は、前記第二のアプリケーションプログラムを、前記第二の制御手段を介して制御可能であり、
前記第一のアプリケーションプログラムと前記第二のアプリケーションプログラムとは異なるプログラミング言語のアプリケーションプログラムである装置。
【請求項２】
それぞれの前記実行環境は、当該実行環境において実行される前記アプリケーションプログラムの起動、起動解除、インストール、アンインストール、又はアップデートを行うことを特徴とする請求項１記載の装置。
【請求項３】
第一の前記実行環境における前記第一の制御手段は、他の前記実行環境における制御手段を介して当該他の実行環境において実行される前記アプリケーションプログラムの起動、起動解除、インストール、アンインストール、又はアップデートを制御することを特徴とする請求項１又は２記載の装置。
【請求項４】
それぞれの前記実行環境は、異なるプロセス空間において実行されることを特徴とする請求項１乃至３いずれか一項記載の装置。
【請求項５】
アプリケーションプログラムを実行可能な実行環境を複数有する装置が実行する情報処理方法であって、
第一の実行環境における第一の制御手段が、第一の実行環境で実行される第一のアプリケーションプログラムを制御する第一の制御手順と、
前記第一の制御手段が、第二の実行環境における第二の制御手段を介して、第二の実行環境で実行される第二のアプリケーションプログラムを制御する第二の制御手順とを有し、
前記第一のアプリケーションプログラムと前記第二のアプリケーションプログラムとは異なるプログラミング言語のアプリケーションプログラムである情報処理方法。
【請求項６】
請求項５記載の情報処理方法をコンピュータに実行させるための情報処理プログラム。
【請求項７】
請求項６記載の情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、装置、情報処理方法、情報処理プログラム、及び記録媒体に関する。
【背景技術】
【０００２】
近年、コピー機能とプリンタ機能とスキャナ機能とファクシミリ機能を備える複合機や融合機が市販されるようになった。複合機や融合機は、コピーやプリンタとして機能する場合には、画像を印刷用紙に印刷することになり、コピーやスキャナとして機能する場合には、画像を読取原稿から読み取ることになり、ファクシミリとして機能する場合には、画像を電話回線を介して他の機器と授受することになる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
さて、複合機や融合機に実装されるアプリケーションと言えば、従来はＣ言語のアプリケーションが主流だったが、近頃はＪａｖａ（登録商標）言語のアプリケーションも登場しつつある。さらに、一言でＪａｖａ（登録商標）言語のアプリケーションと言っても、ＡｐｐｌｅｔやＸｌｅｔやＳｅｒｖｌｅｔやＪＳＰ等の様々な種類のアプリケーションが存在する。ゆえに、これらのアプリケーションの管理を行うプラットフォーム等のアプリケーション管理機構は徐々に複雑化する傾向にある。アプリケーション管理機構の複雑化は機器の性能面から言っても開発の効率面から言ってもあまり好ましくないため、アプリケーション管理機構はなるべく統合的に構成することが望ましい。
【０００４】
本発明は、装置に実装されるアプリケーションの管理を行うアプリケーション管理機構を統合的に構成することを課題とする。
【課題を解決するための手段】
【０００５】
そこで上記課題を解決するため、本発明は、アプリケーションプログラムを実行可能な実行環境を複数有する装置であって、第一の実行環境で実行される第一のアプリケーションプログラムを制御する第一の制御手段を有し、前記第一の制御手段は、第二の実行環境で実行される第二のアプリケーションプログラムをも制御可能であり、前記第一のアプリケーションプログラムと前記第二のアプリケーションプログラムとは異なるプログラミング言語のアプリケーションプログラムである。
【０００６】
このような装置では、装置に実装されるアプリケーションの管理を行うアプリケーション管理機構を統合的に構成することができる。
【発明の効果】
【０００７】
本発明は、装置に実装されるアプリケーションの管理を行うアプリケーション管理機構を統合的に構成することを可能にする。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施例に該当する融合機を表す。
【図２】図１の融合機に係るハードウェア構成図である。
【図３】図１の融合機に係る外観図である。
【図４】オペレーションパネルを表す。
【図５】ＣＳＤＫアプリとＪＳＤＫアプリの管理機構の第一の例を示す図である。
【図６】ＣＳＤＫアプリとＪＳＤＫアプリの管理機構の第二の例を示す図である。
【図７】ＣＳＤＫアプリが存在しない場合のＪＳＤＫアプリの管理機構の例を示す図である。
【図８】タッチパネルに表示される操作画面の画面遷移図である。
【図９】ＪＳＤＫプラットフォーム及びＪＳＤＫアプリの詳細について説明するための図である。
【図１０】ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒによるＸｌｅｔのバンドル化の様子を概念的に示す図である。
【図１１】バンドルの状態遷移図である。
【図１２】Ｘｌｅｔの状態遷移図である。
【図１３】バンドル化されて管理されるＸｌｅｔの状態遷移図である。
【図１４】バンドルのインストール処理及びアンインストール処理を説明するためのシーケンス図である。
【図１５】バンドル化されたＸｌｅｔのインストール処理及びアンインストール処理を説明するためのシーケンス図である。
【図１６】バンドルの起動処理及び起動解除処理を説明するためのシーケンス図である。
【図１７】バンドル化されたＸｌｅｔの起動処理及び起動解除処理を説明するためのシーケンス図である。
【図１８】図１のＪＳＤＫアプリとＪＳＤＫプラットフォームのクラス図である。
【図１９】ＪＳＤＫシステムの起動処理に関するクラス図である。
【図２０】本発明の実施例に該当するＰＣを表す。
【図２１】ＰＣ内のＪＳＤＫアプリとＪＳＤＫプラットフォームのクラス図である。
【図２２】ＪＳＤＫシステムの起動処理に関するクラス図である。
【図２３】ＪＳＤＫシステムの起動処理に関するクラス図である。
【発明を実施するための形態】
【０００９】
図１は、本発明の実施例に該当する融合機１０１を表す。図１の融合機１０１は、種々のハードウェア１１１と、種々のソフトウェア１１２と、融合機起動部１１３により構成される。
【００１０】
融合機１０１のハードウェア１１１としては、撮像部１２１と、印刷部１２２と、その他のハードウェア１２３が存在する。撮像部１２１は、読取原稿から画像（画像データ）を読み取るためのハードウェアである。印刷部１２２は、画像（画像データ）を印刷用紙に印刷するためのハードウェアである。
【００１１】
融合機１０１のソフトウェア１１２としては、種々のアプリケーション１３１と、種々のプラットフォーム１３２が存在する。これらのプログラムは、ＵＮＩＸ（登録商標）等のＯＳ（オペレーティングシステム）によりプロセス単位で並列的に実行される。
【００１２】
アプリケーション１３１としては、コピー用のアプリケーションであるコピーアプリ１４１、プリンタ用のアプリケーションであるプリンタアプリ１４２、スキャナ用のアプリケーションであるスキャナアプリ１４３、ファクシミリ用のアプリケーションであるファクシミリアプリ１４４、ネットワークファイル用のアプリケーションであるネットワークファイルアプリ１４５が存在する。
【００１３】
アプリケーション１３１は、専用のＳＤＫ（ソフトウェア開発キット）を使用して開発することができる。ＳＤＫを使用して開発したアプリケーション１３１をＳＤＫアプリと呼ぶ。専用のＳＤＫとしては、Ｃ言語でアプリケーション１３１を開発するための「ＣＳＤＫ」や、Ｊａｖａ（登録商標）言語でアプリケーション１３１を開発するための「ＪＳＤＫ」が提供される。ＣＳＤＫを使用して開発したアプリケーション１３１を「ＣＳＤＫアプリ」と呼び、ＪＳＤＫを使用して開発したアプリケーション１３１を「ＪＳＤＫアプリ」と呼ぶ。図１の融合機１０１にも、ＣＳＤＫアプリ１４６と、ＪＳＤＫアプリ１４７が存在する。図１の融合機１０１にはさらに、Ｊａｖａ（登録商標）言語で記述されたＪＳＤＫアプリ１４７とＣ言語で記述された他のソフトウェア１１２との仲介を行うソフトウェア１１２として、ＪＳＤＫプラットフォーム１４８が存在する。すなわち、融合機１０１は、Ｃ言語で実装されたＣＳＤＫアプリの実行環境やＪａｖａ（登録商標）言語で実装されたＪＳＤＫアプリの実行環境等、複数のアプリ実行環境を有する。なお、ＪＳＤＫアプリの実行環境の具体例としては、ＪＳＤＫプラットフォーム１４８が相当する。
【００１４】
プラットフォーム１３２としては、種々のコントロールサービス１５１、システムリソースマネージャ１５２、種々のハンドラ１５３が存在する。コントロールサービス１５１としては、ネットワークコントロールサービス（ＮＣＳ）１６１、ファクシミリコントロールサービス（ＦＣＳ）１６２、デリバリコントロールサービス（ＤＣＳ）１６３、エンジンコントロールサービス（ＥＣＳ）１６４、メモリコントロールサービス（ＭＣＳ）１６５、オペレーションパネルコントロールサービス（ＯＣＳ）１６６、サーティフィケーションコントロールサービス（ＣＣＳ）１６７、ユーザディレクトリコントロールサービス（ＵＣＳ）１６８、システムコントロールサービス（ＳＣＳ）１６９が存在する。ハンドラ１５３としては、ファクシミリコントロールユニットハンドラ（ＦＣＵＨ）１７１、イメージメモリハンドラ（ＩＭＨ）１７２が存在する。
【００１５】
ＮＣＳ１６１のプロセスは、ネットワーク通信の仲介を行う。ＦＣＳ１６２のプロセスは、ファクシミリのＡＰＩを提供する。ＤＣＳ１６３のプロセスは、蓄積文書の配信処理に関する制御を行う。ＥＣＳ１６４のプロセスは、撮像部１２１や印刷部１２２に関する制御を行う。ＭＣＳ１６５のプロセスは、メモリやハードディスクドライブに関する制御を行う。ＯＣＳ１６６のプロセスは、オペレーションパネルに関する制御を行う。ＣＣＳ１６７のプロセスは、認証処理や課金処理に関する制御を行う。ＵＣＳ１６８のプロセスは、ユーザ情報の管理に関する制御を行う。ＳＣＳ１６９のプロセスは、システムの管理に関する制御を行う。
【００１６】
アプリケーション１３１とプラットフォーム１３２の仲介を行うソフトウェア１１２として、仮想アプリケーションサービス（ＶＡＳ）１３５が存在する。ＶＡＳ１３５は、アプリケーション１３１をクライアントとするサーバプロセスとして動作すると共に、プラットフォーム１３２をサーバとするクライアントプロセスとして動作する。ＶＡＳ１３５は、アプリケーション１３１から見てプラットフォーム１３２を隠蔽するラッピング機能を備え、プラットフォーム１３２のバージョンアップに伴うバージョン差を吸収する役割等を担う。
【００１７】
融合機起動部１１３は、融合機１０１の電源投入時に最初に実行される。これにより、ＵＮＩＸ（登録商標）等のＯＳが起動され、アプリケーション１３１やプラットフォーム１３２が起動される。これらのプログラムは、ハードディスクドライブやメモリカードに蓄積されており、ハードディスクドライブやメモリカードから再生されて、メモリに起動されることになる。
【００１８】
図２は、図１の融合機１０１に係るハードウェア構成図である。融合機１０１のハードウェア１１１としては、コントローラ２０１と、オペレーションパネル２０２と、ファクシミリコントロールユニット（ＦＣＵ）２０３と、撮像部１２１と、印刷部１２２が存在する。
【００１９】
コントローラ２０１は、ＣＰＵ２１１、ＡＳＩＣ２１２、ＮＢ２２１、ＳＢ２２２、ＭＥＭ−Ｐ２３１、ＭＥＭ−Ｃ２３２、ＨＤＤ（ハードディスクドライブ）２３３、メモリカードスロット２３４、ＮＩＣ（ネットワークインタフェースコントローラ）２４１、ＵＳＢデバイス２４２、ＩＥＥＥ１３９４デバイス２４３、セントロニクスデバイス２４４により構成される。
【００２０】
ＣＰＵ２１１は、種々の情報処理用のＩＣである。ＡＳＩＣ２１２は、種々の画像処理用のＩＣである。ＮＢ２２１は、コントローラ２０１のノースブリッジである。ＳＢ２２２は、コントローラ２０１のサウスブリッジである。ＭＥＭ−Ｐ２３１は、融合機１０１のシステムメモリである。ＭＥＭ−Ｃ２３２は、融合機１０１のローカルメモリである。ＨＤＤ２３３は、融合機１０１のストレージである。メモリカードスロット２３４は、メモリカード２３５をセットするためのスロットである。ＮＩＣ２４１は、ＭＡＣアドレスによるネットワーク通信用のコントローラである。ＵＳＢデバイス２４２は、ＵＳＢ規格の接続端子を提供するためのデバイスである。ＩＥＥＥ１３９４デバイス２４３は、ＩＥＥＥ１３９４規格の接続端子を提供するためのデバイスである。セントロニクスデバイス２４４は、セントロニクス仕様の接続端子を提供するためのデバイスである。
【００２１】
オペレーションパネル２０２は、オペレータが融合機１０１に入力を行うためのハードウェア（操作部）であると共に、オペレータが融合機１０１から出力を得るためのハードウェア（表示部）である。
【００２２】
図３は、図１の融合機１０１に係る外観図である。図３には、撮像部１２１の位置と、印刷部１２２の位置と、オペレーションパネル２０２の位置が図示されている。図３には更に、読取原稿のセット先となる原稿セット部３０１と、印刷用紙の給紙先となる給紙部３０２と、印刷用紙の排紙先となる排紙部３０３が図示されている。
【００２３】
オペレーションパネル２０２は、図４のように、タッチパネル３１１と、テンキー３１２と、スタートボタン３１３と、リセットボタン３１４と、機能キー３１５と、初期設定ボタン３１６により構成される。タッチパネル３１１は、タッチ操作で入力を行うためのハードウェア（タッチ操作部）であると共に、画面表示で出力を得るためのハードウェア（画面表示部）である。テンキー３１２は、キー（ボタン）操作で数字入力を行うためのハードウェアである。スタートボタン３１３は、ボタン操作でスタート操作を行うためのハードウェアである。リセットボタン３１４は、ボタン操作でリセット操作を行うためのハードウェアである。機能キー３１５は、キー（ボタン）操作でＣＳＤＫアプリ１４６やＪＳＤＫアプリ１４７による操作画面を表示させるためのハードウェアである。初期設定ボタン３１６は、ボタン操作で初期設定画面を表示させるためのハードウェアである。
【００２４】
原稿セット部３０１は、ＡＤＦ（自動原稿搬送装置）３２１と、フラットベッド３２２と、フラットベッドカバー３２３により構成される。給紙部３０２は、４個の給紙トレイにより構成される。排紙部３０３は、１個の排紙トレイにより構成される。
【００２５】
（ＣＳＤＫとＪＳＤＫ）
図５は、ＣＳＤＫアプリとＪＳＤＫアプリの管理機構の第一の例を示す図である。ＣＳＤＫアプリ１４６は、Ｃ言語のアプリケーションであり、それぞれプロセスとして実行される事になる。ＪＳＤＫアプリ１４７は、Ｊａｖａ（登録商標）言語のアプリケーションであり、それぞれスレッドとして実行される事になる。
【００２６】
図１の融合機１０１には、ＣＳＤＫアプリ１４６として、他のＣＳＤＫアプリ１４６の制御を行うＳＡＳ（ＳＤＫアプリケーションサービス）４１１が存在し、ＪＳＤＫアプリ１４７として、他のＪＳＤＫアプリ１４７の制御を行うＳＡＳ  Ｍａｎａｇｅｒ（ＳＤＫアプリケーションサービスマネージャ）５１１が存在する。ＳＡＳ４１１とＳＡＳ  Ｍａｎａｇｅｒ５１１はそれぞれ、ＣＳＤＫアプリ１４６とＪＳＤＫアプリ１４７の起動制御，起動解除（停止も含む）制御，インストール制御，アンインストール制御，アップデート制御等を行う。このように、ＣＳＤＫアプリ１４６とＪＳＤＫアプリ１４７とによってそれぞれ管理機構体が異なるのは、それぞれのアプリケーションの開発言語が異なる点がその理由の一つとして挙げられる。例えば、ＳＡＳ４１１によって、ＪＳＤＫアプリ１４７の制御を直接行おうとすると、Ｃ言語のソースコードの中からＪａｖａ（登録商標）言語によるインタフェースを呼び出さなければならず、高度なプログラミング技術が必要とされるとともに、その処理内容が煩雑となるからである。また、ＣＳＤＫアプリ１４６の方はプロセスとして実行され、ＪＳＤＫアプリ１４７の方はスレッドとして実行されるといったように、両者の実行形態が異なる点を考慮しても、ＣＳＤＫアプリ１４６用のアプリケーション管理機構とＪＳＤＫアプリ１４７用のアプリケーション管理機構とを別個に設けた方が、管理機構の単純化といった観点から有利であると考える。
【００２７】
但し、ＳＡＳ４１１は、ＣＳＤＫアプリ１４６の制御を行う事ができるだけではなく、ＳＡＳ  Ｍａｎａｇｅｒ５１１を介してＪＳＤＫアプリ１４７の制御を行う事もできる。ＳＡＳ４１１は、ＣＳＤＫアプリ１４６については直接的にその制御を行う事ができると共に、ＪＳＤＫアプリ１４７についてはＳＡＳ  Ｍａｎａｇｅｒ５１１を介して間接的にその制御を行う事ができるのである。このように、ＣＳＤＫアプリ１４６用のアプリケーション管理機構とＪＳＤＫアプリ１４７用のアプリケーション管理機構は、ＳＡＳ  Ｍａｎａｇｅｒ５１１を制御できる機能をＳＡＳ４１１に具備させると言う形で統合的に構成されている。なお、ＳＡＳ４１１とＳＡＳ  Ｍａｎａｇｅｒ５１１とのやり取りは、ＨＴＴＰ（HyperText Transfer Protocol）やＳＯＡＰ（Simple Object Access Protocol）等、開発言語の別を問わず簡便に利用できるプロトコルを用いるとよい。そうすることによって、Ｃ言語のソースコードの中からＪａｖａ（登録商標）言語によるインタフェースを呼び出す必要がなくなり、処理内容の煩雑さの問題が解消される。また、融合機１０１のソフトウェアの根幹部分がＣ言語によることも、ＳＤＫアプリを制御する機能を同じくＣ言語によるＳＡＳ４１１に集中しておくのが好適である理由の一つであるといえる。
【００２８】
また、図６は、ＣＳＤＫアプリとＪＳＤＫアプリの管理機構の第二の例を示す図である。図６中、図５と同一部分には同一符号を付し、その説明は省略する。図６ではＪＳＤＫプラットフォーム１４８が複数存在する例が示されている。このような場合、ＪＳＤＫプラッとフォーム１４８ごとにＳＡＳ  Ｍａｎａｇｅｒ５１１が設けられる。したがって、ＳＡＳ４１１は、各ＪＳＤＫプラットフォーム１４８のＳＡＳ  Ｍａｎａｇｅｒ５１１を介して、それぞれのＪＳＤＫプラットフォーム１４８上のＪＳＤＫアプリ１４７の制御を行う。したがって、この場合もＳＤＫアプリの管理機構はＳＡＳ４１１に統合されている。
【００２９】
更に、図７は、ＣＳＤＫアプリが存在しない場合のＪＳＤＫアプリの管理機構の例を示す図である。図７中、図５又は図６と同一部分には同一符号を付し、その説明は省略する。すなわち、図７では、ＣＳＤＫアプリは存在せず、複数のＪＳＤＫプラットフォーム１４８が存在する場合に、各プラットフォーム上のＪＳＤＫアプリの制御を統合的に管理するための機構が示されている。この場合、複数のＪＳＤＫプラットフォーム１４８のうちのいずれか一つのＪＳＤＫプラットフォーム１４８上で動作するＳＡＳ  Ｍａｎａｇｅｒ５１１が、他のＪＳＤＫプラットフォーム１４８上のＳＡＳ  Ｍａｎａｇｅｒ５１１を介して、当該他のＪＳＤＫプラットフォーム１４８上のＪＳＤＫアプリ１４７の制御を統合的に行えばよい。
【００３０】
図８は、タッチパネル３１１（図４参照）に表示される操作画面の画面遷移図である。図８Ａの操作画面で機能キー３１５（図４参照）を押下すると、図８Ｂの操作画面に遷移する。図８Ｂの操作画面は、ＣＳＤＫアプリ１４６とＪＳＤＫアプリ１４７を操作対象とする操作画面である。図８Ｂの操作画面で「ＣＳＤＫアプリ１，２，３」のどれかを指定すると、図８Ｃの操作画面に遷移する。図８Ｃの操作画面は、指定されたＣＳＤＫアプリ１４６による操作画面である。一方、図８Ｂの操作画面で「ＪＳＤＫアプリ」を指定すると、図８Ｄの操作画面に遷移する。図８Ｄの操作画面は、スレッドとして実行されているＪＳＤＫアプリ１４７を操作対象とする操作画面である。図８Ｄから図８Ｅへの画面遷移が表示画面を占有するＪＳＤＫアプリ１４７の「切替」として実施されるので、実行中のＪＳＤＫアプリ１４７のみが図８Ｄの操作画面の表示対象となり、実行中でないＪＳＤＫアプリ１４７は図８Ｄの操作画面の表示対象とならない。図８Ｄの操作画面で「ＪＳＤＫアプリ１，２，３，４，５，６」のどれかを指定すると、図８Ｅの操作画面に遷移する。図８Ｅの操作画面は、指定されたＪＳＤＫアプリ１４７による操作画面である。
【００３１】
図８Ｂの操作画面を表示する機能や、図８Ｂ，Ｃ，Ｄの操作画面に画面を遷移する機能は、ＳＣＳ１６９（図１参照）が受け持つ。図８Ｄの操作画面を表示する機能や、図８Ｅの操作画面に画面を遷移する機能は、Ｓｃｒｅｅｎ  Ｍａｎａｇｅｒ５１２（図１１参照）が受け持つ。あるＣＳＤＫアプリ１４６やＪＳＤＫアプリ１４７を図８Ｂや図８Ｄの操作画面の表示対象とするには、そのＣＳＤＫアプリ１４６やＪＳＤＫアプリ１４７をインストール操作画面でのインストール操作をもってインストールしておく必要がある。必要がある場合には、起動画面での起動操作をもって起動しておく必要もある。そして、インストール操作画面でのインストール操作や起動画面での起動操作に呼応してＣＳＤＫアプリ１４６やＪＳＤＫアプリ１４７のインストール制御や起動制御を行うのが、ＳＡＳ４１１やＳＡＳ  Ｍａｎａｇｅｒ５１１である。ＣＳＤＫアプリ１４６やＪＳＤＫアプリ１４７のアンインストール制御や起動解除制御についても同様である。
【００３２】
（ＯＳＧｉ）
図９は、ＪＳＤＫプラットフォーム及びＪＳＤＫアプリの詳細について説明するための図である。本実施の形態におけるＪＳＤＫプラットフォーム１４８は、ＯＳＧｉ（Ｏｐｅｎ  Ｓｅｒｖｉｃｅ  Ｇａｔｅｗａｙ  ｉｎｉｔｉａｔｉｖｅ）サービスプラットフォームに準拠している。ＯＳＧｉサービスプラットフォームは、ＯＳＧｉアライアンスによる標準化技術であり、Ｊａｖａ（登録商標）言語に基づいたオープンなソフトウェア部品化技術である。ＯＳＧｉサービスプラットフォームが実装された機器では、Ｊａｖａ（登録商標）言語のソフトウェアは「バンドル（Ｂｕｎｄｌｅ）」と言うソフトウェア部品の形で実装される。そして、該機器の諸機能はバンドルをもって構成する事ができると共に、該機器の諸機能のアップデートやカスタマイズやメンテナンスはバンドルのダウンロードをもって実現する事ができる。
【００３３】
図９において、ＯＳＧｉフレームワーク４０３及びＯＳＧｉサービス４０２は、ＪＳＤＫプラットフォーム１４８をＯＳＧｉプラットフォームとして機能させるためのものである。ＯＳＧｉフレームワーク４０３は、バンドルの管理及び制御（バンドルのライフサイクルやデータの管理等）を行う。ＯＳＧｉサービス４０２は、バンドルに対して各種のサービスを提供するライブラリ群である。
【００３４】
このように、ＪＳＤＫプラットフォーム１４８は、ＯＳＧｉサービスプラットフォームとして機能するため、その上で動作するアプリケーション（すなわちＪＳＤＫアプリ１４７）は、バンドルとして実装されうる。図中においても、ＪＳＤＫアプリ１４７の一部がバンドル４０７として実装されている様子が示されている。ＯＳＧｉサービスプラットフォームにおいて、各バンドルにはＢｕｎｄｌｅ  Ａｃｔｉｖａｔｏｒ４０７１が実装されることになっている。Ｂｕｎｄｌｅ  Ａｃｔｉｖａｔｏｒ４０７１は、ＯＳＧｉフレームワーク４０３にバンドルを管理及び制御させるためのインフェースを提供する。すなわち、ＯＳＧｉフレームワーク４０３は、各バンドルのＢｕｎｄｌｅ  Ａｃｔｉｖａｔｏｒ４０７１を呼び出すことにより、当該バンドルの管理及び制御を行う。なお、本実施の形態においてバンドル４０７を総称する場合、ＯＳＧｉアプリ４０１という。
【００３５】
更に、本実施の形態における融合機１０１は、ＪＳＤＫアプリ１４７として、バンドル以外のアプリケーションの実行も可能とされている。本実施の形態では、かかるアプリケーションとしてＸｌｅｔ４０６を採用した例を示す。図中のＪＳＤＫプラットフォーム１４８において、ＪＳＤＫシステムサービス４０５は、Ｘｌｅｔ４０６に対して各種サービスを提供するものである。ＪＳＤＫシステムサービス４０５には、ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４、ＭｕｌｔｉＸｌｅｔＭａｎａｇｅｒ５３２、ＩｎｓｔａｌｌＭａｎａｇｅｒ５４５等のクラスが含まれる。
【００３６】
ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４は、ＯＳＧｉフレームワーク４０３に対して、Ｘｌｅｔ４０６をバンドルとして見せるためのモジュールである。ＭｕｌｔｉＸｌｅｔＭａｎａｇｅｒ５３２は、各Ｘｌｅｔ４０６のライフサイクル等を管理する。ＩｎｓｔａｌｌＭａｎａｇｅｒ５４５は、Ｘｌｅｔ４０６について、ＳＤｃａｒｄやＷｅｂからのインストールやアンインストールの管理を行う。
【００３７】
なお、ＣＶＭ５５５は、Ｊａｖａ（登録商標）の実行環境を実現する仮想マシンである。
【００３８】
ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４について更に詳しく説明する。Ｘｌｅｔ４０６は、バンドルとして実装されていないため、そのままではＯＳＧｉフレームワーク４０３によって管理等することができない。そうすると、ＪＳＤＫアプリ１４７において、バンドル４０７として実装されたアプリケーションとＸｌｅｔ４０６として実装されたアプリケーションとの管理機構を別個に設けなければならず、ＪＳＤＫプラットフォーム１４８の構成が複雑化してしまう。したがって、ＯＳＧｉフレーム４０３によって全てのＪＳＤＫアプリ１４７の管理等が一元的に行われることが望まれる。そこで、ＯＳＧｉフレームワーク４０３が、Ｘｌｅｔ４０６をバンドル４０７と同様のインタフェースによって管理できるようＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４が設けられている。具体的には、ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４は、それぞれのバンドル４０７に実装されているＢｕｎｄｅｌ  Ａｃｔｉｖａｔｏｒと同様のインタフェースをＯＳＧｉフレームワーク４０４に対して提供する。ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４は、ＯＳＧｉフレームワーク４０３による当該インタフェーの呼び出しに応じ、Ｘｌｅｔ４０６において当該インタフェースに対応したインタフェースを呼び出す。すなわち、ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４は、ＯＳＧｉフレームワーク４０３が解釈可能なインタフェースと、Ｘｌｅｔ４０６が解釈可能なインタフェースとの仲介を行うことにより、Ｘｌｅｔ４０６のライフサイクル管理等の仲介を行うのである。このように、ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４によって、バンドルであるかＸｌｅｔであるかを問わず、ＯＳＧｉフレームワーク４０３によるＪＳＤＫアプリ１４７の管理の一元化が実現されている。
【００３９】
図１０は、ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒによるＸｌｅｔのバンドル化の様子を概念的に示す図である。ここで、「バンドル化」とは、ＯＳＧｉフレームワーク４０３から見て、Ｘｌｅｔ４０６がバンドル４０７と同様の制御方法によって制御可能なように構成されることをいう。
【００４０】
ＯＳＧｉサービスプラットフォームにおいて、ＯＳＧｉフレームワークは、バンドルを起動する際、当該バンドルのＢｕｎｄｌｅ  Ａｃｔｉｖａｔｏｒに実装されているｓｔａｒｔ（）メソッドを呼び出す。また、バンドルを起動解除させる際、当該バンドルのＢｕｎｄｌｅ  Ａｃｔｉｖａｔｏｒに実装されているｓｔｏｐ（）メソッドを呼び出す。
【００４１】
一方、Ｘｌｅｔは、起動及び起動解除を含むライフサイクルを制御するためのメソッドとして、ｉｎｉｔＸｌｅｔ（）、ｓｔａｒｔＸｌｅｔ（）、ｐａｕｓｅＸｌｅｔ（）、及びｄｅｓｔｒｏｙＸｌｅｔ（）等が実装される。
【００４２】
図１０では、このようなインタフェースの相違が、ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４によって吸収されている様子が示されている。すなわち、ＯＳＧｉフレームワーク４０３は、ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４のｓｔａｒｔ（）やｓｔｏｐ（）を呼び出すことで、Ｘｌｅｔ４０６の起動又は起動解除を要求する。ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４は、これらのメソッドの呼び出しに応じ、Ｘｌｅｔ４０６のｉｎｉｔＸｌｅｔ（）、ｓｔａｒｔＸｌｅｔ（）、ｐａｕｓｅＸｌｅｔ（）、及びｄｅｓｔｒｏｙＸｌｅｔ（）等を呼び出すことにより、Ｘｌｅｔ４０６の起動又は起動解除を実現する。したがって、ＯＳＧｉフレームワーク４０３は、ＪＳＤＫアプリ１４７が、Ｘｌｅｔ４０６として実装されているか又はバンドル４０７として実装されているかを意識することなく、各ＪＳＤＫアプリ１４７を管理することができる。
【００４３】
このようにＪＳＤＫプラットフォーム１４８においてＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４が実装されているといった構成は、ＪＳＤＫアプリ１４７のベンダにとって特に便宜である。例えば、既存のＸｌｅｔ４０６によるＪＳＤＫアプリ１４７に対して何の変更もせずに、当該Ｘｌｅｔ４０６によるＪＳＤＫアプリ１４７をＯＳＧｉフレームワーク４０３の上で動作させることができるからである。
【００４４】
ところで、バンドルとＸｌｅｔとの状態遷移は異なっており、その相違が両者のインタフェースの相違にも現れている。したがって、かかる状態遷移の整合性が図られてこそ、Ｘｌｅｔのバンドル化が実現されるといえる。本実施の形態において、両者の状態遷移の整合性がどのように図られているか、以下に説明する。
【００４５】
図１１は、バンドルの状態遷移図である。
【００４６】
バンドルの状態には、インストール状態（ＩＮＳＴＡＬＬＥＤ）や、アンインストール状態（ＵＮＩＮＳＴＡＬＬＥＤ）や、有効状態（ＡＣＴＩＶＥ）や、無効状態（ＲＥＳＯＬＶＥＤ）や、起動処理中状態（ＳＴＡＲＴＩＮＧ）や、起動解除処理中状態（ＳＴＯＰＰＩＮＧ）等が存在する。バンドルの状態は、インストール（ｉｎｓｔａｌｌ）や、アンインストール（ｕｎｉｎｓｔａｌｌ）や、アップデート（ｕｐｄａｔｅ）や、起動（ｓｔａｒｔ）や、起動解除（ｓｔｏｐ）等により遷移する。バンドルのライフサイクルとは、このようなバンドルの状態遷移にほかならない。バンドルのライフサイクルは、ＯＳＧｉフレームワーク４０３により管理される。
【００４７】
インストール状態は、バンドルのインストールの直後の状態である。アンインストール状態は、バンドルのアンインストールの直後の状態である。有効状態は、バンドルが起動中の状態である。無効状態は、バンドルが起動解除中の状態である。起動処理中状態は、バンドルの起動処理を実行中の状態である。起動解除処理中状態は、バンドルの起動解除処理を実行中の状態である。
【００４８】
図１２は、Ｘｌｅｔの状態遷移図である。
【００４９】
Ｘｌｅｔの状態には、初期化状態（Ｌｏａｄｅｄ）や、停止状態（Ｐａｕｓｅｄ）や、活性化状態（Ａｃｔｉｖｅ）や、終了状態（Ｄｅｓｔｒｏｙｅｄ）が存在する。Ｘｌｅｔの状態は、起動（ｉｎｉｔＸｌｅｔ）や、開始（ｓｔａｒｔＸｌｅｔ）や、停止（ｐａｕｓｅＸｌｅｔ）や、終了（ｄｅｓｔｒｏｙＸｌｅｔ）により遷移する。Ｘｌｅｔのライフサイクルとは、このようなＸｌｅｔの状態遷移にほかならない。ＸｌｅｔであるＪＳＤＫアプリ１４７のライフサイクルは、ＪＳＤＫプラットフォーム１４８により管理される。
【００５０】
初期化状態は、Ｘｌｅｔインスタンスの生成直後の状態である。停止状態は、サービス提供停止中の状態である。活性化状態は、サービス提供中の状態である。終了状態は、Ｘｌｅｔインスタンスの消滅直後の状態である。初期化状態や終了状態への遷移は１度だけ可能であり、停止状態と活性化状態との間の遷移は何度でも可能である。
【００５１】
図１３は、バンドル化されて管理されるＸｌｅｔの状態遷移図である。
【００５２】
Ｘｌｅｔがバンドル化されて管理される場合には、Ｘｌｅｔの初期化状態，停止状態，活性化状態，終了状態はバンドルの有効状態に入る事になる。即ち、バンドルの有効状態として、Ｘｌｅｔの初期化状態，停止状態，活性化状態，終了状態が存在する事になる。このように、Ｘｌｅｔ４０６の状態遷移をバンドルの状態遷移にマッピングすることで、ＯＳＧｉフレームワーク４０３上において、Ｘｌｅｔ４０６は、バンドル４０７と同様の状態遷移を実現する。
【００５３】
次に、ＯＳＧｉフレームワーク４０３上において、Ｘｌｅｔ４０６とバンドル４０１とのインストール及びアンインストール処理、並びに起動及び起動解除処理が、どのように整合性がとられているかについてシーケンス図を用いて説明する。
【００５４】
まず、インストール及びアンインストール処理について説明する。図１４は、バンドルのインストール処理及びアンインストール処理を説明するためのシーケンス図である。
【００５５】
ＳＡＳ４１１が、タッチパネル３１１に表示させている操作画面を介して、ＪＳＤＫアプリ１４７のインストールの指示をユーザより受け付けると、ＳＡＳ４１１は、ＳＡＳＭａｎａｇｅｒ５１１にインストールの実行を要求する（Ｓ１１）。ＪＳＤＫアプリ１４７のインストールはＳＡＳＭａｎａｇｅｒ５１１によって制御されるからである。ＳＡＳＭａｎａｇｅｒ５１１は、操作画面において選択されているインストール元（例えば、ＷｅｂサイトやＳＤカード等）よりインストール可能なＪＳＤＫアプリ１４７を検索するようＩｎｓｔａｌｌＭａｎａｇｅｒ５４５に要求する（Ｓ１２）。ＩｎｓｔａｌｌＭａｎａｇｅｒ５４５は、当該インストール可能なＪＳＤＫアプリ１４７を検索し、検索結果をＳＡＳＭａｎａｇｅｒ５１１に返却する（Ｓ１３）。ＳＡＳＭａｎａｇｅｒ５１１は、検索結果として取得されたＪＳＤＫアプリ１４７の一覧の中からユーザによって選択されたＪＳＤＫアプリ１４７がバンドル４０７として実装されたものである場合は、当該バンドル４０７のインストールをＯＳＧｉフレームワーク４０３に要求する（Ｓ１４）。ＯＳＧｉフレームワーク４０３は、インストール対象とされたバンドル４０７のＢｕｎｄｌｅ  Ａｃｔｉｖａｔｏｒ４０７１に対してインストールを要求する（Ｓ１５）。その要求に基づいて、バンドル４０７は融合機１０１にインストールされる。
【００５６】
一方、ＳＡＳ４１１が、タッチパネル３１１に表示させている操作画面を介して、ＪＳＤＫアプリ１４７のアンインストールの指示をユーザより受け付けると、ＳＡＳ４１１は、ＳＡＳＭａｎａｇｅｒ５１１にアンインストールの実行を要求する（Ｓ２１）。ＳＡＳＭａｎａｇｅｒ５１１は、融合機１０１にインストールされているＪＳＤＫアプリ１４７の検索をＩｎｓｔａｌｌＭａｎａｇｅｒ５４５に要求する（Ｓ２２）。ＩｎｓｔａｌｌＭａｎａｇｅｒ５４５は、インストールされているＪＳＤＫアプリ１４７を検索し、検索結果をＳＡＳＭａｎａｇｅｒ５１１に返却する（Ｓ２３）。ＳＡＳＭａｎａｇｅｒ５１１は、検索結果として取得されたＪＳＤＫアプリ１４７の一覧の中からユーザによって選択されたＪＳＤＫアプリ１４７がバンドル４０７である場合は、当該バンドル４０７のアンインストールをＯＳＧｉフレームワーク４０３に要求する（Ｓ２４）。ＯＳＧｉフレームワーク４０３は、アンインストールの対象とされたバンドル４０７のＢｕｎｄｌｅ  Ａｃｔｉｖａｔｏｒ４０７１に対してアンインストールを要求する（Ｓ２５）。その要求に基づいて、バンドル４０７は融合機１０１からアンインストールされる。
【００５７】
また、図１５は、バンドル化されたＸｌｅｔのインストール処理及びアンインストール処理を説明するためのシーケンス図である。図１５において、ステップＳ３１〜Ｓ３３は、図１４におけるステップＳ１１〜Ｓ２３と同様であるためここでの説明は省略する。
【００５８】
ＳＡＳＭａｎａｇｅｒ５１１は、検索結果として取得されたＪＳＤＫアプリ１４７の一覧の中からユーザによって選択されたＪＳＤＫアプリ１４７がＸｌｅｔ４０６として実装されたものである場合は、当該Ｘｌｅｔ４０６のインストールをＩｎｓｔａｌｌＭａｎａｇｅｒ５４５に要求する（Ｓ３４）。ＩｎｓｔａｌｌＭａｎａｇｅｒ５４５は、ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４のクラスファイルをコピーすることにより、インストール対象とされたＸｌｅｔ４０６に対するＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４を生成する（Ｓ３５、Ｓ３６）。すなわち、ＸｌｅｔＢｕｎｌｅＡｃｔｉｖａｔｏｒ４０４のクラスファイルは、Ｘｌｅｔ４０６ごとに必要とされるが、その実装内容は共通のものでよいため、予め用意されているクラスファイルを単にコピーすることでインストール対象とされたＸｌｅｔ４０６に対するＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４が生成されるのである。続いて、ＩｎｓｔａｌｌＭａｎａｇｅｒ５４５は、Ｘｌｅｔ４０６を融合機１０１にインストールする（Ｓ３７）。Ｘｌｅｔ４０６のインストールが正常に行われると、ＳＡＳＭａｎａｇｅｒ５１１は、ＯＳＧｉフレームワーク４０３に、バンドル化されたＸｌｅｔ４０６のインストールを要求する（Ｓ３８）。この呼び出しは、図１４におけるステップＳ１４に相当する。この場合、ＯＳＧｉフレームワーク４０３は、インストール対象がＸｌｅｔ４０６であることは関知しない。したがって、バンドル４０７のインストールが要求された場合と同様の処理を実行する。ここでは、ＯＳＧｉフレームワーク４０３には、ＸｌｅｔＢｕｎｌｄｌｅＡｃｔｉｖａｔｏｒ４０４が、図１４におけるＢｕｎｄｌｅ  Ａｃｔｉｖａｔｏｒ４０７１と同様に見えている。したがって、ＯＳＧｉフレームワーク４０３は、ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４に対してインストールを要求する（Ｓ３９）。但し、Ｘｌｅｔ４０６は既にインストールされているため、ここではＸｌｅｔ４０６ではなくＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４がインストールされる。
【００５９】
図１５において、ステップＳ４１以降は、Ｘｌｅｔ４０６のアンインストール処理を示すものである。ステップＳ４１〜Ｓ４３は、図１４におけるステップＳ２１〜Ｓ２３と同様であるためここでの説明は省略する。ＳＡＳＭａｎａｇｅｒ５１１は、検索結果として取得されたＪＳＤＫアプリ１４７の一覧の中からユーザによって選択されたＪＳＤＫアプリ１４７がＸｌｅｔ４０６である場合は、当該Ｘｌｅｔ４０６のアンインストールをＩｎｓｔａｌｌＭａｎａｇｅｒ５４５に要求する（Ｓ４４）。ＩｎｓｔａｌｌＭａｎｇｅｒ５４５は、アンインストールの対象とされたＸｌｅｔ４０６をアンインストールする（Ｓ４５）。Ｘｌｅｔ４０６のアンインストールが正常に行われると、ＳＡＳＭａｎａｇｅｒ５１１は、ＯＳＧｉフレームワーク４０３に、バンドル化されたＸｌｅｔ４０６のアンインストールを要求する（Ｓ４６）。この呼び出しは、図１４におけるステップＳ２４に相当する。この場合、ＯＳＧｉフレームワーク４０３は、アンインストール対象がＸｌｅｔ４０６であることは関知しない。したがって、バンドル４０７のアンインストールが要求された場合と同様の処理を実行する。ここでは、ＯＳＧｉフレームワーク４０３には、ＸｌｅｔＢｕｎｌｄｌｅＡｃｔｉｖａｔｏｒ４０４が図１４におけるＢｕｎｄｌｅ  Ａｃｔｉｖａｔｏｒ４０７１と同様に見えている。したがって、ＯＳＧｉフレームワーク４０３は、ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４に対してアンインストールを要求する（Ｓ４７）。但し、Ｘｌｅｔ４０６は既にアンインストールされているため、ここではＸｌｅｔ４０６ではなくＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４がアンインストールされる。
【００６０】
このように、本実施の形態における融合機１０１では、ＯＳＧｉフレームワーク４０３から見て、バンドル４０７とＸｌｅｔ４０６のインストール及びアンインストール処理が同様の手順によって行われる。すなわち、図１４におけるＯＳＧｉフレームワーク４０３に対する呼び出し（Ｓ１４、Ｓ２４）と、図１５におけるＯＳＧｉフレームワーク４０３に対する呼び出し（Ｓ３８、Ｓ４６）とは整合性がとられている。また、図１４におけるＯＳＧｉフレームワーク４０３による呼び出し（Ｓ１５、Ｓ２５）と、図１５におけるＯＳＧｉフレームワーク４０３による呼び出し（Ｓ３９、Ｓ４７）とは整合性がとられている。したがって、ＯＳＧｉフレームワーク４０３は、バンドル４０７とＸｌｅｔ４０６との違いを意識することなく、そのインストール及びアンインストールを実現しているといえる。
【００６１】
次に、起動及び起動解除処理について説明する。図１６は、バンドルの起動処理及び起動解除処理を説明するためのシーケンス図である。
【００６２】
ＳＡＳ４１１が、タッチパネル３１１に表示させている操作画面を介して、ＪＳＤＫアプリ１４７の起動の指示をユーザより受け付けると、ＳＡＳ４１１はＳＡＳＭａｎａｇｅｒ５１１に起動の実行を要求する（Ｓ５１）。ＪＳＤＫアプリ１４７の起動はＳＡＳＭａｎａｇｅｒ５１１によって制御されるからである。ＳＡＳＭａｎａｇｅｒ５１１は、融合機１０１にインストールされているＪＳＤＫアプリ１４７を検索するようＩｎｓｔａｌｌＭａｎａｇｅｒ５４５に要求する（Ｓ５２）。ＩｎｓｔａｌｌＭａｎａｇｅｒ５４５は、インストールされているＪＳＤＫアプリ１４７を検索し、検索結果をＳＡＳＭａｎａｇｅｒ５１１に返却する（Ｓ５３）。ＳＡＳＭａｎａｇｅｒ５１１は、検索結果として取得されたＪＳＤＫアプリ１４７の一覧の中から、ユーザによって選択されたＪＳＤＫアプリ１４７の起動をＯＳＧｉフレームワーク４０３に要求する（Ｓ５４）。ＯＳＧｉフレームワーク４０３は、起動対象とされたバンドル４０７のＢｕｎｄｌｅ  Ａｃｔｉｖａｔｏｒ４０７１のｓｔａｒｔ（）メソッドを呼び出すことによりバンドル４０７を起動させる（Ｓ５５）。
【００６３】
一方、ＳＡＳ４１１が、タッチパネル３１１に表示させている操作画面を介して、ＪＳＤＫアプリ１４７の停止（起動解除）の指示をユーザより受け付けると、ＳＡＳ４１１は、ＳＡＳＭａｎａｇｅｒ５１１にＪＳＤＫアプリ１４７の停止の実行を要求する（Ｓ６１）。ＳＡＳＭａｎａｇｅｒ５１１は、融合機１０１にインストールされているＪＳＤＫアプリ１４７の検索をＩｎｓｔａｌｌＭａｎａｇｅｒ５４５に要求する（Ｓ６２）。ＩｎｓｔａｌｌＭａｎａｇｅｒ５４５は、インストールされているＪＳＤＫアプリ１４７を検索し、検索結果をＳＡＳＭａｎａｇｅｒ５１１に返却する（Ｓ６３）。ＳＡＳＭａｎａｇｅｒ５１１は、検索結果として取得されたＪＳＤＫアプリ１４７の一覧の中からユーザによって選択されたＪＳＤＫアプリ１４７の停止をＯＳＧｉフレームワーク４０３に要求する（Ｓ６４）。ＯＳＧｉフレームワーク４０３は、停止対象とされたバンドル４０７のＢｕｎｄｌｅ  Ａｃｔｉｖａｔｏｒ４０７１のｓｔｏｐ（）メソッドを呼び出すことにより当該バンドル４０７を停止させる（Ｓ６５）。
【００６４】
また、図１７は、バンドル化されたＸｌｅｔの起動処理及び起動解除処理を説明するためのシーケンス図である。図１７において、ステップＳ７１〜Ｓ７４は図１６におけるステップＳ５１〜Ｓ５４と同様であるためここでの説明は省略する。
【００６５】
ＯＳＧｉフレームワーク４０３は、起動対象とされたＸｌｅｔ４０６に対応するＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４のｓｔａｒｔ（）メソッドを呼び出す（Ｓ７５）。但し、ＯＳＧｉフレームワーク４０３は、起動対象がＸｌｅｔ４０６であることは意識していない。ＯＳＧｉフレームワーク４０３には、ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４が、図１６におけるＢｕｎｄｌｅ  Ａｃｔｉｖａｔｏｒ４０１と同様に見えており、図１６のステップＳ５５においてＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４のｓｔａｒｔ（）メソッドを呼び出す場合と同様に、ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４のｓｔａｒｔ（）メソッドを呼び出しているだけである。ｓｔａｒｔ（）メソッドを呼び出されたＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４は、ＭｕｌｔｉＸｌｅｔＭａｎａｇｅｒ５３２のｃｒｅａｔｅＸｌｅｔ（）メソッドを呼び出すことにより、Ｘｌｅｔ４０６の起動（生成）を要求する（Ｓ７６）。ＭｕｌｔｉＸｌｅｔＭａｎａｇｅｒ５３２は、Ｘｌｅｔ４０６のｉｎｉｔＸｌｅｔ（）メソッドを呼び出すことによりＸｌｅｔ４０６を初期化し（Ｓ７７）、更に、ｓｔａｒｔＸｌｅｔ（）メソッドを呼び出すことによりＸｌｅｔ４０６を起動させる（Ｓ７８）。
【００６６】
図１７において、ステップＳ８１以降は、Ｘｌｅｔ４０６の起動解除処理を示すものである。図中ステップＳ８１〜Ｓ８４は、図１６におけるステップＳ６１〜Ｓ６４と同様であるためここでの説明は省略する。ＯＳＧｉフレームワーク４０３は、停止対象とされたＸｌｅｔ４０６に対応するＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４のｓｔｏｐ（）メソッドを呼び出す（Ｓ８５）。但し、ＯＳＧｉフレームワーク４０３は、停止対象がＸｌｅｔ４０６であることは意識していない。すなわち、図１６のステップＳ６５においてＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４のｓｔｏｐ（）メソッドを呼び出す場合と同様に、ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４のｓｔｏｐ（）メソッドを呼び出しているだけである。ｓｔｏｐ（）メソッドを呼び出されたＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ４０４は、ＭｕｌｔｉＸｌｅｔＭａｎａｇｅｒ５３２のｄｅｓｔｒｏｙＸｌｅｔ（）メソッドを呼び出すことにより、Ｘｌｅｔ４０６の停止（破棄）を要求する（Ｓ８６）。ＭｕｌｔｉＸｌｅｔＭａｎａｇｅｒ５３２は、Ｘｌｅｔ４０６のｄｅｓｔｒｏｙＸｌｅｔ（）メソッドを呼び出すことによりＸｌｅｔ４０６停止させる（Ｓ８７）。
【００６７】
このように、本実施の形態における融合機１０１では、ＯＳＧｉフレームワーク４０３から見て、バンドル４０７とＸｌｅｔ４０６の起動及び起動解除処理が同様の手順によって行われる。すなわち、図１６におけるＯＳＧｉフレームワーク４０３に対する呼び出し（Ｓ５４、Ｓ６４）と、図１７におけるＯＳＧｉフレームワーク４０３に対する呼び出し（Ｓ７４、Ｓ８４）とは整合性がとられている。また、図１６におけるＯＳＧｉフレームワーク４０３による呼び出し（Ｓ５５、Ｓ６５）と、図１７におけるＯＳＧｉフレームワーク４０３による呼び出し（Ｓ７５、Ｓ８５）とは整合性がとられている。したがって、ＯＳＧｉフレームワーク４０３は、バンドル４０７とＸｌｅｔ４０６との違いを意識することなく、その起動及び起動解除を実現しているといえる。
【００６８】
（ＪＳＤＫ）
図１８は、図１のＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８のクラス図である。ＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８は、全体で１プロセスとして、同一のプロセス上で実行される。ＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８中の各ブロックは、それぞれ１プロセス上のスレッドとして、スレッド単位で並列的に実行（マルチスレッド）される。ＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８は、Ｊａｖａ（登録商標）コンパイラによりソースコードからバイトコードに一括翻訳されており、Ｊａｖａ（登録商標）仮想マシンにより逐次実行される。ＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８は「Ｊａｖａ（登録商標）  ２  Ｍｉｃｒｏ  Ｅｄｉｔｉｏｎ」の「Ｆｏｕｎｄａｔｉｏｎ  Ｐｒｏｆｉｌｅ」がベースとなっている。
【００６９】
ＪＳＤＫアプリ１４７としては、図に示す通り、ユーザアプリ５０１と、ＳＡＳ  Ｍａｎａｇｅｒ５１１と、Ｓｃｒｅｅｎ  Ｍａｎａｇｅｒ５１２等が存在する。
【００７０】
ユーザアプリ５０１は、融合機１０１のユーザ（例えばベンダ）がＪＳＤＫを使用して開発したＪＳＤＫアプリ１４７である。ＳＡＳ  Ｍａｎａｇｅｒ５１１は、他のＪＳＤＫアプリ１４７（ユーザアプリ５０１等）の制御等を行うＪＳＤＫアプリ１４７である。Ｓｃｒｅｅｎ  Ｍａｎａｇｅｒ５１２は、他のＪＳＤＫアプリ１４７（ユーザアプリ５０１等）を操作対象とする操作画面の表示等を行うＪＳＤＫアプリ１４７である。
【００７１】
ユーザアプリ５０１はここでは、スタンドアロンアプリケーションやアプレットと並ぶＪａｖａ（登録商標）アプリケーションの一種であるＸｌｅｔである。ＳＡＳ  Ｍａｎａｇｅｒ５１１とＳｃｒｅｅｎ  Ｍａｎａｇｅｒ５１２はここでは、独自の拡張を施したＸｌｅｔ（ＸｌｅｔＥｘ）である。
【００７２】
ＪＳＤＫプラットフォーム１４８には、図に示す通り、ＪＳＤＫ  Ｅｎｖｉｒｏｎｍｅｎｔ５２１と、Ｘｌｅｔ  Ｍａｎａｇｅｒ５３１と、Ｍｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ５３２と、Ｓｅｎｄ  Ｍａｎａｇｅｒ５４１と、Ｅｖｅｎｔ  Ｍａｎａｇｅｒ５４２と、Ｓｙｓｔｅｍ  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ５４３と、Ｐａｎｅｌ  Ｍａｎａｇｅｒ５４４と、Ｉｎｓｔａｌｌ  Ｍａｎａｇｅｒ５４５と、Ｓｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ５４６等のクラスが存在する。
【００７３】
ＪＳＤＫ  Ｅｎｖｉｒｏｎｍｅｎｔ５２１は、ＪＳＤＫシステムの実行環境を反映したＪＳＤＫシステムの起動環境設定を実行するクラスである。
【００７４】
Ｘｌｅｔ  Ｍａｎａｇｅｒ５３１は、１対１でＸｌｅｔを管理するクラスである。ここでは、５個のＸｌｅｔのライフサイクルやデータがそれぞれ１対１で５個のＸｌｅｔ  Ｍａｎａｇｅｒ５３１によって管理される。Ｍｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ５３２は、全てのＸｌｅｔ  Ｍａｎａｇｅｒ５３１を管理するクラスである。ここでは、５個のＸｌｅｔ  Ｍａｎａｇｅｒ５３１のライフサイクルやデータが全て１個のＭｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ５３２によって管理される。なお、ＳＡＳ  Ｍａｎａｇｅｒ５１１，Ｓｃｒｅｅｎ  Ｍａｎａｇｅｒ５１２，ＪＳＤＫ  Ｅｎｖｉｒｏｎｍｅｎｔ５２１，Ｍｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ５３２，Ｓｅｎｄ  Ｍａｎａｇｅｒ５４１，Ｅｖｅｎｔ  Ｍａｎａｇｅｒ５４２，Ｓｙｓｔｅｍ  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ５４３，Ｐａｎｅｌ  Ｍａｎａｇｅｒ５４４，Ｉｎｓｔａｌｌ  Ｍａｎａｇｅｒ５４５，Ｓｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ５４６の「バンドル」のライフサイクルやデータは、ＯＳＧｉフレームワーク４０３によって管理される。
【００７５】
Ｓｙｓｔｅｍ  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ５４３は、図１のプラットフォーム１３２からのシステムイベント（電力モード等）の管理を行うクラスである。Ｐａｎｅｌ  Ｍａｎａｇｅｒ５４４は、１個のＸｌｅｔがオペレーションパネル２０２の画面を占有する際の調停を行うクラスである。Ｉｎｓｔａｌｌ  Ｍａｎａｇｅｒ５４５は、ＳＤｃａｒｄやＷｅｂからのインストールやアンインストールの管理を行うクラスである。
【００７６】
図１８のＪＳＤＫシステムでは、ＪＳＤＫ  ＡＰＩ５５１とＪＳＤＫ  ＡＰＩ５５２がＡＰＩとして利用される。なお、ＸｌｅｔとＸｌｅｔＥｘの差異として、オブジェクトにアクセスするのにＪＳＤＫ  ＡＰＩ５５１の利用とＪＳＤＫプラットフォーム１４８へのアクセスが可能である点が挙げられる。図１の融合機１０１には更に、図１８のＪＳＤＫシステムに係る要素として、Ｃ言語とＪａｖａ（登録商標）言語のインタフェースとなるＪＳＤＫ  Ｓｅｓｓｉｏｎ５５３とＮａｔｉｖｅ  ＪＳＤＫ  Ｓｅｓｓｉｏｎ５５４や、ＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８を実行するためＪａｖａ（登録商標）仮想マシンであるＣＶＭ５５５が存在する。
【００７７】
図１９は、ＪＳＤＫシステムの起動処理に関するクラス図である。ＪＳＤＫシステムの起動処理では先ず、ＯＳＧｉフレームワーク４０３が、ＯＳＧｉアプリ４０１やＯＳＧｉサービス４０２を構成するバンドルを生成（Ｓ１）する。次に、ＯＳＧｉフレームワーク４０３が、ＪＳＤＫアプリ１４７やＪＳＤＫプラットフォーム１４８を構成するバンドルを生成（Ｓ２）する。次に、ＪＳＤＫ  Ｅｎｖｉｒｏｎｍｅｎｔ５２１が、ＪＳＤＫ  Ｓｅｓｓｉｏｎ５５３やＮａｔｉｖｅ  ＪＳＤＫ  Ｓｅｓｓｉｏｎ５５４を生成するなど、ＪＳＤＫシステムの実行環境を反映したＪＳＤＫシステムの起動環境設定を実行（Ｓ３）する。次に、ＪＳＤＫ  Ｓｅｓｓｉｏｎ５５３が、Ｓｅｎｄ  Ｍａｎａｇｅｒ５４１やＥｖｅｎｔ  Ｍａｎａｇｅｒ５４２を生成（Ｓ４）する。なお、ユーザアプリ５０１の起動処理に関してはＳＡＳ４１１やＳＡＳ  Ｍａｎａｇｅｒ５１１が関与（Ｓ５）する。
【００７８】
（エミュレータ）
図２０は、本発明の実施例に該当するＰＣ（パーソナルコンピュータ）７０１を表す。図２０のＰＣ７０１は、図１の融合機１０１とネットワーク８０１で接続されており、図１の融合機１０１のエミュレータとして機能する。
【００７９】
図２０のＰＣ７０１は、ＰＣ本体７１１と、キーボード７１２と、マウス７１３と、ディスプレイ７１４等により構成される。ＰＣ本体７１１には、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＮＶＲＡＭ、ＨＤＤ、ＭＯＤＥＭ、ＮＩＣ等が存在する。キーボード７１２とマウス７１３は、融合機１０１のオペレーションパネル２０２に代わって、オペレータが入力を行うためのハードウェア（操作部）となる。ディスプレイ７１４は、融合機１０１のオペレーションパネル２０２に代わって、オペレータが出力を得るためのハードウェア（表示部）となる。
【００８０】
図２１は、図２０のＰＣ７０１内のＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８のクラス図である。図１の融合機１０１と同様のＪＳＤＫアプリ１４７，ＪＳＤＫプラットフォーム１４８，ＯＳＧｉアプリ４０１，ＯＳＧｉサービス４０２，ＯＳＧｉフレームワーク４０３が、図２０のＰＣ７０１内にも存在するのである。図１の融合機１０１内のＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８のクラス図については、図１８を参照されたい。以下、図１８と図２１の差異について説明する。
【００８１】
第１に、図１８のＳＡＳ４１１は、図２１のＳＡＳ  Ｅｍｕｌａｔｏｒ６１１に置換される。第２に、図１８のＰａｎｅｌ  Ｍａｎａｇｅｒ５４４は、図２１のＰａｎｅｌ  Ｍａｎａｇｅｒ  Ｅｍｕｌａｔｏｒ７４４に置換される。第３に、図１８のＪＳＤＫ  Ｓｅｓｓｉｏｎ５５３は、図２１のＥｍｕｌａｔｏｒ  ＪＳＤＫ  Ｓｅｓｓｉｏｎ７５３に置換される。第４に、図１８のＮａｔｉｖｅ  ＪＳＤＫ  Ｓｅｓｓｉｏｎ５５４は、図２１のＥｖｅｎｔ  Ｅｍｕｌａｔｏｒ７５４に置換される。第５には、図１８のＣＶＭ５５５は、図２１のＪＶＭ７５５に置換される。
【００８２】
ＳＡＳ  Ｅｍｕｌａｔｏｒ６１１は、他のＣＳＤＫアプリ１４６の制御を行うＣＳＤＫアプリ１４６であり、融合機１０１内やＰＣ７０１内のＳＡＳ  Ｍａｎａｇｅｒ５１１を介してＪＳＤＫアプリ１４７の制御（図中の矢印Ａや矢印Ｂ）を行う事もできる。Ｐａｎｅｌ  Ｍａｎａｇｅｒ  Ｅｍｕｌａｔｏｒ７４４は、Ｐａｎｅｌ  Ｍａｎａｇｅｒ５４４をエミュレートして、オペレーションパネル２０２の操作をキーボード７１２やマウス７１３の操作に変換するクラスである。Ｅｍｕｌａｔｏｒ  ＪＳＤＫ  Ｓｅｓｓｉｏｎ７５３は、通信経路の確立処理を実行するクラスである。Ｅｖｅｎｔ  Ｅｍｕｌａｔｏｒ７５４は、融合機１０１の動作をエミュレートするクラスである。ＪＶＭ７５５は、ＪＳＤＫアプリ１４７，ＪＳＤＫプラットフォーム１４８，ＯＳＧｉアプリ４０１，ＯＳＧｉサービス４０２，ＯＳＧｉフレームワーク４０３を実行するためのＪａｖａ（登録商標）仮想マシンである。
【００８３】
なお、図２０のＰＣ７０１内のＪＳＤＫシステムの起動処理に関しては、図１９と同様である。また、図２０のＰＣ７０１では図１の融合機１０１の遠隔操作を行う事ができるのだが、図２０のＰＣ７０１にて図１の融合機１０１の遠隔操作を行うに際しては、図１の融合機１０１内のＪＳＤＫシステムの起動処理は図２２や図２３のように実施される。
【００８４】
第１に、図１９のＳ３の処理の代わりとして、融合機１０１内のＪＳＤＫ  Ｅｎｖｉｒｏｎｍｅｎｔ５２１が、ＰＣ７０１内のＪＳＤＫプラットフォーム１４８を登録（Ｓ３）する。第２に、図１９のＳ４の処理の代わりとして、融合機１０１内のＯＳＧｉフレームワーク４０３が、ＰＣ７０１内のＳｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ５４６を登録（Ｓ４）する。
【００８５】
図２２では、ユーザアプリ５０１の起動処理にＰＣ７０１内のＳＡＳ  Ｅｍｕｌａｔｏｒ６１１が関与するため、図２２のＳ４の処理では、融合機１０１内のＯＳＧｉフレームワーク４０３が、ＰＣ７０１内のＳＡＳ  Ｅｍｕｌａｔｏｒ６１１を登録する。
【００８６】
図２３では、ユーザアプリ５０１の起動処理に融合機１０１内のＳＡＳ４１１が関与するため、図２３のＳ４の処理では、融合機１０１内のＯＳＧｉフレームワーク４０３は、ＰＣ７０１内のＳＡＳ  Ｅｍｕｌａｔｏｒ６１１を登録しない。
【００８７】
なお、図５から図１７による説明事項については、図１の融合機１０１についてと同様に、図２０のＰＣ７０１についても成り立つ。ただし、ＳＡＳ４１１はＳＡＳ  Ｍａｎａｇｅｒ６１１に読み替えるものとする。
【符号の説明】
【００８８】
１０１  融合機
１１１  ハードウェア
１１２  ソフトウェア
１１３  融合機起動部
１２１  撮像部
１２２  印刷部
１２３  その他のハードウェア
１３１  アプリケーション
１３２  プラットフォーム
１３３  アプリケーションプログラムインタフェース
１３４  エンジンインタフェース
１３５  仮想アプリケーションサービス
１４１  コピーアプリ
１４２  プリンタアプリ
１４３  スキャナアプリ
１４４  ファクシミリアプリ
１４５  ネットワークファイルアプリ
１４６  ＣＳＤＫアプリ
１４７  ＪＳＤＫアプリ
１４８  ＪＳＤＫプラットフォーム
１５１  コントロールサービス
１５２  システムリソースマネージャ
１５３  ハンドラ
１６１  ネットワークコントロールサービス
１６２  ファクシミリコントロールサービス
１６３  デリバリコントロールサービス
１６４  エンジンコントロールサービス
１６５  メモリコントロールサービス
１６６  オペレーションパネルコントロールサービス
１６７  サーティフィケーションコントロールサービス
１６８  ユーザディレクトリコントロールサービス
１６９  システムコントロールサービス
１７１  ファクシミリコントロールユニットハンドラ
１７２  イメージメモリハンドラ
２０１  コントローラ
２０２  オペレーションパネル
２０３  ファクシミリコントロールユニット
２１１  ＣＰＵ
２１２  ＡＳＩＣ
２２１  ＮＢ
２２２  ＳＢ
２３１  ＭＥＭ−Ｐ
２３２  ＭＥＭ−Ｃ
２３３  ＨＤＤ
２３４  メモリカードスロット
２３５  メモリカード
２４１  ＮＩＣ
２４２  ＵＳＢデバイス
２４３  ＩＥＥＥ１３９４デバイス
２４４  セントロニクスデバイス
３０１  原稿セット部
３０２  給紙部
３０３  排紙部
３１１  タッチパネル
３１２  テンキー
３１３  スタートボタン
３１４  リセットボタン
３１５  機能キー
３１６  初期設定ボタン
３２１  ＡＤＦ
３２２  フラットベッド
３２３  フラットベッドカバー
４０１  ＯＳＧｉアプリ
４０２  ＯＳＧｉサービス
４０３  ＯＳＧｉフレームワーク
４０４  ＸｌｅｔＢｕｎｄｌｅＡｃｔｉｖａｔｏｒ
４０５  ＪＳＤＫシステムサービス
４０６  Ｘｌｅｔ
４０７  バンドル（Ｂｕｎｄｌｅ）
４１１  ＳＡＳ
５０１  ユーザアプリ
５１１  ＳＡＳ  Ｍａｎａｇｅｒ
５１２  Ｓｃｒｅｅｎ  Ｍａｎａｇｅｒ
５２１  ＪＳＤＫ  Ｅｎｖｉｒｏｎｍｅｎｔ
５３１  Ｘｌｅｔ  Ｍａｎａｇｅｒ
５３２  Ｍｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ
５４１  Ｓｅｎｄ  Ｍａｎａｇｅｒ
５４２  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ
５４３  Ｓｙｓｔｅｍ  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ
５４４  Ｐａｎｅｌ  Ｍａｎａｇｅｒ
５４５  Ｉｎｓｔａｌｌ  Ｍａｎａｇｅｒ
５４６  Ｓｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ
５５１  ＪＳＤＫ  ＡＰＩ
５５２  ＪＳＤＫ  ＡＰＩ
５５３  ＪＳＤＫ  Ｓｅｓｓｉｏｎ
５５４  Ｎａｔｉｖｅ  ＪＳＤＫ  Ｓｅｓｓｉｏｎ
５５５  ＣＶＭ
６１１  ＳＡＳ  Ｅｍｕｌａｔｏｒ
７０１  ＰＣ
７１１  ＰＣ本体
７１２  キーボード
７１３  マウス
７１４  ディスプレイ
７４４  Ｐａｎｅｌ  Ｍａｎａｇｅｒ  Ｅｍｕｌａｔｏｒ
７５３  Ｅｍｕｌａｔｏｒ  ＪＳＤＫ  Ｓｅｓｓｉｏｎ
７５４  Ｅｖｅｎｔ  Ｅｍｕｌａｔｏｒ
７５５  ＪＶＭ
８０１  ネットワーク
４０７１  Ｂｕｎｄｌｅ  Ａｃｔｉｖａｔｏｒ
【先行技術文献】
【特許文献】
【００８９】
【特許文献１】特開２００２−８４３８３号公報
【図１】
0005565439.tif 000002
【図２】
0005565439.tif 000003
【図３】
0005565439.tif 000004
【図４】
0005565439.tif 000005
【図５】
0005565439.tif 000006
【図６】
0005565439.tif 000007
【図７】
0005565439.tif 000008
【図８】
0005565439.tif 000009
【図９】
0005565439.tif 000010
【図１０】
0005565439.tif 000011
【図１１】
0005565439.tif 000012
【図１２】
0005565439.tif 000013
【図１３】
0005565439.tif 000014
【図１４】
0005565439.tif 000015
【図１５】
0005565439.tif 000016
【図１６】
0005565439.tif 000017
【図１７】
0005565439.tif 000018
【図１８】
0005565439.tif 000019
【図１９】
0005565439.tif 000020
【図２０】
0005565439.tif 000021
【図２１】
0005565439.tif 000022
【図２２】
0005565439.tif 000023
【図２３】
0005565439.tif 000024