JP4020359B2 - モバイル・エミュレータ・システム - Google Patents
モバイル・エミュレータ・システム Download PDFInfo
- Publication number
- JP4020359B2 JP4020359B2 JP2001365830A JP2001365830A JP4020359B2 JP 4020359 B2 JP4020359 B2 JP 4020359B2 JP 2001365830 A JP2001365830 A JP 2001365830A JP 2001365830 A JP2001365830 A JP 2001365830A JP 4020359 B2 JP4020359 B2 JP 4020359B2
- Authority
- JP
- Japan
- Prior art keywords
- application
- network
- emulator
- mobile
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Description
【発明の属する技術分野】
本発明は、ソフトウエアの開発・動作試験システムに関するものであり、特に、無線等によりネットワークにアクセスできる携帯端末等で動作するソフトウエアに対して開発・動作試験ができるシステムに関するものである。
【0002】
【技術的背景】
現在、i-modeに代表される携帯電話や携帯情報機器によるインターネット接続が広く普及している。これらは、いつでもどこでも同じ内容の情報にアクセスできることが目的となっている。一方、IEEE802.11bやBluetoothなどの局所的な無線通信技術が急速に発展しているが、これらの局所的通信技術は携帯機器向けの新しい通信サービスを創出しようとしている。つまり、局所的無線通信やローカルネットワークへの接続は、インターネットなどの大域的な情報サービスの利用を可能にするだけではく、その携帯機器が接続されているネットワーク上のデータベース、プリンタなどの固有サービスが利用可能になる。
【0003】
上述したように、IEEE802.11bやBluetoothなどの小範囲無線ネットワークやEthernetなどの有線ローカル・ネットワークの普及に伴い、これらの環境の利用を前提とした携帯機器向けのアプリケーションの開発及び動作試験を行う必要がある。こうした機器は移動するごとに計算環境が変わる。従って、別の無線ネットワークエリアや別のローカル・ネットワークに接続したときは、それ以前に利用していたサーバ類は利用できるとは限らず、その代わりに、その場所やネットワーク固有のサーバを利用する必要がある。従って、そのアプリケーション開発では、携帯機器が移動する可能性のあるすべての場所、または接続する可能性のあるすべてのネットワーク上で要求している動作を行うことができるか否かを調べる必要がある。
例えば、現在の携帯端末を利用した案内システムでは広範囲な地図にアクセスできるが、多くの利用者は現在地点に関する案内を要求している。このとき、携帯機器がローカルなサービスにアクセスできれば、行った先々の建物やフロアに設置された局所的無線通信基地局を通じて、その建物やフロア上のサーバに接続して、そのエリアの地図や情報にアクセス可能となる。しかし、これらのネットワークに依存したアプリケーション開発は、アプリケーションとともに携帯端末を移動し、移動先のローカル・ネットワークに接続してアプリケーションの動作試験を行う必要がある。また、案内システムなどでは移動順序に案内内容が依存することから、多様な移動順序でアプリケーションを動作試験する必要がある。その結果、携帯端末を建物やフロア間で移動させることになり、開発者への負担が非常に大きい。
【0004】
さて、移動計算には物理的移動と論理的移動の2種類がある。前者はコンピュータそれ自体の移動であり、後者はモバイル・コードやモバイル・エージェントなどのソフトウェアがネットワークを通じてコンピュータ間を移動することである。
物理的移動について、図1を用いて説明する。図1は、ネットワークA120,ネットワークB130,ネットワークC140の間を携帯端末(又はモバイル・コンピュータ)150が移動するときの様子を示している。物理的移動の問題の一つは、コンピュータの移動に伴い、ネットワークとの切断及び接続先ネットワークが変化することである。図1においては、ネットワークA120からネットワークB130へ移動するとき、携帯機器(又はモバイル・コンピュータ)150は、ネットワークA120との接続を切断し、ネットワークB130と接続する。次にネットワークB130からネットワークC140に移動する際には、ネットワークB130と切断してネットワークC140と接続する。
このような移動を行うことができるように、ネットワークの変更を吸収し、コンピュータ上で動作するアプリケーションからはその相違を吸収する移動透過性に関する技術がいくつか研究されている。しかし、すべての相違を吸収することは困難であり、さらに現接続先ネットワークに固有なサービスを積極的に利用するアプリケーションも存在するが、ネットワーク変更による計算環境の変化による影響を調べる方法は進んでいない。
【0005】
一方、アプリケーション開発を目的とした携帯機器のエミュレータが幾つか開発されている。これらはワークステーション上で動作し、携帯機器と同様な動作環境をアプリケーションに提供する。しかし、その多くは携帯機器がもつ制約、つまりCPUパワー不足や、少メモリ、キーボードやディスプレーなどの入出力装置の制限・欠如によって、携帯機器自体によるアプリケーション開発やデバッグが困難であることに対応したものである。従って、ネットワークを介して提供される各種サービスはエミュレータ上では再現されない。
このため、ネットワーク利用を前提にした携帯端末向けアプリケーション開発では2つの方法がある。一つの方法は、開発対象のアプリケーションをそれを動かす携帯端末、またはその携帯端末のエミュレータを提供するモバイル・コンピュータ(可搬型コンピュータ)とともに開発者が移動して、移動先のネットワークに接続させるものである。しかし、開発者への負担が大きく、開発の最終段階以外には利用するべきではない。
【0006】
もう一つの方法は、ワークステーション上のエミュレータ内でアプリケーションを動作させるとともに、そのエミュレータを介して遠隔ネットワーク上の各種情報サービスへのアクセスを許す方法である。これらにはUCバークレーのInfoPadプロジェクトやLancaster大学のネットワーク・エミュレータがある。しかし、Firewallなどのセキュリティ機構により、ローカル・ネットワーク上の各種サーバに外部ネットワークからアクセスできるとは限らない。また、ネットワーク機器やセンサのデータ収集では、ユーザ自身が携帯端末とともに移動し、移動先のローカル・ネットワークを介して、その場所にある各種機器から記録や観測データを収集することになるが、これらのアプリケーションは大データ量となることが多く、ローカル・ネットワーク上の機器とエミュレータのあいだのネットワーク・トラフィックが増大するため実用的とはいえない。
一方、モバイル・エージェントなどの論理的移動は分散システムの効率化・管理手法として近年急速に注目を集めている。しかし、物理的移動のアプリケーション開発手法として論理的移動を利用する事例はない。
【0007】
【発明が解決しようとする課題】
上記課題を解決するため、本発明の目的は、携帯端末等の移動機器向けのアプリケーションの開発及び動作試験を行う場合において、移動機器自体の物理的な移動ではなく、論理的な移動により試験等を行うことを可能とする環境を提供することである。
【課題を解決するための手段】
上記の目的を達成するために、本発明は、移動機器のアプリケーション・プログラムをネットワーク上のサーバで実行させるモバイル・エミュレータ・システムであって、前記移動機器のアプリケーション・プログラムを動作させるエミュレーション機構と、前記移動機器のアプリケーション・プログラムの実行を制御する実行制御機構と、前記移動機器のアプリケーション・プログラムが移動先のネットワークへアクセスできるようにさせるホストアクセス機構と
を備え、モバイル・エージェントとして実現されていることを特徴とする。
上述のモバイル・エミュレータ・システムをコンピュータ・システムに構築できるプログラムやこのプログラムを記録した記録媒体も本発明である。
【0008】
【発明の実施の形態】
以下、図面を参照して、本発明の実施形態を説明する。
本明細書では、モバイル・エージェントを利用した携帯機器の開発・試験システムを開示する。これはモバイル・エージェントの論理的移動を通じて携帯機器の物理的移動を擬似的に再現するものである。
このようなモバイル・エージェントは次の必要性を満足すべきものである。
・他のエミュレータと同様に、アプリケーションに対しては対象となる携帯機器の動作環境を再現すること。
・携帯端末の移動・ネットワーク接続を再現するとともに、接続先ネットワーク上のサーバ類への接続を可能とし、アプリケーションに対してはあたかも携帯端末の移動とともにネットワークに接続されているかのように再現すること。
・エミュレータ上で動作試験が行われたアプリケーションは変更や再コンパイルすることなくそのまま携帯機器上でも動作すること。
【0009】
図2を用いて、本発明のエミュレータを説明する。図2は、試験対象のアプリケーション・プログラム160をネットワーク環境(ネットワークA等)で、エミュレータ170を用いて試験を行うことを示している。図2では、ネットワークAからネットワークBへ、ネットワークBからネットワークCへ、アプリケーションをエミュレータ170とともに移動(イミグレーション)して、試験を行っている。
このエミュレータ170はモバイル・エージェントとして実現されるが、他のモバイル・エージェントの枠組みと同様に、携帯端末の移動・接続先となるネットワークには、モバイル・エージェントを移動・実行を可能にするコンピュータが一台以上存在すると仮定する。なお、このコンピュータをアクセス・ポイントと呼ぶ。図2ではアクセス・ポイント124,134,144が示されている。これらのアクセス・ポイント124,134,144は、エミュレータ及びアプリケーションに実行環境を提供するとともに、それが接続されたローカル・ネットワークへの接続を可能にする。つまり、携帯端末のあるローカル・ネットワーク(例えば、ネットワークA)から別のローカル・ネットワーク(ネットワークB)への移動・接続は、その携帯端末のエミュレータが、そのあるローカル・ネットワーク上のアクセス・ポイントからもう一方のネットワーク上のアクセス・ポイントへの移動(イミグレーション)として実現する。
【0010】
なお、モバイル・エージェントは、移動先においてそれの実行状態(プログラム変数など)を保持したまま処理を継続することから、エミュレータとともに移動するアプリケーションも、移動先のアクセス・ポイントでは移動前の実効状態から処理を継続する。この結果、アプリケーションからはネットワーク移動にともなう、休止→切断→接続→再開の流れを正確に表現することができる。
ところで、ネットワークを利用するアプリケーションでは移動に際して、接続中のサーバがあればそれらを切断し、移動・接続後は到着したネットワーク上で必要なサーバに接続・利用する必要がある。一方、計算機の休止や再開、そしてネットワークの切断や接続などはオペレーティング・システムやミドルウェアにより管理される。従って、アプリケーション自身がこれらの状態変化を監視することは難しい。このため、そのアプリケーションに対してオペレーティング・システムやミドルウェアから明示的に通知する機構が必要となる。また、コンポーネントなどのソフトウェア部品は複雑なソフトウェア開発では有効であることが知られている。以上から、以下に説明する本発明の実施形態では、各種状態変化に対応したコールバック・メソッドをもつコンポーネントによりアプリケーションを構成する。
【0011】
エミュレータを実現するためのフレームワークは、次に説明する4つのサブシステムから構成される。
(1)モバイル・エミュレータ(Mobile Agent-based Emulator)
テスト対象となるアプリケーションを運び、移動先のアクセス・ポイント・ホストでは携帯端末自体の動作環境エミュレーションし、さらに移動先のネットワークへの接続を可能にするモバイル・エージェント。
(2)アプリケーション実行システム(Application Runtime System)
携帯端末上で動作し、アプリケーションに対してネットワーク接続・切断やコンピュータの再開・休止の直前直後にイベントを送るミドルウェア。
(3)アクセス・ポイント実行システム(Access Point Runtime System)
移動先ネットワーク上のホスト(アクセス・ポイント・ホスト)であり、モバイル・エージェントによるエミュレータの実行及び移動、そしてそのネットワーク内の各種サーバへの接続を可能にするミドルウェア。
(4)遠隔制御サーバ(Remote Control Server)
エミュレータの移動を管理し、ユーザに対してはインタラクティブな操作を提供する。また、アプリケーションのユーザ・インタフェースを転送・表示して直接操作を可能にする。
【0012】
現在の実装ではそれぞれはJava言語により実装している。なお、このフレームワーク対象となる携帯端末は、移動中に発生可能性のある落下などによるトラブルや、バッテリ消耗を防ぐため、稼働したまま別のネットワークに移動・接続することはないとする。つまりネットワーク切断・移動中は休止状態か、稼働していても短時間であると仮定する。また、エミュレータ上のアプリケーションがネットワークとTCP接続する場合は、アプリケーションはTCPクライアント側と仮定する。
【0013】
図3は、アクセス・ポイント・ホスト上でのエミュレータの構成を示している。アクセス・ポイント・ホスト内では、ハードウエア210上のオペレーティング・システム(OS)220,Java言語で実装する場合のJavaを実行するための仮想マシン230が存在している。この上にあるモバイル・エージェント実行システム242およびエミュレータ・ランタイム244は、上述のモバイル・エミュレータを実行するためのアクセス・ポイント・ランタイム・システムである。この上にエミュレータ250がある。以下に、エミュレータの構成を詳しく説明する。なお、図3で網掛け部分が新しく開発された部分である。
【0014】
<アプリケーション・プログラム(図3:260)>
携帯機器はネットワークの切断・接続、そして休止状態となることがある。
従って、携帯端末上で実行されるアプリケーションは
・動作中かつネットワークに接続されている状態
・動作中だがネットワークが切断されている状態
・実行状態を保持しまま動作を休止している状態
・シャットダウンされて停止している状態
の4つの実行モードをもつ。そのため、エミュレータを用いる場合でも、以下の4つの状態を有している。
(1)単独実行モード(isolated running)
アプリケーションはエミュレータ内で動作中であるが、ネットワーク上のホストと通信が禁止されている状態。これは携帯端末が稼働しながらネットワーク切断及び移動を行っている状態である。
(2)接続実行モード(networked running)
アプリケーションはエミュレータ内で動作中、かつ、ネットワーク上のホストと通信が許されている状態。これは携帯端末が稼働中かつネットワークに接続されている状況に相当する。
(3)休止モード(suspended)
アプリケーションはその実行状態を保持したまま停止した状態であり、再び実行するときはその実行状態から再開される。
(4)停止モード(terminated)
アプリケーションの実行が停止した状態である。エミュレータ自体はアプリケーションの実行状態を記録したログなどを保持している。
【0015】
これらの実行モードの変更に際して、エミュレータからアプリケーションに明示的にその変更を通知する必要がある。アプリケーションは、下記のインタフェースApplicationListenerの実装クラスとなり、モバイル・エージェント内のエミュレータ、または携帯端末上のアプリケーション実行システムによって、インタフェース内に定義されたメソッドが呼び出される。
1: interface ApplicationListener
2: extends AgentEventListener {
3: void create(URL url); // after creation at url
4: void connect(URL url); // before connecting to the network
5: void disconnect(); // after disconnecting from the network
6: void suspend(); // before suspending
7: void resume(); // after resumed
8: void destroy(); // before termination
9: ....
10: }
【0016】
各メソッドの呼び出しタイミングと、アプリケーション開発者が記述すべき処理内容は下記の通りである。
(1)メソッドcreate( )は、アプリケーションが生成されたときに一度だけ呼び出される。このメソッド内にアプリケーション生成時に行うべき処理を定義する。
(2)メソッドconnect( )は、携帯機器がネットワークに接続されて、アプリケーションがネットワーク利用可能となった直後に呼び出される。引数は接続先におけるネットワーク・アドレスとなる。ここには、アプリケーションがネットワーク利用可能となる際に行うべき処理を定義する。
(3)メソッドdisconnect( )は、携帯機器がネットワークから切断された際に呼び出される。このメソッドには、アプリケーションがネットワークから切断される際に行うべき処理を定義する。
(4)メソッドsuspend( )は、休止モードに移行するときに呼び出される。ここにはアプリケーションが携帯機器とともに休止状態になる際に必要な処理を記述する。
(5)メソッドresume( )は、データ化されたアプリケーションがメモリにロードされて、単独実行モードに移行した直後に呼び出される。アプリケーションが携帯機器とともに休止状態から動作を再開する際の処理を定義する。
(6)メソッドdestroy( )は、アプリケーションが終了する直前に呼び出される。従って、アプリケーションの終了処理をこのメソッド内に定義する。
【0017】
<モバイル・エージェント実行システム(図3:242)>
各アクセス・ポイント・ホストには、エミュレータの移動や実行を行うモバイル・エージェントの実行システムにおいて動作させる必要がある。実装では、発明者が開発したJava言語ベースのモバイル・エージェント・システムAgentSpaceを利用している。ただし、このフレームワーク自体はAgentSpaceに依存するものではなく、下記を満足するものであればよい。
(1)エージェントはJava言語によりプログラムされ、Java言語オブジェクトとして実行できる。また、同時に複数のエージェントを実行すること。
(2)エージェントのコンピュータ間移動では、エージェントのプログラム・コードとともに、エージェント・プログラムのインスタンス変数などの実行状態を移動先のコンピュータに転送し、到着後はその実行状態から動作を再開すること。
(3)実行システムはエージェントのライフサイクル状態の変化(生成直後、移動直前、移動直後、停止直前)において、そのエージェントに用意したコールバック・メソッドを呼び出せること。
(4)エージェントはセキュリティ制限が許されれば、アクセス・ポイント・ホストのネットワーク及びファイル機能が利用できること。
(5)このほか、エージェントのコード及び実行状態の転送では、Webページの転送に用いるHTTPプロトコルまたは電子メールの転送に用いるSMTPプロトコルにより転送できると、ファイアウオールなどのネットワーク保護機構が利用されているネットワーク環境でもトンネリング転送によりエージェント移動が可能となる。
なお、これらの機能要求は既存のJava言語ベースのモバイル・エージェント・システムの多くが満足し(例えば、IBMのAglets、ObjectSpace Inc.のVoyager)、容易に移植することができる。
【0018】
<エミュレータ(図3:250)>
エミュレータ250は、モバイルエージェントの内部に実現され、アクセス・ポイント・ホスト上のエージェント実行システム上で動作する。また、一つのアプリケーションは一つのエミュレータの内部で動作する。各エミュレータは、図3に示すように、次の3つの部分から構成される。
(1)コールバック・メソッド群(図3:252)
コールバック・メソッド群252は、エージェントのライフサイクル状態の変更に応じて実行システムから呼び出されるメソッド群である。これらが呼び出されるとアプリケーションの実行モード(後述)を変化させる。例えば、エージェントの生成後はアプリケーションを独立実行モードにする。移動直前にはアプリケーションを休止モードにし、逆に移動直後には休止モードから独立実行モードに状態を遷移させる。
(2)アプリケーションの実行制御機構(図3:254)
アプリケーション・プログラムの実行モードを管理して、実行モードの変化に応じて所定のメソッドを呼び出す。また、ユーザからの明示的な指示にも従って、アプリケーション・プログラム側メソッド呼び出す。
(3)携帯端末エミュレーション機構(図3:256)
携帯端末のアプリケーション・プログラムを動作させる部分であり、携帯端末と同様のCPU命令セット、メモリ、キーボードや画面などの入出力環境をアプリケーション・プログラムに対して提供することにより、アプリケーション・プログラムがあたかも携帯端末で実行しているかのように動作させるものであり、携帯端末の種類毎に用意される。
(4)ホストアクセス機構(図3:258)
このエミュレータ部分は、移動先のネットワークへのアクセスを許すことにより、そのネットワーク固有の情報や計算資源を利用することを可能にしている。これは、ネットワークや画面、キーボードなどを利用するためのJava言語のAPI群からなり、各APIはホスト側の対応した機能を呼び出すことにより実現する。
さて、コールバック・メソッド群は、エージェントを構成するJava言語クラスとして定義される。そして、アプリケーションの実行制御機構と携帯端末エミュレーション機構はJava言語クラスであり、エミュレータの生成直後に対応するコールバック・メソッド内でオブジェクトとして生成される。
以下に、Java言語クラスとして実装された場合について、ぞれぞれ詳しく説明する。
【0019】
<コールバック・メソッド群(図3:252)>
エミュレータ・エージェントは、下記に示したようなAgentSpaceなどのJava言語ベースのモバイル・エージェント・システムにおけるAgentを定義するクラスを継承することによって実装される。例えばAgentSpaceのモバイル・エージェントの抽象クラスは下記となる。
1: public abstract class Agent {
2:
3: /*サービスメソッド*/
4: //アクセスポイントホストの情報及び計算資源にアクセスする
5: Service getService(Message msg) throws NoSuchSeviceException ... { ... }
6: //他のエージェントにメッセージを送信する
7: Object call(AgentURL url, Message msg)
8: throws NoSuchAgentException ... { ... }9: // url に示されたアクセスポイントホストに移動する
10: void go(AgentURL url) {...}
11: throws NoSuchAgentException ... { ... } //
12:
13: /*エージェント実行システムから呼び出されるコールバック・メソッド*/
14: void create(URL url); //生成された直後に呼ばれる
15: void leave(URL dst); //アクセスポイントホストから移動する直前に呼ばれる
16: void arrive(URL src); //アクセスポイントホストに到着した直後に呼ばれる
17: void suspend( ); //エージェントをデータ化する直前に呼ばれる
18: void resume( ); //データ化されたエージェントが活性化された直後に呼ばれる
19: void destroy( ); //エミュレータ終了直前に呼ばれる
20: ....
21: }
【0020】
エミュレータ・エージェントのプログラムは、エージェントのライフサイクル状態が変化する際にエージェント実行システムによって呼び出される下記のコールバック・メソッド(create,leave,arrive,resume,suspend,destroy)をオーバーライトして、状態変化時にエミュレータを行うべき処理をそれぞれのメソッド本体として、次のように定義する。
(1)create(AgentURL url)
アプリケーションの実行制御機構及び携帯端末エミュレーション機構を定義したクラスをオブジェクト化するとともに、アプリケーションをロードする。その次に、アプリケーション側のcreate()を呼び出して、アプリケーションの実行を開始する。
(2)leave(AgentURL dst)
他のアクセスポイントホスト上に転送するための準備を定義する。具体的にはアプリケーション実行制御機構を通じてアプリケーションが接続実行モードであれば単独実行モードに変更する。また、ホストアクセス機構を通じて利用していたソケットなどのネットワーク機能を利用不可にする。
(3)arrive(AgentURL src)
他のアクセスポイントホスト上に転送すための準備を定義するものであり、アプリケーションに対しては接続実行モードが禁止されていれば移行可能にするとともに、ホストアクセス機構の利用を可能にする。
(4)suspend( )
エミュレータがデータ化される直前に呼ばれることから、アプリケーションを休止状態に移行させるとともに、アプリケーションとエミュレータがデータ化される際の準備として、携帯端末エミュレーション機構を通じて利用していた画面などの入出力を終了させるとともに、スレッド停止なども行う。
(5)resume( )
データ化されていたエミュレータが再びエージェントに戻される際に必要な処理を定義する。これにはエミュレータの携帯端末エミュレーション機構の再開や処理用スレッドの機動が含まれる。また、アプリケーションに対しては休止モードから独立実行モードに移行させる。
(6)destroy( )
エミュレータを終了させるための処理を記述するものであり、携帯端末エミュレーション機構やホストアクセス機構を終了させる。また、アプリケーションが実行中であれば終了させる。
なお、エージェント実行システムの各種サービス利用のAPI(getService( ))、エージェント間通信のAPI(call( ))、エージェントの移動命令のAPI(go( ))などのモバイル・エージェントの基本API はそのまま利用する。
【0021】
<アプリケーション実行制御機構(図3:254)>
アプリケーション実行制御機構254は、Java言語プログラムとして実現された場合、その内部で、アプリケーションを内部オブジェクトして保持するとともに、そのアプリケーションの動作モードを内部変数として管理する。そして、動作モードの変更時には処理を行うとともに、下記の表に従ってアプリケーション側に用意されたメソッドを呼び出す。
【表1】
アプリケーションの実行モード移行と呼び出されるメソッド
各エミュレータは、後述するコントロール・サーバの明示的な指示またはそれ自身の移動経路に従って次の移動先となるアクセス・ポイント・ホストを決定する。前者は到着ごとにコントロール・サーバに現在のホスト名を通知してユーザからの指示を待ち、その指示に従ってアプリケーションとともに移動を行う。自身の移動経路は移動を自動化するものであり、アクセス・ポイント・ホスト名、滞在時間、到着時にアプリケーションに送るイベント名の3項組のリストにより、そのリストの順にアプリケーションとともに移動し、上記のメソッドを所定のタイミングで呼び出す。
【0022】
<携帯端末エミュレーション機構(図3:256)>
携帯端末の動作を再現するためには、携帯端末が提供するCPU命令セット、メモリ、キーボードや画面などの入出力環境をアプリケーション・プログラムに対して提供して、アプリケーション・プログラムがあたかも携帯端末で実行しているかのように模倣する。
(携帯機器のCPU及びメモリの再現)
携帯端末とエミュレータを実行するアクセス・ポイント・ホストの計算機のCPU及びメモリ・アーキテクチャは相違することが多い。携帯端末向けに開発されたアプリケーションを実行するため、携帯端末側のCPU及びメモリの動作を模倣して、アプリケーション・プログラムの実行を可能にするインタープリタを提供する。これはアプリケーション・プログラム中の命令セットを読み込むとともに、同様の命令に対して携帯機器のCPUと同様の動作をソフトウェアとして実現することにより、アプリケーション・プログラムの動作を擬似的に再現する。ただし、今回の実装ではJava言語によるアプリケーション・ソフトウェアを対象としている。このため、アプリケーション・ソフトウェアはJava言語の命令セットによるプログラムとなるが、このとき携帯端末と各アクセス・ポイント・ホストの両方に、この命令セットを解釈実行するJava言語の仮想機械を用意することにより、ソフトウェアを変更をすることなく両環境で動作できるようになる。
【0023】
(携帯機器の各種機器の再現)
次に入出力であるが、キーボード、マウスなどポインティング入力装置、画面、音声などの標準的な入出力装置に関しては、携帯機器及びアクセス・ポイント・ホストのどちらにおいてもJava言語側で標準機能として用意されている入出力用ライブラリ(API群)を利用する。このため、入出力装置の相違はこの標準API群で吸収されている。なお、携帯機器は画面サイズの制限やキーボードの未整備などユーザインタフェースに対する制限が多い。そこで携帯機器のユーザ・インタフェースの動作をアクセス・ポイント・ホスト上で再現するJava言語用ライブラリ群を用意する。また、ファイル・システム及びネットワークに関してもライブラリ群を用意して、携帯機器の動作を再現する。
(1)ユーザ・インタフェース
携帯機器のユーザ・インタフェースには制限が多い。例えば画面のサイズや解像度、キーボードやマウスの有無など一般のPCが装備している入出力機器を保持しているとは限らない。このため、携帯機器向けのアプリケーションは制限された入出力機器を前提にテストを行う必要がある。そこで例えば、画面サイズや入力装置を制限したエミュレータの基本クラスである、小型のノートPCに相当する機器のエミュレータ・クラス、ハンディ型PDAに相当する機器のエミュレータ・クラス、タッチパネルによるタブレットPCに相当する機器のエミュレータ・クラスの3つの基本クラスを提供する。これらはJava言語のウィンドウ用クラス(java.awt.Window)のサブクラスとして定義され、ウィンドウのサイズに携帯機器に相当する画面サイズの制限を加えたものである。また、Java言語のユーザ入力再現用クラス(java.awt.event.Robot)を利用することにより、マウスなどのポインティング・デバイスとキーボードの動作を制限している。そして、実際の携帯機器向けのエミュレーションではこれらの基本クラスを拡張することにより実現する。また、後述するグラフィック遠隔転送システムにより、開発者は手元のコンピュータで表示・操作が可能である。
(2)ファイル
エミュレータはコンピュータ間を移動するため、アプリケーションはコンピュータ上のファイル・システムにファイルを保存することは難しい。そこで、エミュレータはその内部にファイル・システムに相当するデータベースを持っている。これは各ファイルをファイル名(ディレクトリ名を含む)とファイル・コンテンツの組としたハッシュ・テーブルとして実現されている。従って、ファイル名に従ってそれに対応したコンテンツを容易に取り出すことができる。このほか、ファイル生成、書き出し、消去、ファイル名の変更などの基本操作を提供するファイル操作クラスをアプリケーションに提供する。このデータベースはエミュレータの移動前後もそのまま保存されるので、エミュレータが終了するまではファイルは保持されることになる。
(3)ネットワーク
エミュレータとともにコンピュータ間を移動するとき、アプリケーションはネットワークを切断し、到着後に再接続する必要がある。しかし、一つのコンピュータ内で実行されている間、アプリケーションは通常のようにネットワークを利用することができることから、Java言語側で用意されているソケット用APIや遠隔オブジェクト・メソッド呼び出し機構(RMI)をそのまま利用する。なお、コンピュータ間移動に際してアドレスが変更になるが、携帯機器で利用されるアプリケーションはクライアント側となることがほとんどである。従って、アドレスが変更になっても制約となることは少ない。
【0024】
<携帯機器用アプリケーション実行システム(図示せず)>
アプリケーション実行システムは、携帯機器上のJava言語仮想機械上で動作するミドルウェアであり、Java言語プログラムとして実現されている。アプリケーションは、この実行システム内の内部オブジェクトとして保持され、実行システムが提供する環境の中で動作することになる。
なお、この実行システムは携帯機器のOSを通じて携帯機器がネットワークに接続されているかの有無や、休止状態になっているかを調べる。そして、携帯機器の状態が変化したときには、アプリケーション側に用意された下記のメソッドを呼び出す。
【表2】
携帯端末の状態変更に際して呼び出されるアプリケーション側メソッド
ここで、ロード前とはアプリケーションが起動される前の状態を、終了とはアプリケーションが終了されたときをさす。
このほか、エミュレータが提供するファイル操作クラスなどと互換性をもつ実行ライブラリをアプリケーションも提供する。この結果、エミュレータ上でテストされたアプリケーションは修正や再コンパイルをすることなく、携帯機器上のアプリケーション実行システム上でも動作させることができる。
【0025】
<アクセス・ポイント・ホスト>
アクセス・ポイント・ホストは、携帯機器が移動・接続するネットワークに一つ以上のワークステーション上に用意され、Java言語仮想機械とモバイル・エージェントの実行システムの動作環境を提供する。また、エージェント移動及びアプリケーションに対してネットワーク接続を可能にする。ただし、ワークステーションに特別なハードウェアなどは必要としない。なお、多くのアプリケーションはグラフィカル・ユーザ・インタフェース(GUI)を持つことが多く、これらを介したアプリケーションのテストが必要となる。GUIを開発者の手元のコンピュータで表示・操作するために、IBMのRemote Abstract Window Toolkit(RAWT)(例えば、International Business Machines Corporation, "Remote Abstract Window Toolkit for Java", http://www.alphaworks.ibm.com/, 1998.)を利用する。これはアクセス・ポイント・ホスト上のグラフィックをコントロール・サーバ上に動かしたRAWT Server に転送し、コントロール・サーバの入力をアクセス・ポイント・ホストに転送する。この結果、コントロール・サーバ上からGUIを介した表示・操作が可能となる。
【0026】
<エミュレータ・コントロール・サーバ>
エミュレータ・コントロール・サーバは各アクセス・ポイント・ホストを管理するとともに、エミュレータを制御する。各アクセス・ポイント・ホストは、エミュレータの到着直後及び移動直前にこのサーバに通知することにより、エミュレータの存在場所を調べることができる。また、サーバからエミュレータに対して、実行状態の問い合わせ及び、移動や実行モードの変更を指示するメッセージを送ることができる。メッセージの送信はWebに用いるHTTPを利用して、HTTPリクエストとして、アクセス・ポイント・ホスト上のHTTPサーバに送られる。このサーバはエージェント実行システムを介してエージェントにメッセージを転送する。
【0027】
図4は、エミュレータ・コントロール・サーバ上に表示されるエミュレータを制御するための画面の例である。この画面300で、モバイル・エミュレータを操作することができる。以下に、この画面300について説明する。
(1)エミュレータの設定変更・表示用のメニュー(図4:301)
このメニューにより、エミュレータ自体の終了や移動に用いるプロトコルの設定を行う。
(2)移動可能なネットワークの一覧(図4:302)
この表示欄302では、携帯機器の移動・接続先となるネットワークを一覧することができる。
(3)移動可能なネットワークの登録・削除ボタン(図4:303)
移動可能なネットワークの管理として、一覧302に表示されている各ネットワーク上のアクセス・ポイント名の登録(add)・削除(remove)を行う。
(4)移動順序リスト(図4:306)
この表示欄306に表示されている各項目は、エミュレータを移動させるネットワーク(上述のアクセス・ポイント)であり、上から下の順で移動する。
(5)移動順序経路の選択・削除ボタン(図4:304)
このボタンをクリックすることで、移動可能なネットワークの一覧302に登録されているネットワーク(上述のアクセス・ポイント)から、移動順序リスト306に表示されている実際に移動するネットワークを選択(append及びinsert)または削除(delete)する。
(6)移動順序変更ボタン(図4:305)
このボタンをクリックすることで、移動順序リスト306に表示されているネットワークの移動順序を入れ替えることができる。「up」ボタンでは移動順序リスト上選択したネットワーク名を一つ上の項目と入れ替え、「down」ボタンでは一つ下の項目と入れ替える。
(7)移動開始ボタン(図4:307)
エミュレータを移動順序リスト306に従って、ネットワーク(上述のアクセス・ポイント)の移動を開始させる。つまり、アプリケーションが携帯機器とともに移動した状態を再現している。
(8)移動停止ボタン(図4:308)
移動順序リスト306に従って移動中のエミュレータの移動を停止させる。
(9)ステップ移動ボタン(図4:309)
このボタンをクリックすることで、移動順序リスト306に従ってネットワーク(上のアクセスポイント)を一つずつ移動させることができる。
(10)ネットワーク接続ボタン(図4:310)
このボタンをクリックすると、アプリケーションがエミュレータを介して移動先のネットワークへのアクセスを許す。つまり、アプリケーションが携帯機器とともに移動し、移動先のネットワークに接続した状態を再現する。
(11)ネットワーク切断ボタン(図4:311)
このボタンをクリックすると、アプリケーションがエミュレータを介して移動先のネットワークへのアクセスを再び禁止する。
(12)エミュレータ対象機器の設定(図4:312)
エミュレータが模倣する携帯機器の種別を、登録してある機種から選択して設定する。ここでは例えば、ノートPC、タブレットPC、PDAの3つが選択可能である。
(13)エミュレータ対象機器のディスプレー・サイズの設定(図4:313)
エミュレータが模倣する携帯機器のディスプレー・サイズを設定する。例えば、120x160,320x240,640x480,800x600,1024x768の中から選ぶことができる。
(14)エミュレータの存在位置(図4:314)
エミュレータが現在存在するネットワーク名を表示している欄である。
(15)アプリケーション実行状態(図4:315)
この欄には、アプリケーションの現在の実行状態、つまり単独実行モード、接続実行モード、休止モード、停止モードを表示する。
(16)エミュレータの実行履歴表示ボタン(図4:316)
このボタンをクリックすると、エミュレータが移動・接続したネットワーク及びアプリケーションの属性情報及び実行状態の履歴を表示するウィンドウを開くことができる。
(17)エミュレータの設定表示ボタン(図4:317)
このボタンをクリックすると、エミュレータの設定一覧を表示するウィンドウを開くことができる。
(18)アプリケーション一覧リスト(図4:318)
この欄では、エミュレータ内で実行できるアプリケーションの一覧名を表示している。この欄でエミュレータで実行するアプリケーションを選択することができる。
(19)アプリケーション実行開始ボタン(図4:319)
このボタンをクリックすると、アプリケーション一覧リスト318で選択したアプリケーションの実行を開始することができる。
(20)アプリケーションのロードボタン(図4:320)
アプリケーションをエミュレータ内に取り込み、アプリケーション一覧リスト318にそのアプリケーション名を登録することができる。
(21)アプリケーションの休止ロードボタン(図4:321)
このボタンをクリックすることで、アプリケーション一覧リスト318で選択した実行中アプリケーションの実行を休止させる。
(22)アプリケーションの再開ロードボタン(図4:322)
このボタンをクリックすることで、アプリケーション一覧リスト318で選択した、休止中のアプリケーションの実行を再開させることができる。
(23)アプリケーションの再開ロードボタン(図4:323)
このボタンをクリックすることで、アプリケーション一覧リスト318で選択したアプリケーションを終了させることができる。
【0028】
上述するように、本発明では、モバイル・エージェント手法を導入することにより、コンピュータの物理的な移動を行う代わりに、そのコンピュータで動作するアプリケーション・ソフトウェアだけをネットワークを通じて論理的に移動させている。ここで、モバイル・エージェントとはコンピュータ間を移動しながら処理を行っていく自律的なソフトウェアであり、移動先のコンピュータでは変数内容などの実行状態は移動前と同じとなるので、移動先で処理を継続することができる。この結果、エミュレータ上のアプリケーションは計算機自体が移動したかのように扱われる。
本発明では、このモバイル・エージェントに各種の携帯端末、例えばノートPCやPDA、携帯電話が提供するローカルな実行環境エミュレータをモバイル・エージェントとして実装する。そして、このエージェントのコンピュータ間移動性を通じてアプリケーション・ソフトウェアを遠方のコンピュータに移動・実行させて動作実験を行えるようにする。これにより、開発者はコンピュータを実際に移動させることなく、携帯端末の移動に伴う、ネットワークから切断・再接続する過程を正確に仮想的に行える。さらに、このエミュレータ上で動作するプログラムを実際のモバイル・コンピュータ上でも一切の変更・再コンパイルを行うことなく動作できるようにする。
なお、上述ではJava言語を用いて実装したが、本発明を実現するためのプログラム言語は何を用いてもよい。
【0029】
【発明の効果】
本発明により、端末自体の物理的な移動ではなく、論理的な移動により代用する環境を提供することができる。
これにより、IEEE802.11bやBluetoothなどの小範囲無線ネットワークやEthernetなどの有線ローカル・ネットワークの利用を前提とした携帯機器向けのアプリケーションの開発及び動作試験が容易になる。
【図面の簡単な説明】
【図1】携帯端末が物理的にネットワークを移動することを説明する図である。
【図2】エミュレータが論理的にネットワークを移動することを説明する図である。
【図3】アクセス・ポイント・ホスト内のエミュレータ構成を示す図である。
【図4】モバイル・エミュレータを制御するための画面を示す図である。
【符号の説明】
120,130,140 ネットワーク
122,132,142 ローカル・サーバ
124,134,144 アクセス・ポイント・ホスト
150 携帯端末
160 アプリケーション・プログラム
170 モバイル・エミュレータ
Claims (3)
- 移動機器のアプリケーション・プログラムをネットワーク上のサーバで実行させるモバイル・エミュレータ・システムであって、
前記移動機器のアプリケーション・プログラムを動作させるエミュレーション機構と、
前記移動機器のアプリケーション・プログラムの実行を制御する実行制御機構と、
前記移動機器のアプリケーション・プログラムが移動先のネットワークへアクセスできるようにさせるホストアクセス機構と
を備え、モバイル・エージェントとして実現されていることを特徴とするモバイル・エミュレータ・システム。 - 請求項1記載のモバイル・エミュレータ・システムをコンピュータ・システムに構築するプログラムを格納する記録媒体。
- 請求項1記載のモバイル・エミュレータ・システムをコンピュータ・システムに構築するプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001365830A JP4020359B2 (ja) | 2001-11-30 | 2001-11-30 | モバイル・エミュレータ・システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001365830A JP4020359B2 (ja) | 2001-11-30 | 2001-11-30 | モバイル・エミュレータ・システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003167863A JP2003167863A (ja) | 2003-06-13 |
JP4020359B2 true JP4020359B2 (ja) | 2007-12-12 |
Family
ID=19175809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001365830A Expired - Fee Related JP4020359B2 (ja) | 2001-11-30 | 2001-11-30 | モバイル・エミュレータ・システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4020359B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101836749B1 (ko) * | 2016-12-30 | 2018-03-08 | 주식회사 카카오게임즈 | 에뮬레이터를 제어하는 런칭 어플리케이션의 동작 방법 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4930585B2 (ja) | 2007-03-27 | 2012-05-16 | 富士通株式会社 | エミュレーション装置、エミュレータ生成方法、およびエミュレータ実行方法 |
US10279611B2 (en) | 2015-02-10 | 2019-05-07 | Kyocera Document Solutions Inc. | Communication terminal device and communication system |
-
2001
- 2001-11-30 JP JP2001365830A patent/JP4020359B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101836749B1 (ko) * | 2016-12-30 | 2018-03-08 | 주식회사 카카오게임즈 | 에뮬레이터를 제어하는 런칭 어플리케이션의 동작 방법 |
Also Published As
Publication number | Publication date |
---|---|
JP2003167863A (ja) | 2003-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Satoh | A testing framework for mobile computing software | |
Grimm et al. | System support for pervasive applications | |
Grimm et al. | Programming for pervasive computing environments | |
CN115243839A (zh) | 用于机器人流程自动化的自动化窗口 | |
Kacsuk et al. | P-GRADE: a Grid programming environment | |
EP0777943B1 (en) | Extensible, replaceable network component system | |
EP0836139A2 (en) | Object-oriented system, method and article of manufacture for a client-server graphical user interface framework in an interprise computing framework system | |
EP0834805A2 (en) | Object-oriented system, method and article of manufacture for a client-server session manager in an architecture computing framework system | |
EP0844558A2 (en) | Object-oriented system, method and article of manufature for a client-server event driver message framework in an interprise computing framework system | |
EP0822490A2 (en) | Object-oriented system, method and article of manufacture for a client-server communication framework | |
EP0822488A2 (en) | Object-oriented system, method and article of manufacture for a client-server application enabler system | |
EP0822487A2 (en) | Object-oriented system, method and article of manufacture for a client-server session WEB access in an interprise computing framework system | |
EP0822491A2 (en) | Object-oriented system, method and article of manufacture for migrating a client-server application | |
EP0822489A2 (en) | Object-oriented system, method and article of manufacture for a client-server system with a client program cache | |
EP0827077A1 (en) | Object-oriented system, method and article of manufacture for a client-server failure reporting process | |
JP2002236592A (ja) | 異種デバイス間におけるアプリケーションのマイグレーション方法およびシステム | |
Satoh | Software testing for wireless mobile computing | |
JP2008503011A (ja) | ユニバーサルデバイスインタオペラビリティプラットフォームのためのデバイスチームリクルートメントおよびコンテンツレンディションのアーキテクチャ装置および方法 | |
JP2001175499A (ja) | 分散デバッグ装置及びデバッグ方法並びに制御プログラムを記録した記録媒体 | |
CN110769048B (zh) | 本地与远程虚拟桌面的无缝衔接方法及系统 | |
CN109308241A (zh) | 监听应用程序启动流程方法、装置、终端设备和存储介质 | |
WO2023093016A1 (zh) | 云端代码开发系统、方法、装置、设备及存储介质 | |
EP0827076A2 (en) | Object-oriented system, method and article of manufacture for a presentation engine in an interprise computing framework system | |
Savidis et al. | Distributed interface bits: dynamic dialogue composition from ambient computing resources | |
JP4020359B2 (ja) | モバイル・エミュレータ・システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20031031 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20040129 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041013 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070130 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070918 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070921 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101005 Year of fee payment: 3 |
|
R154 | Certificate of patent or utility model (reissue) |
Free format text: JAPANESE INTERMEDIATE CODE: R154 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111005 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |