(57)【要約】【課題】  Ｊａｖａ（登録商標）アプリケーションを複合機上で容易に実行できる環境、及びＰＣなどで実行するＪａｖａ（登録商標）アプリケーションにより複合機を操作できる環境を提供する。【解決手段】  画像形成処理におけるハードウェア資源の制御に関するサービスを複数のアプリケーションに共通に提供する制御部を備えることにより、複数のアプリケーションを搭載可能に構成された画像形成装置に、前記アプリケーションとしての仮想マシンと、前記仮想マシン上で動作するアプリケーションと、前記仮想マシン上で動作するアプリケーションを管理するためのアプリケーション管理部とを備える。また、ネットワークを介して前記画像形成装置に接続された端末装置からの操作要求を受けて前記画像形成装置を操作するサーバーアプリケーションを備える。【選択図】  図３
2010057186.tif 000002
【特許請求の範囲】
【請求項１】
複数のアプリケーションを搭載可能に構成された画像形成装置を操作する端末装置であって、
仮想マシンと、
前記仮想マシン上で動作し、前記画像形成装置を操作するアプリケーションと、
前記仮想マシン上で動作するアプリケーションを管理するためのアプリケーション管理部とを備え、
前記仮想マシン上で動作するアプリケーションは、ネットワークを介して前記端末装置に接続された前記画像形成装置を制御するためのクラスを用いて前記画像形成装置を操作し、前記クラスは、前記画像形成装置の操作パネルへの表示画面をエミュレートした画面を前記端末装置に表示する機能を含むことを特徴とする端末装置。
【請求項２】
前記画像形成装置の操作をＪａｖａ（登録商標）に基づく分散処理技術を用いて行う請求項１に記載の端末装置。
【請求項３】
前記画像形成装置のハードディスクと前記端末装置のハードディスクのうちいずれのハードディスクにアクセスするかを選択させる機能を有する請求項１に記載の端末装置。
【請求項４】
前記アプリケーション管理部は、前記仮想マシン上で動作するアプリケーションの起動を含む実行管理機能を有する請求項１に記載の端末装置。
【請求項５】
前記アプリケーション管理部は、前記仮想マシン上で動作するアプリケーションがインストールされていない場合に、アプリケーションのダウンロードを前記画像形成装置と通信することにより行う請求項４に記載の端末装置。
【請求項６】
前記ダウンロードは、前記画像形成装置に挿入するメモリカード又はＷｅｂサイトから行う請求項５に記載の端末装置。
【請求項７】
前記アプリケーション管理部は、前記メモリカードに格納されたファイル情報を前記画像形成装置から受信し、表示をする請求項６に記載の端末装置。
【請求項８】
前記アプリケーション管理部は、前記端末装置に入力されたＵＲＬ情報を前記画像形成装置に送信し、前記画像形成装置が該ＵＲＬ情報に基づき前記仮想マシン上で動作するアプリケーションをＷｅｂサイトからダウンロードする請求項６に記載の端末装置。
【請求項９】
複数のアプリケーションを搭載可能に構成された画像形成装置を、ネットワークを介して接続された端末装置上で実行するアプリケーションにより操作する方法であって、
前記画像形成装置に、前記アプリケーションとしての仮想マシンと、該仮想マシン上で動作するサーバーアプリケーションとを備え、
前記端末装置に、仮想マシンと、該仮想マシン上で動作するアプリケーションとを備え、
前記端末装置のアプリケーションによる操作要求を前記サーバーアプリケーションが受信して、該サーバーアプリケーションが前記画像形成装置を操作する方法であり、
前記端末装置は、前記画像形成装置の操作パネルへの表示画面をエミュレートした画面を表示することを特徴とする方法。
【請求項１０】
前記端末装置からの前記画像形成装置の操作は、Ｊａｖａ（登録商標）に基づく分散処理技術を用いて行う請求項９に記載の方法。
【請求項１１】
前記画像形成装置にアプリケーションを管理するためのアプリケーション管理部を備え、前記端末装置に、該アプリケーション管理部と通信することによりアプリケーションを管理する遠隔アプリケーション管理部を備える請求項９に記載の方法。
【請求項１２】
複数のアプリケーションを搭載可能に構成された画像形成装置を操作する端末装置に、
仮想マシンの機能と、
前記仮想マシン上で動作し、前記画像形成装置を操作するためのアプリケーションを管理するためのアプリケーション管理部の機能とを実現させるためのプログラムであって、
前記プログラムは、前記仮想マシン上で動作するアプリケーションにより用いられる、前記画像形成装置を制御するためのクラスを含み、当該クラスは、前記画像形成装置の操作パネルへの表示画面をエミュレートした画面を前記端末装置に表示する機能を含むことを特徴とするプログラム。
【請求項１３】
前記画像形成装置の操作をＪａｖａ（登録商標）に基づく分散処理技術を用いて行う請求項１２に記載のプログラム。
【請求項１４】
前記アプリケーション管理部は、前記仮想マシン上で動作するアプリケーションの起動を含む実行管理機能を有する請求項１２に記載のプログラム。
【請求項１５】
前記アプリケーション管理部は、前記仮想マシン上で動作するアプリケーションがインストールされていない場合に、アプリケーションのダウンロードを前記画像形成装置と通信することにより行う機能を有する請求項１４に記載のプログラム。
【請求項１６】
請求項１１ないし１５のうちいずれか１項に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、Ｊａｖａ（登録商標）アプリケーションにより画像形成装置を操作する技術に関する。
【背景技術】
【０００２】
近年では、プリンタ、コピー、ファクシミリ、スキャナなどの各装置の機能を１つの筐体内に収納した画像形成装置（以下、「複合機」という。）が知られている。この複合機は、１つの筐体内に表示部、印刷部および撮像部などを設けるとともに、プリンタ、コピーおよびファクシミリ装置にそれぞれ対応した３種類のソフトウェアを設け、これらのソフトウェアを切り替えることによって、当該装置をプリンタ、コピー、スキャナまたはファクシミリ装置として動作させるものである。
【０００３】
このようなソフトウェアの切り替えによって実現されている複合機は、プリンタ、コピー、スキャナ及びファクシミリ装置に対応するアプリケーション及びシステムソフトウェアをそれぞれ別個に設けているため、各アプリケーション及びシステムソフトウェアの開発に多大な時間を要する。この問題を解決するために、アプリケーションの少なくとも２つが共通に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行うプラットホームを備えた構成の複合機が開発されている。このような複合機では、アプリケーションと、ハードウェア資源にアクセスするような開発が難しい処理を行うコントロールサービスとを別個に設けているため、複合機の出荷後にユーザもしくは第三者であるサードベンダが画像形成処理などにかかるアプリケーションとして新規なアプリケーションを開発して複合機に搭載可能な構成となっている。
【０００４】
搭載するアプリケーションとして種々のものが開発されていているが、複数のプラットフォームに対応し、ネットワークに高度に対応するという観点から、上記の複合機に搭載するアプリケーションとしてＪａｖａ（登録商標）アプリケーションを用いることが検討されている。Ｊａｖａ（登録商標）アプリケーションに関する従来技術として例えば特許文献１に記載された技術がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
Ｊａｖａ（登録商標）アプリケーションを上記の複合機のアプリケーションとして実行するためには、Ｊａｖａ（登録商標）の実行環境としてＪａｖａ（登録商標）アプリケーションの管理を行うモジュールが必要である。
【０００６】
また、Ｊａｖａ（登録商標）アプリケーションを用いて複合機のアプリケーションを開発する場合、ＰＣなどの上で開発を行った後に、実際に複合機上で動作するか否かの評価を行う必要があるが、評価の度に複合機にアプリケーションのインストールをして実行することは煩雑である。従って、開発したアプリケーションをＰＣなどの開発環境から直接複合機で実行できるような環境が求められている。また、遠隔でのアプリケーションの実行により複合機を操作することができれば、Ｊａｖａ（登録商標）アプリケーションを使用するユーザーの利便性が向上する。
【０００７】
本発明は上記の点に鑑みてなされたものであり、Ｊａｖａ（登録商標）アプリケーションを複合機上で容易に実行できる環境、及びＰＣなどの端末装置で実行するＪａｖａ（登録商標）アプリケーションにより複合機を操作できる環境を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、本発明の一実施形態によれば、複数のアプリケーションを搭載可能に構成された画像形成装置を操作する端末装置であって、
仮想マシンと、
前記仮想マシン上で動作し、前記画像形成装置を操作するアプリケーションと、
前記仮想マシン上で動作するアプリケーションを管理するためのアプリケーション管理部とを備え、
前記仮想マシン上で動作するアプリケーションは、ネットワークを介して前記端末装置に接続された前記画像形成装置を制御するためのクラスを用いて前記画像形成装置を操作し、前記クラスは、前記画像形成装置の操作パネルへの表示画面をエミュレートした画面を前記端末装置に表示する機能を含むことを特徴とする端末装置が提供される。
【発明の効果】
【０００９】
本発明によれば、ＰＣでＪａｖａ（登録商標）アプリを実行して複合機を操作することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態における複合機の構成を示すブロック図である。
【図２】複合機１００のハードウェア構成図である。
【図３】複合機１００に搭載されるＪａｖａ（登録商標）実行環境１１６の構成の一例を示す図である。
【図４】アプリケーション管理部２０４の実装方法を説明するための図である。
【図５】Ｊａｖａ（登録商標）アプリで使用する操作パネルクラスの階層構成の一例を示す図である。
【図６】シンプルプリンターのプログラムリストである。
【図７】シンプルプリンターにより表示される画面である。
【図８】シンプルプリンターにより表示されるソフトキーボードの例を示す図である。
【図９】本発明の第１の実施の形態においてシンプルプリンターを起動するまでの手順を示すフローチャートである。
【図１０】本発明の第２の実施の形態におけるＪＮＬＰファイルの構文の例を示す図である。
【図１１】ＪＮＬＰファイルにおけるツリー構造を示す図である。
【図１２】Ｊａｖａ（登録商標）アプリをＳＤｃａｒｄからのＪＳＤＫアプリに自動更新する自動更新処理に係るフローチャートである。
【図１３】Ｊａｖａ（登録商標）アプリをＷｅｂからのＪＳＤＫアプリに自動更新する自動更新処理に係るフローチャートである。
【図１４】本発明の第３の実施の形態におけるシステム構成図である。
【図１５】本発明の第３の実施の形態においてシンプルプリンターを起動するまでの手順を示すフローチャートである。
【図１６】本発明の第４の実施の形態における複合機の構成を示すブロック図である。
【図１７】図１６のＪＳＤＫアプリとＪＳＤＫプラットフォームのクラス図である
【図１８】本発明の第４の実施の形態における接続構成図である。
【図１９】ＰＣ内のＪＳＤＫアプリとＪＳＤＫプラットフォームのクラス図である。
【図２０】複合機内で実行される遠隔操作の準備処理の実行手順について説明するための図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本発明の実施の形態について説明する。第１、第２の実施の形態として複合機におけるＪａｖａ（登録商標）実行環境について説明し、第３、第４の実施の形態として、ＰＣなどで開発したアプリケーションを、ＰＣで実行させることにより複合機を操作する環境について説明する。まず、第１〜第３の実施の形態で用いられる複合機について説明する。
【００１２】
図１は、本発明の実施の形態における複合機の構成を示すブロック図である。図１に示すように、複合機１００は、白黒レーザプリンタ（B&W LP）１０１と、カラーレーザプリンタ（Color LP）１０２と、スキャナ、ファクシミリ、ハードディスク、メモリ、ネットワークインタフェースなどのハードウェアリソース１０３を有する。また、各種コントロールサービスを有するプラットホーム１２０と、アプリケーション（以下、アプリともいう）１３０とを備えている。
【００１３】
プラットホーム１２０は、アプリケーションからの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一又は複数のハードウェア資源の管理を行い、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ（ステップＳＲＭ）１２３と、汎用ＯＳ１２１とを有している。
【００１４】
コントロールサービスは、複数のサービスモジュールから形成され、ＳＣＳ（システムコントロールサービス）１２２と、ＥＣＳ（エンジンコントロールサービス）１２４と、ＭＣＳ（メモリコントロールサービス）１２５と、ＯＣＳ（オペレーションパネルコントロールサービス）１２６と、ＦＣＳ（ファックスコントロールサービス）１２７と、ＮＣＳ（ネットワークコントロールサービス）１２８とから構成されている。なお、このプラットホーム１２０は、あらかじめ定義された関数により前記アプリケーション１３０から処理要求を受信可能とするアプリケーションプログラムインタフェース（ＡＰＩ）を有している。
【００１５】
汎用ＯＳ１２１は、ＵＮＩＸ（登録商標）などの汎用オペレーティングシステムであり、プラットホーム１２０並びにアプリケーション１３０の各ソフトウェアをそれぞれプロセスとして並列実行する。
【００１６】
ＳＲＭ１２３のプロセスは、ＳＣＳ１２２とともにシステムの制御及びリソースの管理を行うものである。ＳＲＭ１２３のプロセスは、スキャナ部やプリンタ部などのエンジン、メモリ、ＨＤＤファイル、ホストＩ／Ｏ（セントロＩ／Ｆ、ネットワークＩ／Ｆ、ＩＥＥＥ１３９４  Ｉ／Ｆ、ＲＳ２３２Ｃ  Ｉ／Ｆなど）のハードウェア資源を利用する上位層からの要求にしたがって調停を行い、実行制御する。
【００１７】
ＳＣＳ１２２のプロセスは、アプリ管理、オペレーションパネル制御、システム画面表示、ＬＥＤ表示、リソース管理、割り込みアプリ制御などを行う。また、ＥＣＳ１２４のプロセスは、白黒レーザプリンタ（B&W LP）１０１、カラーレーザプリンタ（Color LP）１０２、スキャナ、ファクシミリなどからなるハードウェアリソースのエンジンの制御を行う。
【００１８】
ＭＣＳ１２５のプロセスは、画像メモリの取得及び解放、ハードディスク装置（ＨＤＤ）の利用、画像データの圧縮及び伸張などを行い、ＦＣＳ１２７のプロセスは、システムコントローラの各アプリ層からＰＳＴＮ／ＩＳＤＮ網を利用したファクシミリ送受信、ＢＫＭ（バックアップＳＲＡＭ）で管理されている各種ファクシミリデータの登録／引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信を行うためのＡＰＩを提供する。
【００１９】
ＮＣＳ１２８のプロセスは、ネットワークＩ／Ｏを必要とするアプリケーションに対して共通に利用できるサービスを提供するためのプロセスであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介を行う。具体的には、ftpd、httpd、lpd、snmpd、telnetd、smtpdなどのサーバデーモンや、同プロトコルのクライアント機能などを有している。
【００２０】
ＯＣＳ１２６のプロセスは、オペレータ（ユーザ）と本体制御間の情報伝達手段となるオペレーションパネル（操作パネルとも称する）の制御を行う。ＯＣＳ１２６は、オペレーションパネルからのキー押下情報をキーイベントとして取得し、取得したキーに対応したキーイベント関数をＳＣＳ１２２に送信するＯＣＳプロセスの部分と、アプリケーション１３０又はコントロールサービスからの要求によりオペレーションパネルに各種画面を描画出力する描画関数やその他オペレーションパネルに対する制御を行う関数などがあらかじめ登録されたＯＣＳライブラリの部分とから構成される。このＯＣＳライブラリは、アプリケーション１３０及びコントロールサービスの各モジュールにリンクされて実装されている。
【００２１】
アプリケーション１３０は、ページ記述言語（ＰＤＬ）、ＰＣＬ及びポストスクリプト（ＰＳ）を有するプリンタ用のアプリケーションであるプリンタアプリ１１１と、コピー用アプリケーションであるコピーアプリ１１２と、ファクシミリ用アプリケーションであるファックスアプリ１１３と、スキャナ用アプリケーションであるスキャナアプリ１１４と、ネットワークファイル用アプリケーションであるネットファイルアプリ１１５とを有している。また、アプリケーションとして、Ｊａｖａ（登録商標）実行環境１１６とＪａｖａ（登録商標）アプリケーション１１７（以下、Ｊａｖａ（登録商標）アプリと称する）を搭載している。図１では、Ｊａｖａ（登録商標）アプリが複数搭載されている例を示している。
【００２２】
アプリケーション１３０の各プロセス、コントロールサービスの各プロセスは、関数呼び出しとその戻り値送信及びメッセージの送受信によってプロセス間通信を行いながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを実現している。
【００２３】
このように、本実施の形態にかかる複合機１００には、複数のアプリケーション及び複数のコントロールサービスが存在し、いずれもプロセスとして動作している。そして、これらの各プロセス内部には、一又は複数のスレッドが生成されて、スレッド単位の並列実行が行われる。そして、コントロールサービスがアプリケーションに対し共通サービスを提供しており、このため、これらの多数のプロセスが並列動作、及びスレッドの並列動作を行って互いにプロセス間通信を行って協調動作をしながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを提供するようになっている。また、複合機１００には、サードベンダなどの第三者がコントロールサービス層の上のアプリケーション層に新規アプリを開発して搭載することが可能となっている。
【００２４】
図２は、複合機１００のハードウェア構成図である。図２に示すように、複合機１００は、コントローラ４０と、オペレーションパネル６０と、ファックスコントロールユニット（以下、ＦＣＵという）６５と、印刷等を行うためのエンジン７０と、プロッタ７５とを有している。
【００２５】
コントローラ４０は、ＣＰＵ４１と、ＭＥＭ−Ｐ４２と、ノースブリッジ（以下、ＮＢという）４３と、サウスブリッジ（以下、ＳＢという）４４と、ＡＳＩＣ４５と、ＭＥＭ−Ｃ４６と、ＨＤＤ４７とを有する。また、各種インタフェースとしてＮＩＣ４８、ＵＳＢ４９、ＩＥＥＥ１３９４（５０）、セントロニクス５１を有している。
【００２６】
オペレーションパネル６０は、コントローラ４０のＡＳＩＣ４５に直接接続されている。また、ＦＣＵ６５、各種インタフェース及びエンジン７０、プロッタ７５は、コントローラ４０のＡＳＩＣ４５にＰＣＩバスで接続されている。
【００２７】
ＣＰＵ４１は、複合機１００の全体制御を行うものである。ＮＢ４３は、ＣＰＵ４１、ＭＥＭ−Ｐ４２、ＡＳＩＣ４５を接続するためのブリッジである。ＭＥＭ−Ｐ４２は、複合機１００の描画用メモリなどとして用いるシステムメモリである。ＳＢ４４は、ＮＢ４３と周辺デバイスなどとを接続するためのブリッジである。本実施の形態では、メモリカードスロット４４１がセットされており、メモリカード４４２を挿入できる。また、ＭＥＭ−Ｃ４６は、コピー用画像バッファ、符号バッファとして用いるローカルメモリである。ＡＳＩＣ４５は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣである。また、ＨＤＤ４７は、画像データの蓄積、プログラムの蓄積、フォントデータの蓄積、フォームの蓄積を行うためのストレージである。
【００２８】
（第１の実施の形態）
次に、本発明の第１の実施の形態として、複合機１００におけるＪａｖａ（登録商標）アプリケーション１１７の実行環境１１６について説明する。
【００２９】
図３に、複合機１００に搭載されるＪａｖａ（登録商標）実行環境１１６の構成の一例を示す。図３に示すように、本実施の形態におけるＪａｖａ（登録商標）実行環境１１６は、複合機クラスライブラリ２０１、仮想マシン２０２、ネイティブプログラムインタフェース２０３、及びアプリケーション管理部２０４を有する。
【００３０】
複合機クラスライブラリ２０１は、Ｊａｖａ（登録商標）アプリ１１７が容易に複合機１００を操作するためのサービスを提供するために用いられるクラスライブラリであり、ネイティブプログラムインタフェース２０３の機構を用いて複合機１００のＡＰＩにアクセスする。この複合機クラスライブラリ２０１により、機種依存部分の区別、簡易操作機能の提供、種々のオブジェクト指向クラスの提供がなされる。
【００３１】
本実施の形態における複合機クラスライブラリ２０１は、基本的なＪａｖａ（登録商標）クラスライブラリ、イベント処理のためのイベントクラス、ネットワークに関する処理を行うネットワークトランザクションクラス、複合機１００の操作パネルへの描画等を行うための操作パネルクラス、複合機１００を制御するための複合機制御クラス等から構成される。なお、操作パネルクラスと複合機制御クラスは本実施の形態における複合機１００に特有のクラスである。以下、操作パネルクラスと複合機制御クラスをまとめて複合機クラスと称し、その他の基本的なＪａｖａ（登録商標）クラスライブラリ、イベントクラス、ネットワークトランザクションクラスをまとめてＪａｖａ（登録商標）コアクラスと称する場合がある。
【００３２】
仮想マシン２０２は、Ｊａｖａ（登録商標）のソースコードプログラムをいったん中間コード形式にコンパイルし、その結果として得られるバイトコードを解釈・実行する機能を有し、ネイティブプログラムインタフェース２０３は、仮想マシン２０２で実行されるＪａｖａ（登録商標）コードが、Ｃ言語などの他のプログラミング言語で書かれたアプリケーションやライブラリと相互運用するための機能を有している。
【００３３】
また、アプリケーション管理部２０４は、Ｊａｖａ（登録商標）アプリを管理する機能を有しており、例えば、Ｊａｖａ（登録商標）アプリのリスト表示、Ｊａｖａ（登録商標）アプリ実行管理、Ｊａｖａ（登録商標）アプリのインストールやバージョンアップ、インストール済みのＪａｖａ（登録商標）アプリの削除、アプリケーション登録のためのパスワード設定、Ｊａｖａ（登録商標）アプリの保存等を行う機能を有している。Ｊａｖａ（登録商標）アプリ実行管理としては、アプリケーションの起動、強制終了、サスペンド、レジュームなどを行う。
【００３４】
アプリケーション管理部２０４は、仮想マシン２０２から独立したコンポーネントとして実装されており、Ｊａｖａ（登録商標）アプリ１１７からは制御できない。なお、図４（ａ）、（ｂ）に示すように、アプリケーション管理部２０４は、Ｊａｖａ（登録商標）アプリ１１７として実装（ａ）してもよいし、例えばＣ言語などにより実装（ｂ）することもできる。
【００３５】
なお、Ｊａｖａ（登録商標）実行環境１１６は複合機１００に搭載されるアプリケーションの一種であるので、他のアプリケーションと同様の方法により複合機１００にインストールすることが可能であり、例えばメモリカードから複合機１００にインストールすることができる。
【００３６】
（Ｊａｖａ（登録商標）アプリの例）
次に、Ｊａｖａ（登録商標）アプリの例について説明する。ここでは、操作パネルクラスを使用したＪａｖａ（登録商標）アプリの例について説明する。図５に、このＪａｖａ（登録商標）アプリで使用する操作パネルクラスの階層構成の一例を示す。また、図６に、このＪａｖａ（登録商標）アプリのプログラムリストを示す。以下、このアプリケーションプログラムのことをシンプルプリンターと称する場合がある。
【００３７】
図６に示すプログラムについて以下説明する。このプログラムは、複合機１００の操作パネルにユーザーインタフェース画面を表示し、操作パネルから印刷ファイル名を指定し、指定したファイルを印刷するプログラムである。このプログラムの動作概要は次の通りである。
【００３８】
まず、複合機１００の起動直後に操作パネル上に図７に示す画面を表示する。すなわち、画面の上部に "Simple Printer"の文字列を表示し、中央部に"Get input filename..."のボタンを表示する。ユーザーが、"Get input filename..."のボタンに触れると、パネル上に、例えば図８に示すソフトキーボードを表示する。ソフトキーボードには、"Input file  name" のタイトルが表示され、ユーザーは、ソフトキーボードから印刷したいファイル名を入力する。例えば、"/usr/hdd/photo.tiff"と入力した場合、"/usr/hdd"のディレクトリに格納されている"photo.tiff"ファイルを印刷する。
【００３９】
このプログラムについて、プログラム中に記述した注釈の番号に沿って説明する。
【００４０】
（１）は、複合機クラスライブラリを使用するための命令である。（２）は、複雑な初期設定や終了処理に関する複合機のアプリケーションの雛型（抽象）であるGWApp を継承することを示している。これにより、複雑な初期設定や終了処理をユーザーが記述せずに済み、メッセージ受信などの処理もユーザーに対して隠蔽する。
【００４１】
（３）によりプリンターを操作するオブジェクトを生成し、（４）により"Simple Printer"のメッセージを表示するオブジェクトを生成し、（５）により"Get input filename..."のボタンオブジェクトを生成する。（６）は、ボタンに触れるとソフトキーボードが表示されるようにオブジェクトを追加することを示している。（７）は、ソフトキーボードを表示し、ファイル名入力を促すことを示している。（８）により、ソフトキーボードから入力されたファイルを印刷する。
【００４２】
なお、プログラムのボタン操作（（５）"Get input filename..."）では、ボタン操作の結果は、プログラムがメッセージとして受信し、そのメッセージを受信した場合に実際のボタン操作に対応した処理を行う。その処理が（６）のaddChangeListener()で設定されている。
【００４３】
（ダウンロードから起動までの手順の例）
Ｊａｖａ（登録商標）アプリのインストール及び起動はアプリケーション管理部２０４が管理しており、アプリケーション管理部２０４の機能を用いることにより、以下のような手順でＪａｖａ（登録商標）アプリのダウンロードから起動までの処理を行うことが可能である。この手順を図９のフローチャートを参照しながら、上記のシンプルプリンターを起動する場合を例にとり説明する。
【００４４】
アプリケーション管理部２０４は、他のアプリケーションと同様にして複合機１００の起動時に起動される。アプリケーション管理部２０４に対応するアプリケーション選択キーを押すことにより、複合機１００の操作パネルにアプリケーション管理部２０４を操作するためのユーザーインタフェース画面を表示する（ステップＳ１）。当該ユーザーインタフェース画面においてＪａｖａ（登録商標）アプリとしてシンプルプリンターがインストールされていることがわかれば、シンプルプリンターを選択して起動する（ステップＳ２）。
【００４５】
インストールされていなければ、ユーザーインタフェース画面からアプリケーションのロードを指定することによりアプリケーションロード画面が表示される（ステップＳ３）。
【００４６】
ユーザーは、このアプリケーションロード画面から、Ｗｅｂサイトからシンプルプリンターをダウンロードするか、複合機１００に挿入されるメモリカードからダウンロードするかを選択する（ステップＳ４）。
【００４７】
メモリカードからダウンロードする場合は、メモリカードを複合機１００に差し込むことによりアプリケーション管理部２０４がメモリカード内のファイルを調査し、格納されているファイルを複合機１００の操作パネル上に表示する（ステップＳ５）。ユーザーがシンプルプリンターを選択すると（ステップＳ６）、アプリケーション管理部２０４は当該アプリが複合機１００で実行可能かどうかの確認を行う（ステップＳ７）。そして、確認の結果、実行可能であればダウンロードを行い、ハードディスクへのインストールを行うとともに、アプリケーション管理部２０４は、アプリケーション名（シンプルプリンター）を取得し、アプリケーションリストに追加する（ステップＳ９）。なお、アプリケーションリストは、インストール済みのＪａｖａ（登録商標）アプリを把握するために、アプリケーション管理部２０４が管理するファイルである。
【００４８】
Ｗｅｂサーバーからシンプルプリンターをダウンロードする場合は、ステップ４にてＷｅｂを選択すると、ＵＲＬを指定するための画面が表示され、そこでユーザが、シンプルプリンターを保持するＷｅｂサイトのＵＲＬを入力する（ステップＳ１０）。アプリケーション管理部２０４がＷｅｂサイトにアクセスし（ステップＳ１１）、シンプルプリンターが複合機１００で実行可能かどうかの確認を行い（ステップＳ１２）、シンプルプリンターをダウンロードする（ステップＳ１３）。そして、アプリケーション管理部２０４は、ハードディスクへのインストールを行うとともに、アプリケーション名（シンプルプリンター）を取得し、アプリケーションリストに追加する（ステップＳ１４）。
【００４９】
なお、アプリケーション管理部２０４が自動的にメモリカード又はＷｅｂサーバーを検索し、ハードディスクへのインストールを行うようにしてもよい。なお、上記の例では複合機１００にＪａｖａ（登録商標）アプリをインストールする例について説明しているが、Ｊａｖａ（登録商標）アプリは必ずしも複合機１００のハードディスクにインストールしなくても実行することができる。
【００５０】
上記のＪａｖａ（登録商標）アプリが複合機１００で実行可能か否かに関する確認に際しては、アプリケーション管理部２０４は、プログラムサイズ、バージョン、プログラム最終更新情報、使用するメモリワークサイズ、使用するストレージサイズ、予め使用するネットワークアドレス、利用可能期間（利用回数）、アプリケーションプログラム名等についての確認を行う。これらの情報は、Ｊａｖａ（登録商標）アプリに付随している情報である。なお、第２の実施の形態において後述するように、これらの情報は、Ｊａｖａ（登録商標）アプリに対応するＪＮＬＰファイルから取得することが可能である。
【００５１】
以上の処理が完了することにより、ダウンロードしたシンプルプリンターを利用できる状態になり、ユーザーは、ユーザーインタフェース画面（ステップＳ１）からシンプルプリンターを起動する（ステップＳ１５）。これにより、仮想マシン２０２が起動し、シンプルプリンターが実行される。
【００５２】
起動されたシンプルプリンターはＪａｖａ（登録商標）コアクラス及び複合機クラスを使用して複合機１００を操作し、前述した通りのシンプルプリンター用のユーザーインターフェース画面を表示する。ユーザーは、このユーザーインターフェース画面から印刷したいファイル名を入力し、印刷を行う。ここでは、"/usr/hdd/photo.tiff"と入力を行い、複合機内のハードディスク内の"/usr/hdd"のディレクトリに格納されている"photo.tiff"ファイルを印刷する。
【００５３】
印刷が完了すると、アプリケーション管理部２０４からシンプルプリンターの実行を終了する。
（第２の実施の形態）
複合機１００では、ＪＮＬＰ（Ｊａｖａ（登録商標） Networking Language Protocol）を用いて、インストールされているＪａｖａ（登録商標）アプリの自動更新を行うことが可能である。以下、ＪＮＬＰを用いたＪａｖａ（登録商標）アプリの自動更新について説明する。なお、以下の処理はアプリケーション管理部２０４の制御により行われるものである。
【００５４】
以下で説明する処理ではＪＮＬＰファイル（アプリケーション情報ファイルともいう）が用いられるので、まず、ＪＮＬＰファイルについて説明する。ＪＮＬＰファイルはＪａｖａ（登録商標）アプリと１対１に対応しており、Ｊａｖａ（登録商標）アプリの定義付けに係る情報を含んでいる。すなわち、Ｊａｖａ（登録商標）アプリ毎に、それに対応するＪＮＬＰファイルが付随する。
【００５５】
図１０は、ＪＮＬＰファイルの構文の例を表す。ＪＮＬＰファイルはＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）ファイルであり、ＪＮＬＰファイル書式はＪＮＬＰ規格に準拠している。ただし、本実施の形態では独自の拡張を施している部分があるため、以下その部分について説明する。
【００５６】
記述１は、ｉｎｆｏｒｍａｔｉｏｎエレメントであり、アプリケーション名を示すｔｉｔｌｅエレメント（記述１Ａ）や、ベンダ名を示すｖｅｎｄｅｒエレメント（記述１Ｂ）や、ベンダの電話番号を示すｔｅｌｅｐｈｏｎｅエレメント（記述１Ｃ）や、ベンダのファクス電話番号を示すｆａｘエレメント（記述１Ｄ）や、アプリケーションのプロダクトＩＤを示すｐｒｏｄｕｃｔＩＤエレメント（記述１Ｅ）を含んでいる。
【００５７】
記述２は、ｓｅｃｕｒｉｔｙエレメントである。
【００５８】
記述３は、ｒｅｓｏｕｒｃｅエレメントであり、Ｊａｖａ（登録商標）アプリのバージョンを指定するｊｓｄｋエレメント（記述３Ａ）や、ＪＡＲファイル（Ｊａｖａ（登録商標）アプリの実行ファイル）とそのバージョンを指定するｊａｒエレメント（記述３Ｂ）や、ＳＵＢ−ＪＮＬＰファイルを指定するｓｕｂ−ｊｎｌｐエレメント（記述３Ｃ）を含んでいる。
【００５９】
記述４は、ｕｐｄａｔｅエレメントであり、更新処理の実行方法を設定するエレメントである。ａｕｔｏであればアプリケーションの更新処理は自動更新で実行され、ｍａｎｕａｌであればアプリケーションの更新処理は手動更新で実行され、ｍａｉｌであればアプリケーションの更新処理が実行可能である場合にその旨を通知する更新通知メールが配信される。
【００６０】
記述５は、ｉｎｓｔａｌｌエレメントであり、インストール処理の実行方法を設定するエレメントである。ａｕｔｏであればアプリケーションのインストール先は自動選択にて選択され、ｍａｎｕａｌであればアプリケーションのインストール先は手動選択にて選択される。記述６は、アプリケーションのタイプが「ＧＵＩ有」であるか「ＧＵＩ無」であるかを示す。
【００６１】
また、Ｊａｖａ（登録商標）アプリに対応するＪＮＬＰファイルの内容は、一般的に図１１に示すようなツリー構造となっている。上位のＪＮＬＰファイルから参照されるＪＮＬＰファイルは、当該上位のＪａｖａ（登録商標）プログラムの実行の中で使用されるモジュールに対応している。
【００６２】
図１０のｕｐｄａｔｅエレメントで触れたように、インストール済みのＪａｖａ（登録商標）アプリは更新処理の対象となる。以下、インストール済みのＪａｖａ（登録商標）アプリを自動更新する自動更新処理について説明する。
【００６３】
図１２は、メモリカードの一例であるＳＤｃａｒｄ又はＨＤＤ（ハードディスク）内のＪａｖａ（登録商標）アプリ（更新対象アプリ）を、ＳＤｃａｒｄからのＪａｖａ（登録商標）アプリ（更新用アプリ）に自動更新する自動更新処理に係るフローチャートである。
【００６４】
アプリケーション管理部２０４は、複合機１００に接続された更新用ＳＤｃａｒｄスロットに更新用ＳＤｃａｒｄがセットされた場合、更新用ＳＤｃａｒｄ内の更新用アプリのＪＮＬＰファイルを取得（ステップＳ１０１）する。アプリケーション管理部２０４は、そのＪＮＬＰファイルのｕｐｄａｔｅエレメントが「ａｕｔｏ」で、そのＪＮＬＰファイルに係る更新用アプリと同一の更新対象アプリが複合機１００に存在する場合（ステップＳ１０２・Ｓ１０３）には、その更新用アプリのバージョンとその更新対象アプリのバージョンとを比較（ステップＳ１０４）する。アプリケーション管理部２０４は、更新用アプリのバージョンが更新対象アプリのバージョンより新しい場合（ステップＳ１０５）には、更新用アプリをもって更新対象アプリを更新（ステップＳ１０６）する。すなわち、ＪａｒファイルとＪＮＬＰファイルを更新する。
【００６５】
図１３は、ＳＤｃａｒｄ又はＨＤＤ内のＪａｖａ（登録商標）アプリ（更新対象アプリ）を、ＷｅｂからのＪａｖａ（登録商標）アプリ（更新用アプリ）に自動更新する自動更新処理に係るフローチャートである。
【００６６】
アプリケーション管理部２０４は、更新対象アプリのＪＮＬＰファイルを取得（ステップＳ２０１）する。アプリケーション管理部２０４は、そのＪＮＬＰファイルのｕｐｄａｔｅエレメントが「ａｕｔｏ」で、そのＪＮＬＰファイルに係る更新対象アプリと同一の更新用アプリが、複合機１００とネットワーク接続されたＷｅｂサーバ内に存在する場合（ステップＳ２０２・Ｓ２０３）には、その更新対象アプリのバージョンとその更新用アプリのバージョンとを比較（ステップＳ２０４）する。アプリケーション管理部２０４は、更新対象アプリのバージョンより更新用アプリのバージョンが新しい場合（ステップＳ２０５）には、更新対象アプリを更新用アプリをもって更新（ステップＳ２０６）する。
【００６７】
なお、複合機１００が更新用アプリにアクセスする先はＪＮＬＰファイルを参照することにより取得できる。また、ＪＮＬＰファイルがツリー構造である場合には、各階層のＪＮＬＰファイルに対して上記の処理がなされる。
【００６８】
また、上記の更新のトリガーは、例えば、複合機１００電源ＯＮからの経過時間、所定の時刻、電源ＯＮ／電源ＯＦＦ、アプリケーションの実行直前／実行中／実行後、アイドルの所定時間経過、等とすることができる。
【００６９】
第１の実施の形態においてもＪＮＬＰファイルを用いる構成とすることができる。その場合、Ｊａｖａ（登録商標）アプリのダウンロードの前に、それに対応するＪＮＬＰファイルを取得し、そのＪＮＬＰの記述に基づき当該Ｊａｖａ（登録商標）アプリが実行可能かどうかを確認することができる。その場合、ＪＮＬＰファイルには、Ｊａｖａ（登録商標）アプリが複合機１００で実行可能かどうかを判断するための情報が記述される。例えば、第１の実施の形態で説明したプログラムサイズ等の他、認証のための情報、複合機１００側でＪａｖａ（登録商標）アプリ実行のために必要な機器構成（カラー対応等）、使用リソース情報等が記述される。このＪＮＬＰファイルに記述された情報と、複合機１００の使用リソース情報等とを比較した結果、Ｊａｖａ（登録商標）アプリを実行できないと判断したら、例えば、警告を表示する。また、認証のために、Ｊａｒファイルに電子署名を付し、アプリケーション管理部２０４が署名の検証を行うようにしてもよい。
【００７０】
（第３の実施の形態）
次に、ＰＣなどにより開発したＪａｖａ（登録商標）アプリを当該ＰＣで実行することにより、複合機をリモート操作する方法について説明する。
【００７１】
図１４に、本実施の形態におけるＪａｖａ（登録商標）アプリ実行時のシステム構成を示す。同図に示すように、本システムは、複合機の機能を有していないＰＣ３００と、複合機１００とがネットワーク４００により接続された構成を有している。ＰＣ３００は、例えば、複合機１００用のＪａｖａ（登録商標）アプリの開発のためのＰＣである。
【００７２】
ＰＣ３００は、Ｊａｖａ（登録商標）アプリケーションであるシンプルプリンター３０１、Ｊａｖａ（登録商標）コアクラス３０４、複合機１００における複合機クラスを操作することを可能とするクライアント複合機クラス３０３、複合機１００のアプリケーション管理部２０４と通信することによりアプリケーションの管理を行うリモートアプリケーション管理部３０２、仮想マシン３０５、及びＯＳ３０６を有している。
【００７３】
また、複合機１００は、Ｊａｖａ（登録商標）実行環境１１６の構成に加えて、サーバ複合機アプリケーション２１０を有している。サーバ複合機アプリケーション２１０は、ＰＣ３００からのリモート操作サービスを提供するために複合機１００で実行されるアプリケーションである。なお、図１４ではネイティブプログラムインタフェースの図示を省略している。
【００７４】
ＰＣ３００におけるクライアント複合機クラス３０３は、サーバ複合機アプリケーション２１０と通信を行い、複合機１００のオブジェクトを操作することにより複合機１００をＰＣ３００のアプリケーションからリモート操作することを可能とする機能を有している。これにより、アプリケーションの分散処理を実現する。遠隔にあるＰＣ３００から複合機１００上のオブジェクトを操作する技術は、例えばＪａｖａ（登録商標）ベースの分散処理技術を用いることにより実現できる。
【００７５】
また、リモートアプリケーション管理部３０２が複合機１００に搭載されたアプリケーション管理部２０４と通信することにより、複合機１００用のＪａｖａ（登録商標）アプリケーション管理機能をＰＣ３００まで拡張することが可能である。なお、リモートアプリケーション管理部３０２は、複合機１００のアプリケーション管理部２０４と同様の機能を有している。すなわち、Ｊａｖａ（登録商標）アプリ実行管理機能（起動/強制終了/サスペンド/レジュームなど）、Ｊａｖａ（登録商標）アプリのインストールやバージョンアップ（ダウンロード時のチェック）、インストール済みのＪａｖａ（登録商標）アプリの削除、アプリケーション登録のパスワード設定、Ｊａｖａ（登録商標）アプリケーションの保存、インストールされているＪａｖａ（登録商標）アプリのリスト表示などの機能を有している。上記の処理を、複合機１００のアプリケーション管理部２０４と必要に応じて通信を行いながら実行する。
【００７６】
また、ＰＣ３００のクライアント複合機クラス３０３は、複合機１００の一部の機能をエミュレートする機能も有している。エミュレーションの機能としては、例えば操作パネルのエミュレーションがある。
【００７７】
すなわち、ＰＣ３００で実行するアプリケーションにより複合機１００を操作する場合、複合機１００の操作パネルを使用するのか、それとも、ＰＣ３００で操作パネルをエミュレーションして表示するのかを選択できる。操作パネルの機能をエミュレートする場合、複合機１００の操作パネルにおける画面表示は、ＰＣ３００の画面上への表示とし、複合機１００の操作パネルにおける操作ボタンの操作には、ＰＣ３００のキーボード及びマウスを使用する。なお、複合機１００の操作パネルを使用するのか複合機１００の操作パネルを使用するのかの選択は、リモートアプリケーション管理部３０２から複合機１００のアプリケーション管理部２０４に要求を出すことにより行われる。例えば、リモートアプリケーション管理部３０２から複合機１００のアプリケーション管理部２０４にＰＣ３００で操作パネルをエミュレートする旨の通知をした場合には、アプリケーション管理部２０４は、複合機１００の操作により生じる画面表示情報を複合機１００に表示するのではなくＰＣ３００に送信するように制御する。
【００７８】
また、Ｊａｖａ（登録商標）アプリをＰＣ３００から実行する場合に、リモート側のＰＣ３００のリソースと複合機１００のリソースで共通するリソースに関してはいずれかのリソースを選択することができる。例えば、ＰＣ３００と複合機１００で共通するリソースであるハードディスクへのアクセスを指示する場合、ＰＣ３００のハードディスクと複合機１００のハードディスクのどちらを使用するかをＰＣ３００から選択できる。そのような共通のリソースとして、ネットワーク機能に関するリソースやＩ／Ｏ（ＵＳＢ、ｉｌｉｎｋ、ＲＳ２３２Ｃ）などがある。
【００７９】
次に、図１４に示す環境において、Ｊａｖａ（登録商標）アプリをＰＣ３００で実行して複合機１００を操作する手順について図１５のフローチャートを参照して説明する。以下、Ｊａｖａ（登録商標）アプリとして上述したシンプルプリンターを用いる例について説明する。
【００８０】
まず、ＰＣ３００においてリモートアプリケーション管理部３０２を起動する。なお、複合機１００では既にアプリケーション管理部２０４を含むＪａｖａ（登録商標）実行環境１１６とサーバ複合機アプリケーション２１０が実行されているものとする。
【００８１】
リモートアプリケーション管理部３０２は、アプリケーション選択用の画面をＰＣ３００上に表示する（ステップＳ２１）。このときＪａｖａ（登録商標）アプリが複合機１００のハードディスク又はＰＣ３００のハードディスクにインストールされているか否かをチェックする。このチェックは、例えば、リモートアプリケーション管理部３０２がＰＣ３００での確認を行い、複合機１００のアプリケーション管理部２０４が複合機１００での確認を行ってリモートアプリケーション管理部３０２に結果を通知することにより実施することができる。Ｊａｖａ（登録商標）アプリが存在すると、前記画面にＪａｖａ（登録商標）アプリ名を表示する。ユーザがシンプルプリンターを選択することにより、シンプルプリンターが起動される（ステップＳ２２）。
【００８２】
Ｊａｖａ（登録商標）アプリがインストールされているか否かの確認の結果、どちらのハードディスクにもＪａｖａ（登録商標）アプリがインストールされていない場合には、上記の画面からアプリケーションのロードを指定することによりアプリケーションロード画面が表示される（ステップＳ２３）。
【００８３】
ユーザーは、このアプリケーションロード画面から、Ｗｅｂサイトからシンプルプリンターをダウンロードするか、複合機１００に挿入されるメモリカードからダウンロードするかを選択する（ステップＳ２４）。
【００８４】
メモリカードからＪａｖａ（登録商標）アプリをインストールする場合、メモリカードを複合機１００に差し込むことによりアプリケーション管理部２０４がメモリカードを認識し、メモリカード内のファイル情報を調査し、ファイル情報をリモートアプリケーション管理部３０２に通知する（ステップＳ２５）。
【００８５】
リモートアプリケーション管理部３０２は、通知されたファイル情報をＰＣ３００の画面に表示し（ステップＳ２６）、ユーザーにシンプルプリンターを選択させる（ステップＳ２７）。そして、リモートアプリケーション管理部３０２はシンプルプルプリンターをダウンロードする旨をアプリケーション管理部２０４に通知し、アプリケーション管理部２０４はアプリケーション（シンプルプリンター）に関する情報をリモートアプリケーション管理部３０２に送信する。リモートアプリケーション管理部３０２はシンプルプリンターが本システムの環境で実行可能であるか否かを確認し（ステップＳ２８）、確認がとれたらアプリケーション管理部２０４にシンプルプリンターのダウンロードの指示をすることにより、シンプルプリンターのダウンロードがなされ（ステップＳ２９）、予め指定されたインストール先（ＰＣ３００のハードディスク又は複合機１００のハードディスク）にインストールされる（ステップＳ３０）。また、アプリケーションリストへシンプルプリンターが追加される。
【００８６】
なお、上記ステップＳ２８における確認項目は、例えば、プログラムサイズ、バージョン、プログラム最終更新情報、使用するメモリワークサイズ、使用するストレージサイズ、あらかじめ使用するネットワークアドレスの確認、利用可能期間（利用回数）、アプリケーションプログラム名等である。
【００８７】
Ｗｅｂサイトからシンプルプリンターをインストールする場合は、ＷｅｂサーバーのＵＲＬを指定させる画面をリモートアプリケーション管理部３０２が表示し、その画面からユーザーがＵＲＬを入力する（ステップＳ３１）。そして、リモートアプリケーション管理部３０２がＵＲＬを複合機１００のアプリケーション管理部２０４に通知し（ステップＳ３２）、アプリケーション管理部２０４がＵＲＬにより指定されたＷｅｂサイトにアクセスし（ステップＳ３３）、当該Ｗｅｂサイトが保持するアプリケーション（シンプルプリンター）がＰＣ３００から複合機１００を操作可能かどうかを確認する（ステップＳ３４）。なお、この確認は、所定の情報（例えばＪＮＬＰファイル）をアプリケーション管理部２０４が取得し、それをリモートアプリケーション管理部３０２に送信することにより、リモートアプリケーション管理部３０２が行うようにしてもよい。
【００８８】
確認がとれればシンプルプリンターをダウンロードし（ステップＳ３５）、指定されたハードディスクにインストールするとともにアプリケーションリストにシンプルプリンターを追加する（ステップＳ３６）。
【００８９】
シンプルプリンターがインストールされると、ステップＳ２１における画面からシンプルプリンターを選択することができる。選択がなされると、リモートアプリケーション管理部３０２によりシンプルプリンターがＰＣ３００側の仮想マシン３０５上にロードされ、実行される（ステップＳ３７）。
【００９０】
シンプルプリンターは、Ｊａｖａ（登録商標）コアクラス３０３及びクライアント複合機クラス３０３を使用して複合機１００を操作する。複合機１００の操作にあたっては、例えば、シンプルプリンター３０１から複合機１００のサーバ複合機アプリケーション２１０にメッセージを送信し、そのメッセージに基づきサーバ複合機アプリケーション２１０が複合機１００のＪａｖａ（登録商標）実行環境におけるオブジェクトを操作することにより複合機１００を操作する。
【００９１】
ここで、シンプルプリンター３０１は、前述したように始めにグラフィカルインターフェース画面を表示するように動作するが、その画面をＰＣ３００に表示するか、複合機１００の操作パネルに表示するかを選択することができる。この選択は、例えば、ユーザーがシンプルプリンターを選択した後に、これらのうちいずれかを選択させる画面をリモートアプリケーション管理部３０２が表示することにより実現できる。ここでは、ＰＣ３００を選択し、ＰＣ３００に操作パネルの画面をエミュレートした画面を表示する。
【００９２】
次に、ユーザーはＰＣ３００の画面から印刷するファイル名を選択することになるが、ここでは、ファイルの指定先を、ＰＣ３００のハードディスクにするか、複合機１００のハードディスクにするかを選択できる。複合機１００のハードディスクを選択できることにより、あたかも複合機１００の操作パネルで操作しているかのような操作をＰＣ３００上で行うことが可能となる。この指定は、例えば、リモートアプリケーション管理部３０２によりシンプルプリンターを選択したときに、どちらのハードディスクを選択するかを入力させる画面を表示することにより実現できる。
【００９３】
そして、複合機１００のハードディスクを指定した場合は、ＰＣ３００の画面から、印刷するファイルを例えば"/hdd/ts/photo.tiff"と指定すると、複合機１００のハードディスクにあるファイルが選択され、印刷が実行される。
【００９４】
複合機１００の操作を完了したい場合は、リモートアプリケーション管理部３０２は、複合機１００のアプリケーション管理部２０４に終了又は休止の要求を行い、複合機１００との通信を遮断する。
【００９５】
なお、第３の実施の形態においても、第２の実施の形態のように、ＪＮＬＰファイルを用いてＪａｖａ（登録商標）アプリの自動更新を行うことが可能である。
【００９６】
（第４の実施の形態）
第３の実施の形態における遠隔操作に関する他の例を第４の実施の形態として次に説明する。第４の実施の形態では、複合機１００において、図１に示したＪＡＶＡ（登録商標）実行環境１１６、ＪＡＶＡ（登録商標）アプリ１１７の部分の構成を、図１６に示す構成としている。
【００９７】
図１６に示すように、ＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８を備えている。ＪＳＤＫプラットフォーム１４８は、他のソフトウェアとの仲介やアプリケーション管理を行うものである。
【００９８】
ＳＤＫとは、専用のソフトウェア開発キットであり、ＳＤＫを使用して開発したアプリケーションをＳＤＫアプリと呼ぶ。専用のＳＤＫとしては、例えばＪａｖａ（登録商標）言語でアプリケーションを開発するための「ＪＳＤＫ」が提供される。ＪＳＤＫを使用して開発したアプリケーションを「ＪＳＤＫアプリ」と呼ぶ。
【００９９】
図１７は、図１６のＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８のクラス図である。ＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８は、Ｊａｖａ（登録商標）コンパイラによりソースコードからバイトコードに一括翻訳されており、Ｊａｖａ（登録商標）仮想マシンにより逐次実行される。ＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８は、Ｊａｖａ（登録商標）  ２  Ｍｉｃｒｏ  ＥｄｉｔｉｏｎのＰｅｒｓｏｎａｌ  Ｂａｓｉｓ  Ｐｒｏｆｉｌｅをベースとする実装となっている。
【０１００】
ＪＳＤＫアプリ１４７としては、ユーザアプリ５０１と、ＪＳＤＫ  ＧＵＩ  Ｍａｎａｇｅｒ５１１と、Ｔａｓｋ  Ｂａｒ  Ｍａｎａｇｅｒ５１２等が存在する。
【０１０１】
ユーザアプリ５０１は、複合機１００のユーザ（例えばベンダ）がＪＳＤＫを使用して開発したＪＳＤＫアプリである。ＪＳＤＫ  ＧＵＩ  Ｍａｎａｇｅｒ５１１は、他のＪＳＤＫアプリ（ユーザアプリ５０１等）を操作対象とする操作画面の表示等を行うＪＳＤＫアプリである。Ｔａｓｋ  Ｂａｒ  Ｍａｎａｇｅｒ５１２は、他のＪＳＤＫアプリ（ユーザアプリ５０１等）を操作対象とするタスクバーの表示等を行うＪＳＤＫアプリである。
【０１０２】
ユーザアプリ５０１はここでは、スタンドアロンアプリケーションやアプレットと並ぶＪａｖａ（登録商標）アプリケーションであるＸｌｅｔである。ＪＳＤＫ  ＧＵＩ  Ｍａｎａｇｅｒ５１１とＴａｓｋ  Ｂａｒ  Ｍａｎａｇｅｒ５１２はここでは、独自の拡張を施したＸｌｅｔ（ＸｌｅｔＥｘ）である。
【０１０３】
ＪＳＤＫプラットフォーム１４８には、ＪＳＤＫ  Ｍａｉｎ５２１と、ＪＳＤＫ  Ｅｎｖｉｒｏｎｍｅｎｔ５２２と、Ｌｏｃａｌｅ  Ｍａｎａｇｅｒ５２３と、Ｘｌｅｔ  Ｍａｎａｇｅｒ５３１と、Ｍｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ５３２と、ＪＳＤＫ  Ｍａｎａｇｅｒ５３３と、Ｓｅｎｄ  Ｍａｎａｇｅｒ５４１と、Ｅｖｅｎｔ  Ｍａｎａｇｅｒ５４２と、Ｓｙｓｔｅｍ  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ５４３と、Ｐａｎｅｌ  Ｍａｎａｇｅｒ５４４と、Ｉｎｓｔａｌｌ  Ｍａｎａｇｅｒ５４５と、Ｓｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ５４６等のクラスが存在する。
【０１０４】
ＪＳＤＫ  Ｍａｉｎ５２１は、ＪＳＤＫ  Ｅｎｖｉｒｏｎｍｅｎｔ５２２の起動を行うクラスである。ＪＳＤＫ  Ｅｎｖｉｒｏｎｍｅｎｔ５２２は、ＪＳＤＫシステムの起動環境設定を行うクラスである。Ｌｏｃａｌｅ  Ｍａｎａｇｅｒ５２３は、国際化対応（言語指定）を行うクラスである。
【０１０５】
Ｘｌｅｔ  Ｍａｎａｇｅｒ５３１は、１対１でＸｌｅｔのライフサイクルを管理するクラスである。ここでは、５個のＸｌｅｔのライフサイクルが１対１で５個のＸｌｅｔ  Ｍａｎａｇｅｒ５３１によって管理される。Ｍｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ５３２は、全てのＸｌｅｔ  Ｍａｎａｇｅｒ５３１のライフサイクルを管理するクラスである。ここでは、５個のＸｌｅｔ  Ｍａｎａｇｅｒ５３１のライフサイクルが全て１個のＭｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ５３２によって管理される。ＪＳＤＫ  Ｍａｎａｇｅｒ５３３は、ＪＳＤＫシステム全体のライフサイクルを管理するクラスである。例えば、Ｍｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ５３２，Ｓｅｎｄ  Ｍａｎａｇｅｒ５４１，Ｅｖｅｎｔ  Ｍａｎａｇｅｒ５４２，Ｓｙｓｔｅｍ  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ５４３，Ｐａｎｅｌ  Ｍａｎａｇｅｒ５４４，Ｉｎｓｔａｌｌ  Ｍａｎａｇｅｒ５４５，Ｓｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ５４６のライフサイクルが、ＪＳＤＫ  Ｍａｎａｇｅｒ５３３によって管理される。なお、Ｘｌｅｔのライフサイクルとは、初期化状態（Ｌｏａｄｅｄ）、停止状態（Ｐａｕｓｅｄ）、活性化状態（Ａｃｔｉｖｅ）、終了状態（Ｄｅｓｔｒｏｙｅｄ）等の状態の遷移のことである。
【０１０６】
Ｓｙｓｔｅｍ  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ５４３は、図１のプラットフォーム１２０からのシステムイベント（電力モード等）の管理を行うクラスである。Ｐａｎｅｌ  Ｍａｎａｇｅｒ５４４は、１個のＸｌｅｔがオペレーションパネルの画面を占有する際の調停等を行うクラスである。Ｉｎｓｔａｌｌ  Ｍａｎａｇｅｒ５４５は、ＳＤｃａｒｄやＷｅｂからのインストールやアンインストールの管理を行うクラスである。
【０１０７】
図１７のＪＳＤＫシステムでは、ＡＰＩとして、ＪＳＤＫ  ＡＰＩ５５１とＪＳＤＫ  ＡＰＩ５５２が利用される。なお、ＸｌｅｔとＸｌｅｔＥｘの差異として、オブジェクトにアクセスするのにＪＳＤＫ  ＡＰＩ５５１の利用とＪＳＤＫプラットフォーム１４８へのアクセスが可能である点が挙げられる。図１６の複合機１００にはさらに、図１７のＪＳＤＫシステムに係る要素として、Ｃ言語とＪａｖａ（登録商標）言語のインタフェースとなるＪＳＤＫ  Ｓｅｓｓｉｏｎ５５３とＮａｔｉｖｅ  ＪＳＤＫ  Ｓｅｓｓｉｏｎ５５４や、ＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８を実行するためＪａｖａ（登録商標）仮想マシンであるＣＶＭ５５５等が存在する。
【０１０８】
このような構成を有する複合機１００を、図１４に示した場合と同様にして、図１８に示すように、ＰＣ７０１と接続する。ＰＣは複合機１００のエミュレータとして機能する。
【０１０９】
図１８のＰＣ７０１は、例えばＰＣ本体７１１と、キーボード７１２と、マウス７１３と、ディスプレイ７１４等により構成される。ＰＣ本体７１１には、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＮＶＲＡＭ、ＨＤＤ、ＭＯＤＥＭ、ＮＩＣ等が存在する。キーボード７１２とマウス７１３は、複合機１００のオペレーションパネルに代わって、オペレータが入力を行うためのハードウェア（操作部）となる。ディスプレイ７１４は、複合機１００のオペレーションパネルに代わって、オペレータが出力を得るためのハードウェア（表示部）となる。
【０１１０】
図１９は、図１８のＰＣ７０１内のＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８のクラス図である。図１６の複合機１００と同様のＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８が、図１９のＰＣ７０１内にも存在する。図１６の複合機１００内のＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８のクラス図については、図１７を参照されたい。以下、図１７と図１９の差異について説明する。
【０１１１】
第１に、図１７のＰａｎｅｌ  Ｍａｎａｇｅｒ５４４は、図１９のＰａｎｅｌ  Ｍａｎａｇｅｒ  Ｅｍｕｌａｔｏｒ７４４に置換されている。第２に、図１７のＪＳＤＫ  Ｓｅｓｓｉｏｎ５５３は、図１９のＥｍｕｌａｔｏｒ  ＪＳＤＫ  Ｓｅｓｓｉｏｎ７５３に置換されている。第３に、図１７のＮａｔｉｖｅ  ＪＳＤＫ  Ｓｅｓｓｉｏｎ５５４は、図１９のＥｖｅｎｔ  Ｅｍｕｌａｔｏｒ７５４に置換されている。第４には、図１７のＣＶＭ５５５は、図１９のＪＶＭ７５５に置換されている。
【０１１２】
Ｐａｎｅｌ  Ｍａｎａｇｅｒ  Ｅｍｕｌａｔｏｒ７４４は、Ｐａｎｅｌ  Ｍａｎａｇｅｒ５４４をエミュレートして、オペレーションパネルの操作をキーボード７１２やマウス７１３の操作に変換するクラスである。Ｅｍｕｌａｔｏｒ  ＪＳＤＫ  Ｓｅｓｓｉｏｎ７５３は、通信経路の確立処理を実行するクラスである。Ｅｖｅｎｔ  Ｅｍｕｌａｔｏｒ７５４は、複合機１００の動作をエミュレートするクラスである。ＪＶＭ７５５は、ＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８を実行するためＪａｖａ（登録商標）仮想マシンである。
【０１１３】
図２０は、複合機１００内で実行される遠隔操作の準備処理の実行手順について説明するための図である。
【０１１４】
最初に、複合機１００内のＳｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ５４６とＰＣ７０１内のＳｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ５４６との間で、セッションが確立（１）される。なお、セッションの確立は、ＳＩＰ(Session Initiation Protocol)に類似したプロトコルによるメッセージ送受信により行われる。
【０１１５】
次に、複合機１００内のＳｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ５４６は、遠隔操作に移行できるか否かを複合機１００内のＪＳＤＫ  Ｍａｎａｇｅｒ５３３に問い合わせて、遠隔操作に移行できるか否かを判断（２）する。
【０１１６】
次に、複合機１００内のＳｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ５４６は、遠隔操作に移行できる場合には、遠隔操作に必要なメッセージに係る要求を、複合機１００内のＳｅｎｄ  Ｍａｎａｇｅｒ５４１を介してＰＣ７０１に送信（３）して、遠隔操作に必要なメッセージに係る応答を、複合機１００内のＥｖｅｎｔ  Ｍａｎａｇｅｒ５４２を介してＰＣ７０１から受信（４）する。
【０１１７】
次に、複合機１００内のＳｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ５４６は、遠隔操作用の情報をＰＣ７０１に転送する旨の要求を、Ｐａｎｅｌ  Ｍａｎａｇｅｒ５４４に送信（５）する。
【０１１８】
最後に、複合機１００内のＳｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ５４６とＰＣ７０１内のＳｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ５４６との間で、遠隔操作準備処理が完了した旨の通知が授受（６）される。これによって、ＰＣ７０１からの複合機１００の遠隔操作が可能になる。なお、第３の実施の形態で説明したアプリケーションの分散処理に係る機能は、例えば、複合機１００内のＳｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ５４６とＰＣ７０１内のＳｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ５４６に持たせることができる。
【０１１９】
第１〜第４の実施の形態で説明した各プログラムは、メモリカードなどの記録媒体に格納することができ、そのメモリカードから複合機１００にインストールすることが可能である。また、ＰＣ３００における仮想マシンなどのＪａｖａ（登録商標）実行環境を構成するプログラムもＣＤ−ＲＯＭなどの記録媒体に格納することができ、そのＣＤ−ＲＯＭからＰＣ３００にインストールすることが可能である。
【０１２０】
以下、本明細書に開示される構成を例示的に列挙する。
（第１項）  
画像形成処理におけるハードウェア資源の制御に関するサービスを複数のアプリケーションに共通に提供する制御部を備えることにより、複数のアプリケーションを搭載可能に構成された画像形成装置であって、
前記アプリケーションとしての仮想マシンと、
前記仮想マシン上で動作するアプリケーションと、
前記仮想マシン上で動作するアプリケーションを管理するためのアプリケーション管理部とを備えたことを特徴とする画像形成装置。
【０１２１】
このように、画像形成装置のアプリケーション層に仮想マシンを搭載したので、仮想マシン上で動作するアプリケーションであるＪａｖａ（登録商標）アプリケーションを実行でき、また、アプリケーション管理部を設けたのでＪａｖａ（登録商標）アプリケーションの追加、削除、実行管理などを容易に行うことができることから、本発明により複合機上でＪａｖａ（登録商標）アプリケーションを容易に実行できるようになる。
（第２項）  
前記仮想マシン上で動作するアプリケーションは、前記画像形成装置を制御するためのクラスを用いて画像形成装置を操作する第１項に記載の画像形成装置。
（第３項）  
前記クラスとして、前記画像形成装置の操作パネルへの情報の出力及び情報の入力を行うための操作パネルクラスを有する第２項に記載の画像形成装置。
【０１２２】
このようにクラスを用いることにより、容易に画像形成装置のためのアプリケーションを開発できる。
（第４項）  
前記アプリケーション管理部は、前記仮想マシン上で動作するアプリケーションの起動を含む実行管理機能を有する第１項に記載の画像形成装置。
（第５項）  
前記アプリケーション管理部は、前記仮想マシン上で動作するアプリケーションがインストールされていない場合に、アプリケーションのダウンロードを行う第４項に記載の画像形成装置。
【０１２３】
アプリケーション管理部をこのような構成とすることにより、アプリケーションの起動やインストールを容易に行うことができる。
（第６項）
前記アプリケーション管理部は、前記アプリケーションに付随するアプリケーション情報ファイルを参照し、当該アプリケーション情報ファイルの情報に基づき前記アプリケーションの更新を行う第１項に記載の画像形成装置。
【０１２４】
本構成によれば、アプリケーション情報ファイルの設定に基づきアプリケーションの更新を行うことができるので、例えばアプリケーションを自動的に更新できる。
（第７項）
前記アプリケーション管理部は、前記アプリケーションに付随するアプリケーション情報ファイルに記述されたバージョンと、更新用アプリケーションに付随するアプリケーション情報ファイルに記述されたバージョンとを比較し、更新用アプリケーションに付随するアプリケーション情報ファイルに記述されたバージョンのほうが新しい場合に、前記アプリケーションの更新を行う第６項に記載の画像形成装置。
【０１２５】
これにより、バージョンの古いアプリケーションを自動的に更新できるようになる。
（第８項）  
前記アプリケーション管理部は、メモリカード又はＷｅｂサイトからアプリケーションをダウンロードする第５項に記載の画像形成装置。
（第９項）  
前記アプリケーション管理部は、前記アプリケーションに付随するアプリケーション情報ファイルに記述された場所からアプリケーションをダウンロードする第６項に記載の画像形成装置。  
（第１０項）  
前記アプリケーション管理部は、前記アプリケーションをダウンロードする前に、そのアプリケーションが前記画像形成装置で実行可能か否かの確認を行う第５項又は６項に記載の画像形成装置。
（第１１項）  
前記アプリケーション管理部は、前記アプリケーションに付随するアプリケーション情報ファイルに記述された情報に基づき前記確認を行う第１０項に記載の画像形成装置。
（第１２項）  
前記確認を行う際に、前記アプリケーションが必要とする前記画像形成装置のリソースを含む事項の確認を行う第１０項に記載の画像形成装置。
【０１２６】
アプリケーション管理部がこのような機能を有することにより、容易かつ確実にインストール、及び更新を行うことが可能になる。
（第１３項）  
前記仮想マシン上で動作するアプリケーションとして、ネットワークを介して前記画像形成装置に接続された端末装置からの操作要求を受けて前記画像形成装置を操作するサーバーアプリケーションを有する第１項に記載の画像形成装置。
【０１２７】
本構成によれば、端末装置で実行されるアプリケーションに基づく操作手順に従って画像形成装置を操作することが可能となる。
（第１４項）  
前記アプリケーション管理部は、前記端末装置と通信することにより処理を行う第１３項に記載の画像形成装置。
（第１５項）  
複数のアプリケーションを搭載可能に構成された画像形成装置を操作する端末装置であって、
仮想マシンと、
前記仮想マシン上で動作し、前記画像形成装置を操作するアプリケーションと、
前記仮想マシン上で動作するアプリケーションを管理するためのアプリケーション管理部とを備えたことを特徴とする端末装置。
【０１２８】
本構成によれば、端末装置で実行するアプリケーションにより上記の画像形成装置を操作することが可能となる。
（第１６項）  
前記仮想マシン上で動作するアプリケーションは、ネットワークを介して前記端末装置に接続された前記画像形成装置を制御するためのクラスを用いて前記画像形成装置を操作する第１５項に記載の端末装置。
（第１７項）  
前記画像形成装置の操作をＪａｖａ（登録商標）に基づく分散処理技術を用いて行う第１５項又は１６項に記載の端末装置。
【０１２９】
このように、ネットワークに高度に対応したＪａｖａ（登録商標）の分散処理技術を用いることにより、ネットワーク上の任意の装置で実行したアプリケーションの手順に従って画像形成装置を操作することが可能となる。
（第１８項）  
前記クラスは、前記画像形成装置の操作パネルへの表示画面をエミュレートした画面を前記端末装置に表示する機能を含む第１６項に記載の端末装置。
【０１３０】
これにより、端末装置上で、複合機を操作する場合と同様の操作を行うことが可能となる。
（第１９項）  
前記画像形成装置のハードディスクと前記端末装置のハードディスクのうちいずれのハードディスクにアクセスするかを選択させる機能を有する第１５項に記載の端末装置。
【０１３１】
本構成により、アプリケーションの実行に際して端末装置から複合機のハードディスクに格納されたファイルを選択して、例えば印刷させることが可能となる。
（第２０項）  
前記アプリケーション管理部は、前記仮想マシン上で動作するアプリケーションの起動を含む実行管理機能を有する第１５項に記載の端末装置。
（第２１項）  
前記アプリケーション管理部は、前記仮想マシン上で動作するアプリケーションがインストールされていない場合に、アプリケーションのダウンロードを前記画像形成装置と通信することにより行う第２０項に記載の端末装置。
（第２２項）
前記アプリケーション管理部は、前記アプリケーションに付随するアプリケーション情報ファイルを参照し、当該アプリケーション情報ファイルの情報に基づき前記アプリケーションの更新を行う第１５項に記載の端末装置。
（第２３項）  
前記ダウンロードは、前記画像形成装置に挿入するメモリカード又はＷｅｂサイトから行う第２１項に記載の端末装置。
（第２４項）  
前記アプリケーション管理部は、前記メモリカードに格納されたファイル情報を前記画像形成装置から受信し、表示をする第２３項に記載の端末装置。
（第２５項）  
前記アプリケーション管理部は、前記端末装置に入力されたＵＲＬ情報を前記画像形成装置に送信し、前記画像形成装置が該ＵＲＬ情報に基づき前記仮想マシン上で動作するアプリケーションをＷｅｂサイトからダウンロードする第２３項に記載の端末装置。
【０１３２】
このように、アプリケーション管理部が画像形成装置と通信しながら処理を行うので、画像形成装置が有しているアプリケーションの管理機能を端末装置に拡張できる。
（第２６項）  
複数のアプリケーションを搭載可能に構成された画像形成装置を、ネットワークを介して接続された端末装置上で実行するアプリケーションにより操作する方法であって、
前記画像形成装置に、前記アプリケーションとしての仮想マシンと、該仮想マシン上で動作するサーバーアプリケーションとを備え、
前記端末装置に、仮想マシンと、該仮想マシン上で動作するアプリケーションとを備え、
前記端末装置のアプリケーションによる操作要求を前記サーバーアプリケーションが受信して、該サーバーアプリケーションが前記画像形成装置を操作することを特徴とする方法。
【０１３３】
本構成によれば、複合機の機能を有さないＰＣなどの端末でアプリケーションを実行することにより、画像形成装置を操作できる。
（第２７項）
前記端末装置からの前記画像形成装置の操作は、Ｊａｖａ（登録商標）に基づく分散処理技術を用いて行う第２６項に記載の方法。
（第２８項）
前記画像形成装置にアプリケーションを管理するためのアプリケーション管理部を備え、前記端末装置に、該アプリケーション管理部と通信することによりアプリケーションを管理する遠隔アプリケーション管理部を備える第２６項に記載の方法。
【０１３４】
このように、アプリケーション管理部と通信することによりアプリケーションを管理する遠隔アプリケーション管理部を備えることにより、画像形成装置のアプリケーション管理機能を端末装置に拡張することができる。
（第２９項）
画像形成処理におけるハードウェア資源の制御に関するサービスを複数のアプリケーションに共通に提供する制御部を備えることにより、複数のアプリケーションを搭載可能に構成された画像形成装置に、
前記アプリケーションとしての仮想マシンの機能と、
前記仮想マシン上で動作するアプリケーションを管理するためのアプリケーション管理部の機能とを実現させるためのプログラム。
（第３０項）
前記仮想マシン上で動作するアプリケーションにより用いられる、前記画像形成装置を制御するためのクラスを含む第２９項に記載のプログラム。
（第３１項）  
前記クラスは、前記画像形成装置の操作パネルへの情報の出力及び情報の入力を行うための操作パネルクラスを含む第３０項に記載のプログラム。
（第３２項）  
前記アプリケーション管理部は、前記仮想マシン上で動作するアプリケーションの起動を含む実行管理機能を有する第２９項に記載のプログラム。
（第３３項）  
前記アプリケーション管理部は、前記仮想マシン上で動作するアプリケーションがインストールされていない場合に、アプリケーションのダウンロードを行う機能を有する第３２項に記載のプログラム。
（第３４項）
前記アプリケーション管理部は、前記アプリケーションに付随するアプリケーション情報ファイルを参照し、当該アプリケーション情報ファイルの情報に基づき前記アプリケーションの更新を行う機能を有する第２９項に記載のプログラム。
（第３５項）
前記アプリケーション管理部は、前記アプリケーションに付随するアプリケーション情報ファイルに記述されたバージョンと、更新用アプリケーションに付随するアプリケーション情報ファイルに記述されたバージョンとを比較し、更新用アプリケーションに付随するアプリケーション情報ファイルに記述されたバージョンのほうが新しい場合に、前記アプリケーションの更新を行う機能を有する第３４項に記載のプログラム。
（第３６項）  
前記アプリケーション管理部は、前記アプリケーションに付随するアプリケーション情報ファイルに記述された場所からアプリケーションをダウンロードする機能を有する第３４項に記載のプログラム。
（第３７項）  
前記アプリケーション管理部は、前記アプリケーションをダウンロードする前に、そのアプリケーションが前記画像形成装置で実行可能か否かの確認を行う機能を有する第３３項又は３４項に記載のプログラム。
（第３８項）  
前記アプリケーション管理部は、前記アプリケーションに付随するアプリケーション情報ファイルに記述された情報に基づき前記確認を行う機能を有する第３７項に記載のプログラム。
（第３９項）  
前記アプリケーション管理部は、前記確認を行う際に、前記アプリケーションが必要とする前記画像形成装置のリソースを含む事項の確認を行う機能を有する第３７項に記載のプログラム。
（第４０項）  
前記仮想マシン上で動作するアプリケーションは、ネットワークを介して前記画像形成装置に接続された端末装置からの操作要求を受けて前記画像形成装置を操作するサーバーアプリケーションを含む第２９項に記載のプログラム。
（第４１項）  
複数のアプリケーションを搭載可能に構成された画像形成装置を操作する端末装置に、
仮想マシンの機能と、
前記仮想マシン上で動作し、前記画像形成装置を操作するためのアプリケーションを管理するためのアプリケーション管理部の機能とを実現させるためのプログラム。
（第４２項）  
前記仮想マシン上で動作するアプリケーションにより用いられる、前記画像形成装置を制御するためのクラスを含む第４１項に記載のプログラム。
（第４３項）  
前記画像形成装置の操作をＪａｖａ（登録商標）に基づく分散処理技術を用いて行う第４１項又は４２項に記載のプログラム。
（第４４項）  
前記クラスは、前記画像形成装置の操作パネルへの表示画面をエミュレートした画面を前記端末装置に表示する機能を含む第４２項に記載のプログラム。
（第４５項）  
前記アプリケーション管理部は、前記仮想マシン上で動作するアプリケーションの起動を含む実行管理機能を有する第４１項に記載のプログラム。
（第４６項）  
前記アプリケーション管理部は、前記仮想マシン上で動作するアプリケーションがインストールされていない場合に、アプリケーションのダウンロードを前記画像形成装置と通信することにより行う機能を有する第４５項に記載のプログラム。
（第４７項）
前記アプリケーション管理部は、前記アプリケーションに付随するアプリケーション情報ファイルを参照し、当該アプリケーション情報ファイルの情報に基づき前記アプリケーションの更新を行う機能を有する第４１項に記載のプログラム。
（第４８項）  
第２９項ないし４７項のうちいずれか１項に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。  
なお、本発明の実施例は上記のものに限られず、特許請求の範囲に記載の範囲において様々な応用が考えられ得ることは言うまでもない。
【０１３５】
（効果について）
上記の構成に示したように、Ｊａｖａ（登録商標）実行環境を複合機に備えることにより、複合機上で容易にＪａｖａ（登録商標）アプリの起動やインストールなどを行うことができるようになることから、Ｊａｖａ（登録商標）アプリを容易に実行できる。また、本発明によれば、ＰＣでＪａｖａ（登録商標）アプリを実行して複合機を操作することが可能となる。
【符号の説明】
【０１３６】
１００ 複合機
１０１ 白黒ラインプリンタ
１０２ カラーラインプリンタ
１１０ ソフトウェア群
１１１ プリンタアプリ
１１２ コピーアプリ
１１３ ファックスアプリ
１１４ スキャナアプリ
１１５ ネットファイルアプリ
１１６  Ｊａｖａ（登録商標）実行環境
１１７  Ｊａｖａ（登録商標）アプリ
１２０ プラットホーム
１２１ 汎用ＯＳ
１２２  ＳＣＳ
１２３ ＳＲＭ
１２４ ＥＣＳ
１２５ ＭＣＳ
１２６ ＯＣＳ
１２７ ＦＣＳ
１２８  ＮＣＳ
１３０ アプリケーション
１４７  ＪＳＤＫアプリ
１４８  ＪＳＤＫプラットフォーム
４０ コントローラ
４５ ＡＳＩＣ
６０ オペレーションパネル
６５  ＦＣＵ
７０  エンジン
７５  プロッタ
２０１  複合機クラスライブラリ
２０２、３０５  仮想マシン
２０４  アプリケーション管理部
２１０  サーバ複合機アプリケーション  
３００  ＰＣ
３０１  シンプルプリンター
３０２  リモートアプリケーション管理部
３０３  クライアント複合機クラス
３０４  Ｊａｖａ（登録商標）コアクラス
５０１  ユーザアプリ
５１１  ＪＳＤＫ  ＧＵＩ  Ｍａｎａｇｅｒ
５１２  Ｔａｓｋ  Ｂａｒ  Ｍａｎａｇｅｒ
５２１  ＪＳＤＫ  Ｍａｉｎ
５２２  ＪＳＤＫ  Ｅｎｖｉｒｏｎｍｅｎｔ
５２３  Ｌｏｃａｌｅ  Ｍａｎａｇｅｒ
５３１  Ｘｌｅｔ  Ｍａｎａｇｅｒ
５３２  Ｍｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ
５３３  ＪＳＤＫ  Ｍａｎａｇｅｒ
５４１  Ｓｅｎｄ  Ｍａｎａｇｅｒ
５４２  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ
５４３  Ｓｙｓｔｅｍ  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ
５４４  Ｐａｎｅｌ  Ｍａｎａｇｅｒ
５４５  Ｉｎｓｔａｌｌ  Ｍａｎａｇｅｒ
５４６  Ｓｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ
５４７  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｍａｎａｇｅｒ
５５１  ＪＳＤＫ  ＡＰＩ
５５２  ＪＳＤＫ  ＡＰＩ
５５３  ＪＳＤＫ  Ｓｅｓｓｉｏｎ
５５４  Ｎａｔｉｖｅ  ＪＳＤＫ  Ｓｅｓｓｉｏｎ
５５５  ＣＶＭ
７０１  ＰＣ
７１１  ＰＣ本体
７１２  キーボード
７１３  マウス
７１４  ディスプレイ
７４４  Ｐａｎｅｌ  Ｍａｎａｇｅｒ  Ｅｍｕｌａｔｏｒ
７５３  Ｅｍｕｌａｔｏｒ  ＪＳＤＫ  Ｓｅｓｓｉｏｎ
７５４  Ｅｖｅｎｔ  Ｅｍｕｌａｔｏｒ
７５５  ＪＶＭ
８０１  ネットワーク
【先行技術文献】
【特許文献】
【０１３７】
【特許文献１】特開２００２−２８７９９０号公報
【図１】
2010057186.tif 000003
【図２】
2010057186.tif 000004
【図３】
2010057186.tif 000005
【図４】
2010057186.tif 000006
【図５】
2010057186.tif 000007
【図６】
2010057186.tif 000008
【図７】
2010057186.tif 000009
【図８】
2010057186.tif 000010
【図９】
2010057186.tif 000011
【図１０】
2010057186.tif 000012
【図１１】
2010057186.tif 000013
【図１２】
2010057186.tif 000014
【図１３】
2010057186.tif 000015
【図１４】
2010057186.tif 000016
【図１５】
2010057186.tif 000017
【図１６】
2010057186.tif 000018
【図１７】
2010057186.tif 000019
【図１８】
2010057186.tif 000020
【図１９】
2010057186.tif 000021
【図２０】
2010057186.tif 000022