(57)【要約】  Java(登録商標)アプリケーションが、Java(登録商標) Native Interface（JNI）を介してSymbian(商標)プラットフォーム上のアクティブオブジェクトを用いることを可能にするための方法及びシステムが提供される。アクティブスケジューラがSymbian(商標)の下で始動され、それに対する最初の呼出しが成された後、別のスレッドに転送される。スケジューラは再開時にブロックする挙動を示すが、別のスレッドで実行しているので、制御は呼出しJava(登録商標)アプリケーションに戻ることができ、さらなるアクティブオブジェクトの使用を可能とする。
2008523491.tif 000002
【特許請求の範囲】
【請求項１】
第１のコンピューティングプラットフォームから第２のコンピューティングプラットフォーム上のアクティブオブジェクトへのアクセスを提供する方法であって、
前記第１のコンピューティングプラットフォーム上のアプリケーションから関数呼出しを受け取り、
前記関数呼出しに応答して、前記第２のコンピューティングプラットフォーム上の第１の制御スレッド中の、前記アクティブオブジェクトからのサービス要求に対して用意されたアクティブスケジューラを始動し、
前記第２のコンピューティングプラットフォーム上に第２の制御スレッドを作成し、及び
制御が呼出アプリケーションに戻ることを可能にするために前記第２のスレッドに前記アクティブスケジューラを転送する方法。
【請求項２】
前記アクティブスケジューラがアクティブオブジェクトから要求に応答して転送される請求項１に記載の方法。
【請求項３】
前記アクティブオブジェクトは、前記アクティブスケジューラを転送するために始動されるタイマーオブジェクトである請求項２に記載の方法。
【請求項４】
前記アクティブオブジェクトからの前記要求が複数の要求の内の最初の要求であるかを判定するステップを含む請求項２又は３に記載の方法。
【請求項５】
前記要求が最初の要求である場合にのみ、前記アクティブスケジューラを前記第２のスレッドに転送する請求項４に記載の方法。
【請求項６】
前記要求が最初の要求であるかを判定するためにステートマシンを用いる請求項４又は５に記載の方法。
【請求項７】
前記アクティブスケジューラを転送するステップは、
前記第１のスレッド中の前記アクティブスケジューラを停止すること、及び
前記第２のスレッド中の前記アクティブスケジューラを再開すること、
を有する請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記アクティブオブジェクトが自身の制御スレッド中で動作するオブジェクトを有する請求項１から７のいずれか一項に記載の方法。
【請求項９】
第１のコンピューティングプラットフォームから第２のコンピューティングプラットフォーム上のアクティブオブジェクトへのアクセスを提供するシステムであって、
前記第１のコンピューティングプラットフォーム上のアプリケーションから関数呼出しを受け取る手段、
前記関数呼出しに応答して、前記第２のコンピューティングプラットフォーム上の第１の制御スレッド中の、前記アクティブオブジェクトからのサービス要求に対して用意されたアクティブスケジューラを始動する手段、
前記第２のコンピューティングプラットフォーム上に第２の制御スレッドを作成する手段、及び
制御が呼出アプリケーションに戻ることを可能にするために前記第２のスレッドに前記アクティブスケジューラを転送する手段を有するシステム。
【請求項１０】
前記転送手段は、アクティブオブジェクトから要求に応答して前記スケジューラを転送する請求項９に記載のシステム。
【請求項１１】
前記転送手段は、前記アクティブスケジューラを転送するために始動されるタイマーオブジェクトからの要求に応答して前記スケジューラを転送する請求項９に記載のシステム。
【請求項１２】
前記転送手段は、前記第１のスレッド中の前記アクティブスケジューラを停止する手段、及び前記第２のスレッド中の前記アクティブスケジューラを再開する手段を有する請求項９から１１のいずれか一項に記載のシステム。
【請求項１３】
前記アクティブオブジェクトからの要求が、複数の要求の内の最初の要求であるどうかを判定する手段を含む請求項９から１２のいずれか一項に記載のシステム。
【請求項１４】
前記転送手段が、前記要求が最初の要求である場合にのみ、前記第２のスレッドに前記アクティブスケジューラを転送する請求項１３に記載のシステム、
【請求項１５】
前記要求が最初の要求であるかを判定するためのステートマシンを有する請求項１３又は１４に記載のシステム。
【請求項１６】
前記第１のコンピューティングプラットフォームがJava(登録商標)プラットフォームを有し、前記第２のコンピューティングプラットフォームがSymbian(商標)オペレーティングシステムを有する請求項９から１５のいずれか一項に記載のシステム、
【請求項１７】
前記アプリケーションが、Java(登録商標) Native Interface JNIを介してSymbian(商標)オペレーティングシステムにアクセスするJava(登録商標)アプリケーションを有する請求項１６に記載のシステム。
【請求項１８】
請求項９から１７のいずれか一項に記載のシステムを有するスマートフォン。
【請求項１９】
第１のコンピューティングプラットフォームから第２のコンピューティングプラットフォーム上のアクティブオブジェクトへのアクセスを提供するコンピュータプログラムであって、コンピュータ上で実行される際に、
前記第１のコンピューティングプラットフォーム上のアプリケーションから関数呼出しを受け取り、
前記関数呼出しに応答して、前記第２のコンピューティングプラットフォーム上の第１の制御スレッド中の、前記アクティブオブジェクトからのサービス要求に対して用意されたアクティブスケジューラを始動し、
前記第２のコンピューティングプラットフォーム上に第２の制御スレッドを作成し、及び
制御が呼出アプリケーションに戻ることを可能にするために前記第２のスレッドに前記アクティブスケジューラを転送するコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティングプラットフォーム間のアクティブオブジェクトへのアクセスを提供することに関し、特に、但し排他的ではなく、制御が呼出し側Java(登録商標)アプリケーションへ戻ることができるような態様で、Java(登録商標)ネイティブインターフェイス（JNI）を介した、Symbian（商標）オペレーティングシステム環境中のアクティブオブジェクトへのアクセスをJava(登録商標)アプリケーションに提供する方法に関する。
【背景技術】
【０００２】
Symbian(商標)は、スマートフォンのためのグローバル業界標準OS（オペレーティングシステム）である。スマートフォン1の例が図1に図示される。スマートフォンは高度な機能を有する携帯電話であり、通常の通信機能に加えて、一般的に電子メール及び高度なブラウジング機能をサポートする。スマートフォンはカメラ2も含むこともできる。
【０００３】
Symbian(商標) OSは、主にＣ＋＋（オブジェクト指向計算機言語）で記述される。オブジェクト指向言語は、一般にマルチタスキングのいくつかの手段を提供する。例えば、他の周知のオブジェクト指向言語であるJava(登録商標)言語は、主にマルチスレッディングによってマルチタスキングを提供し、複数の別々のスレッドにおける並行タスクの実行を可能にする。
【０００４】
Symbian(商標) OSはプリエンプティブマルチスレッディングを提供し、その結果、複数のアプリケーション及びサーバーを並行して実行することができる。スレッド中で、アクティブオブジェクトはノンプリエンプティブなマルチタスキングを提供するために用いられ、大部分のアプリケーション及びサーバーについてマルチスレッドのプログラミングを不要にする。多数のSymbian（商標）クラスはアクティブオブジェクト基本クラスCActiveから派生する。アクティブオブジェクトは、それ自身の制御スレッド中で動作するオブジェクトとして定義されることができる。Symbian(商標) OSにおいて、アクティブオブジェクトは、基本クラスCActiveから派生する任意のオブジェクトである。
【０００５】
Symbian(商標) OSにおけるスレッドとアクティブオブジェクトとの間の関係は、図2に図示される。システムスケジューラ10は、複数のスレッド11、12、13間のプリエンプティブマルチスレッディングを提供する。プリエンプティブマルチスレッディングは、各々のスレッドが、ＣＰＵ時間の一定の部分を与えられ、その後、次のスレッドが動作できるようにサスペンドされることを意味する。十分頻繁にスレッド間の切り替えをすることによって、スレッドが連続的に実行されているという錯覚が引き起こされる。
【０００６】
対照的に、スレッド11の中に複数のアクティブオブジェクト20、21、22が存在することがありえる。各々のスレッドは、アクティブオブジェクト間のＣＰＵ時間のスケジューリングをするためにアクティブスケジューラ25を有することができる。アクティブスケジューラ25はノンプリエンプティブなアプローチを用いており、実行されているアクティブオブジェクトがサスペンドされずに、そのタスクを完了してアクティブスケジューラに制御を返すことを可能にする。
【０００７】
Symbian(商標) OSは、アクティブオブジェクトアプローチに賛成してマルチスレッドアプローチに反対する。このOSの下では、協働するスレッドのシステムを可能にするプログラムを記述するよりも、協働するアクティブオブジェクトのシステムを可能にするプログラムを記述する方が容易である。スレッド間の通信はアクティブオブジェクト間よりも遅くて難しく、アクティブオブジェクトの実行時間コストはスレッドのコストよりも非常に少ない。さらに、アクティブオブジェクトを作成して破棄することは、スレッドを作成して破棄することよりも、プロセッサの動作負荷に関してより効率的である。一般的に、したがって、Symbian(商標)アプリケーションは、単一のスレッドを含み、当該スレッド内に複数のアクティブオブジェクトを有するプロセスを用いる。
【０００８】
コンピューティングプラットフォーム間の移植性のために、Java(登録商標)言語は、特にGUI（グラフィカルユーザインタフェース）開発において、非常に普及しポピュラーとなった。そのために、Java(登録商標)はSymbian(商標)プラットフォーム用のアプリケーションを開発するために一般的に用いられ、Java(登録商標)による実装を提供する。しかし、その移植性を維持するために、Java(登録商標)は、下位レベルのデバイス機能を直接使用するようには、例えばカメラ用のデバイスドライバ又はBluetooth(商標)若しくは赤外線デバイスへアクセスするようには設計されていない。Java(登録商標)がそのようなネイティブな機能にアクセスするための通常の方法は、Java(登録商標)ネイティブインターフェイス（JNI）を介するものであり、図３に図示するように、JNIは、Java(登録商標)環境３０とネイティブSymbian(商標)環境32の間の「翻訳レイヤ」を提供する。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、そのSymbian(商標)実装において、JNI 31はアクティブオブジェクトと相互に作用するように設計されていない。
【００１０】
スレッドの代わりにアクティブオブジェクトを用いることから生じる技術的な利点を考慮して、Java(登録商標)プログラムがSymbian(商標) OSのアクティブオブジェクトにアクセスすることを可能にすることが望まれている。
【課題を解決するための手段】
【００１１】
本発明の実施の形態は、Java(登録商標)からアクティブオブジェクトへのJNIを介したアクセスを可能にするメカニズムを提供する。さらに一般的には、本発明は、第１のコンピューティングプラットフォーム上のアプリケーションが第２のコンピューティングプラットフォーム上のアクティブオブジェクトに直接アクセスしない任意の環境に適用できる。
【００１２】
本発明によれば、第１のコンピューティングプラットフォームから第２のコンピューティングプラットフォーム上のアクティブオブジェクトへのアクセスを提供する方法が提供され、当該方法は、前記第１のコンピューティングプラットフォーム上のアプリケーションから関数呼出しを受け取り、前記関数呼出しに応答して、前記アクティブオブジェクトからのサービス要求に対して用意されるアクティブスケジューラである、前記第２のコンピューティングプラットフォーム上の第１の制御スレッド内のアクティブスケジューラを始動し、前記第２のコンピューティングプラットフォーム上に第２の制御スレッドを作成し、及び、制御が呼出しアプリケーションへ戻ることを可能にするために前記アクティブスケジューラを前記第２のスレッド内に転送する方法である。
【００１３】
前記アクティブスケジューラは、アクティブオブジェクトからの、又は前記アクティブスケジューラを転送するために始動されるタイマーオブジェクトからの要求に応答して転送されることができる。
【００１４】
本方法は、前記アクティブオブジェクトからの前記要求が、複数の要求の内の最初の要求であるかを判定するステップ、及びその場合に限りアクティブスケジューラを別のスレッドに転送するステップを含むことができる。前記要求が最初の要求であるかを判定することは、ステートマシンを用いて行うことができる。
【００１５】
本発明によれば、第１のコンピューティングプラットフォームから第２のコンピューティングプラットフォーム上のアクティブオブジェクトへのアクセスを提供するためのシステムがさらに提供され、当該システムは、前記第１のコンピューティングプラットフォーム上のアプリケーションから関数呼出しを受け取る手段、前記関数呼出しに応答して、前記アクティブオブジェクトからのサービス要求に対して用意されるアクティブスケジューラである、前記第２のコンピューティングプラットフォーム上の第１の制御スレッド内のアクティブスケジューラを始動する手段、前記第２のコンピューティングプラットフォーム上に第２の制御スレッドを作成する手段、及び、制御が呼出しアプリケーションへ戻ることを可能にするために前記アクティブスケジューラを前記第２のスレッド内に転送する手段を有するシステムである。
【００１６】
前記転送手段は、前記第１のスレッド中の前記アクティブスケジューラを停止する手段、及び前記第２のスレッド中の前記スケジューラを再開する手段を有することができる。
【００１７】
本発明によれば、第１のコンピューティングプラットフォームから第２のコンピューティングプラットフォーム上のアクティブオブジェクトへのアクセスを提供するためのコンピュータプログラムがまたさらに提供され、当該コンピュータプログラムは、コンピュータ上で実行される際に、前記第１のコンピューティングプラットフォーム上のアプリケーションから関数呼出しを受け取り、前記関数呼出しに応答して、前記アクティブオブジェクトからのサービス要求に対して用意されるアクティブスケジューラである、前記第２のコンピューティングプラットフォーム上の第１の制御スレッド内のアクティブスケジューラを始動し、前記第２のコンピューティングプラットフォーム上に第２の制御スレッドを作成し、及び、制御が呼出しアプリケーションへ戻ることを可能にするために前記アクティブスケジューラを前記第２のスレッド内に転送するプログラムである。
【００１８】
以下、添付の図面を参照して、本発明の実施の形態を一例として説明する。
【発明を実施するための最良の形態】
【００１９】
上述した様に、Symbian(商標) OSでは、アクティブオブジェクト（AO）が、それらの要求を扱うことができる動作中のアクティブスケジューラを必要とする。ほとんど全てのスレッドは、アクティブスケジューラを用いる。アクティブスケジューラが存在する場合、必要に応じて、アクティブオブジェクトがそれに追加されることができ、それから除去されることができる。
【００２０】
JNI（商標）の下にはアクティブスケジューラが存在しないので、アクティブスケジューラは手動で始動されることを必要とする。この機能がSymbian(商標) OSのCActiveSchedulerクラスで提供されるにもかかわらず、スケジューラを始動するためにこのクラス内で定義されるStart()関数に対する呼出しはブロックする。これは、ネイティブな（Symbian(商標) OSの）関数に対する呼出しがJava(登録商標)の呼出し側に戻らずに、更なる処理を実行することができないことを意味する。後述するメカニズムでは、この挙動は避けられる。代わりに、制御をJava(登録商標)アプリケーションに戻すことができ、アクティブオブジェクトへの及びアクティブオブジェクトからのさらなる要求を成すことができる態様で、アクティブスケジューラが始動される。
【００２１】
簡単に言うと、アクティブスケジューラに対する最初の要求がされたときに、アクティブスケジューラは別のスレッドに転送される。使用中のアクティブオブジェクトから、又はその目的のためだけに始動されるタイマーオブジェクトから、開始することができる。このスキームを遂行するための手順が、図4に示される。
【００２２】
図4を参照して、Java(登録商標)プログラムは、Symbian(商標) OSのネイティブ関数を呼び出す（ステップs1）。前記ネイティブ関数は、ネイティブSymbian(商標)中のアクティブスケジューラ25を初期化し（ステップS2）、同様にアクティブオブジェクト20を初期化する（ステップS3）。アクティブスケジューラが始動されてブロックし（ステップs4）、そしてこのルートによるJava(登録商標)プログラムへの復帰を防ぐ。同時に、アクティブオブジェクトは、アクティブスケジューラの処理メソッドを呼び出す（ステップs5）。前記処理メソッドは、これが既に完了していない場合、アクティブスケジューラを停止し、別のスレッドへ転送し、再開する。それから、アクティブオブジェクトの要求が処理され（ステップs6）、その後に、手順はJava(登録商標)プログラムに戻る。
【００２３】
図5は、図4に示される処理を実施するための本発明によるプログラムの構造を図示する。当該構造は、Java(登録商標)プログラム40、JNIを取り扱うWrapperクラス41、及び、基本アクティブオブジェクトクラスCActive 43から派生したClientクラス42を有する。下記の説明において、特定の基本クラス及びメソッドがSymbian(商標) OSの一部として定義されることが、当業者によって理解される。これらのクラスは、CActiveクラス、CActiveSchedulerクラス及びRThreadクラスを含む。これらのクラスによって定義されるメソッドは、SetActive()メソッド及び仮想RunL()メソッドを含むが、これに限定されるものではない。
【００２４】
Java(登録商標)プログラムは、第１及び第２のJava(登録商標)関数であるfunction1()及びfunction2()を宣言し及び呼び出し、第１及び第２のネイティブ関数であるwrapF1()及びwrapF2()を宣言し及び呼び出すjava(登録商標)Classとして本明細書中で言及されるクラス40を有する。
【００２５】
Wrapperクラス41は、アクティブオブジェクトを作成するためにC++で記述されたネイティブ関数wrapF1()及びwrapF2()のためのプログラムコードを含む。
【００２６】
Clientクラス42は、Symbian(商標) OS中の基本アクティブオブジェクトクラスCActiveから派生し、アクティブスケジューラの制御を実施する。
【００２７】
本発明のメカニズムを説明するために、function1()と名付けられた関数がJava(登録商標)アプリケーション40により呼び出され、これが、Symbian(商標)OS中のネイティブ関数に対する最初の呼び出しを含むと、本明細書中では仮定する。この実施の形態を実施するために必要な全てのコード断片が、フローと同様に、以下に示される。
[java(登録商標)Class]
function1(){
(…)
wrapF1();
}
【００２８】
[java(登録商標)Class]クラス40はJava(登録商標)関数function1()を呼び出し、関数funciton1()が次いでネイティブ関数wrapF1()を呼び出して、制御がSymbian(商標)に渡る。
[Wrapper]
wrapF1() {
(...)
myAO = new(ELeave)Client;
myAO->Function1();
return;
}
【００２９】
ネイティブ関数wrapF1()はWrapperクラス41に含まれる。コード'myAO = new(ELeave)Client'は、Clientクラス42のアクティブオブジェクトmyAOを作成する。コード'myAO->Function1()'は、Java(登録商標)関数function()に対応するネイティブ関数である、Clientクラス42で定義された関数Function1()を呼び出す。コード'return'は、Java(登録商標) 40へ制御を戻す。
Clientクラス42は、以下で説明される。
[Client]
Client::Client():CActive(0){
myScheduler = new(ELeave)CActiveScheduler;
CActiveScheduler::Install(myScheduler);
CActiveScheduler::Add(this);
myThread = new RThread();
return;
}
Client::Function1(){
(...)
SetActive();
return;
}
Client::RunL(){
(...Code to implement first time decision)
//if first time this function is called:
myScheduler->Stop();
myThread->Create(..., (TInt (*)(TAny *))ASThread,...,this,...);
myThread->Resume();
(...)
return;
}
TInt Client::ASThread (TAny* ptr){
((Client*)ptr)->myScheduler->Replace(myScheduler);
myScheduler->Start();
}
【００３０】
Clientクラスはコード断片'Client::Client() : CActive(0)'において宣言され、当該コード断片は、ClientクラスがSymbian(商標) OSのCActive基本クラスから派生し、Clientクラスのオブジェクトがアクティブオブジェクトとなることも示している。当該コード断片は、また、アクティブオブジェクトが、優先度がゼロに設定されて作成されることを示す。
【００３１】
コード"myScheduler = new(ELeave)CActiveScheduler"は、Symbian(商標) OSのCActiveSchedulerクラスのmySchedulerと呼ばれるアクティブスケジューラオブジェクトを作成する。これは、コード'CActiveScheduler::Install(myScheduler)'によってアクティブスケジューラとしてインストールされる
【００３２】
コード'CActiveScheduler::Add(this)'は、アクティブオブジェクトmyAOをアクティブスケジューラ25によって維持されるオブジェクトのリストに加える。
【００３３】
コード'myThread = new RThread()'は、Symbian(商標) OSの RThreadクラスのmyThreadと呼ばれるスレッドオブジェクトを作成する。
【００３４】
Clientクラス42は、例えばカメラデバイスドライバへのアクセス等の、所望の手続きを実行するための関数Function1()を含む。Function1()メソッドは、CActiveクラス43で定義されるSetActive()メソッドの呼出しを含む。SetActive()の呼出しは、myAOアクティブオブジェクトを、アクティブかつ応答を要するものして、アクティブスケジューラ25に登録する。一旦要求が完了したならば、SetActive()の呼出しは、次にRunL()メソッドを呼び出す。
【００３５】
Clientクラス42は、CActiveクラス43の仮想メソッドとして定義される仮想メソッドRunL()を実行する。これは当該メソッドが初めて呼び出されているかどうかを判断するためのコードを含み、その判断は例えばステートマシンによって実行される。RunL()メソッドが最初に呼び出された場合に限り、コメント行に続くの３行のコードが実行される。
【００３６】
他の実施の形態において、RunL()メソッドの最初の実行が開始されるときに、タイマーオブジェクトが作成され実行される。完了時に、当該オブジェクトはRunL()メソッドが実行されたことを示すためにフラグをセットする。
【００３７】
コード'myScheduler->Stop()'は、現在のアクティブスケジューラを停止する。
【００３８】
コード'myThread->Create(...,(TInt(*)(TAny*))ASThread,:this,...)'はスレッドを作成し、コード'myThread->Resume()'はスレッドを始動する。'ASThread'は、スレッドが再開されるときに制御が渡るスレッド関数の名前である。引数'(TInt(*)(TAny*))ASThread'は、Symbian(商標) OSのRThreadクラスのCreate関数の仕様に従って宣言されるASThread()関数に対する関数ポインタである。'this'ポインタは、Clientクラスの現在のオブジェクト（この場合はmyAO）に対するポインタであり、ASThread()関数に渡される。
【００３９】
コード断片'(...)'はメソッドFunction1のために必要な任意の他の処理を表し、Java(登録商標)へのコールバックを含む。
【００４０】
Clientクラスの最後のメソッドはASThreadメソッドであり、RunL()メソッドから呼び出される。
【００４１】
コード断片'((Client*)ptr)->myScheduler->Replace(myScheduler)'は、Symbian(商標) OSのCActiveSchedulerクラスで定義されるReplaceメソッドを呼び出し、そのアクティブオブジェクトを保持しつつ現在のアクティブスケジューラが置き換えられることを可能にする。Replaceメソッドの呼出しは厳密に必要ではなく、この実施例において省略することができる。しかし、ASThread関数が必ずしもClientクラスのメンバーであるというわけではないので、それを含んだ方がより安全である。
【００４２】
そして、コード'myScheduler->Start()'がアクティブスケジューラを再開し、再びブロックする。しかし、今度は、スケジューラは別のスレッド中で動作しているので、制御はjava(登録商標) Classアプリケーション40に戻る。
【００４３】
本発明は、Symbian(商標) OSを実行する任意の装置のプログラミングに適用される。Java(登録商標)はその移植性のためにアプリケーション開発にとって非常にポピュラーであり、これらの装置上で動作しアクティブオブジェクトを利用する任意のJava(登録商標)アプリケーションは、本発明を利用することができる。
【００４４】
例は、Bluetooth(商標)を用いるJava(登録商標)マルチプレーヤーゲーム及び電話カメラ2を用いるJava(登録商標)アプリケーションを含む。
【００４５】
加えて、本発明の実施がSymbian(商標)及びJava(登録商標)プラットフォームに限られず、類似した機能を提供しているか又は同じ課題で苦しんでいる、任意のオペレーティングシステム、言語又はプラットフォームに適用できることも、明らかである。'active objects'なる用語が、Symbian(商標) OSの下で見いだされるオブジェクトに限られず、スケジューラ又は類似した制御メカニズムの制御の下で類似したマルチタスキング動作を実行する、任意のオペレーティングシステムの下の任意のオブジェクトでありうることが、更に理解される。
【００４６】
本発明が１つの特定の実施の形態に関して記載されているが、これが説明だけを目的としていること、及び本発明がより広く適用されることは明らかである。本発明の範囲内の多数のバリエーションが、当業者によって考えられる。
【図面の簡単な説明】
【００４７】
【図１】本発明の例が実施されることができるスマートフォンを示す図。
【図２】Java(登録商標)アプリケーションが図1に示されるスマートフォンのオペレーティングシステムとどのように通信するかを示す図。
【図３】アクティブオブジェクトとSymbian(商標) OS環境中のスレッドとの関係を示す図。
【図４】本発明の原理を示すフローチャート。
【図５】本発明を実施するためのプログラムの構造を示す構造図。
【図１】
2008523491.tif 000003
【図２】
2008523491.tif 000004
【図３】
2008523491.tif 000005
【図４】
2008523491.tif 000006
【図５】
2008523491.tif 000007
【国際調査報告】
2008523491.tif 000008
2008523491.tif 000009
2008523491.tif 000010