JP2009506467A - 仮想マシンにおける並行タスクのためのイベント処理 - Google Patents

仮想マシンにおける並行タスクのためのイベント処理 Download PDF

Info

Publication number
JP2009506467A
JP2009506467A JP2008533303A JP2008533303A JP2009506467A JP 2009506467 A JP2009506467 A JP 2009506467A JP 2008533303 A JP2008533303 A JP 2008533303A JP 2008533303 A JP2008533303 A JP 2008533303A JP 2009506467 A JP2009506467 A JP 2009506467A
Authority
JP
Japan
Prior art keywords
task
event
native
virtual machine
tasks
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.)
Pending
Application number
JP2008533303A
Other languages
English (en)
Inventor
マチスケ・ベルンド・ジェイ.
ウォン・キンスレー
英哉 川原
フレスコ・ネディム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Incorpor
Original Assignee
Sun Microsystems Incorpor
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Incorpor filed Critical Sun Microsystems Incorpor
Publication of JP2009506467A publication Critical patent/JP2009506467A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/546Xcast

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Input From Keyboards Or The Like (AREA)

Abstract

【課題】仮想マシンに並行してサポートされる複数のタスクに関連付けられたネイティブイベントを処理する技術が提供される。
【解決手段】仮想マシンのユーザは、プラットフォーム固有のネイティブイベントの処理が必要なタスクを並行して実施することができる。ネイティブイベントは、ディスパッチャを用いて、仮想マシンによって並行してサポートされる複数のタスクにディスパッチされる。ディスパッチャは、様々な基準に基づいて、ネイティブイベントを受け付けるタスクを複数の並行タスクから判断できる。携帯機器では通常、フォアグラウンドタスクは、ユーザに表示されている唯一のタスクであるため、フォアグラウンドタスクへのイベントのディスパッチは、携帯機器をサポートする仮想マシンに特に有用である。
【選択図】1B

Description

本発明は、概して、コンピューティングシステムに関するものである。本発明は、より具体的には、仮想マシンにおいて、並行タスクのためにイベントを処理する技術に関するものである。
高水準のコンピュータプログラミング言語の目標の一つは、移植可能なプログラミング環境を得ることにある。このような環境では、コンピュータプログラムを別のコンピュータプラットフォームに容易に移植可能である。C言語などの高水準言語は、下層のコンピュータアーキテクチャから切り離された分離層を提供する。現在ほとんどのコンピュータアプリケーションが高水準言語で記述されている事実からも、これらの高水準言語の成果は明らかである。
移植性は、インターネット用インタフェースプロトコルとしてのワールドワイドウェブ(「ウェブ」)の出現にともなって、新たな高みに達した。ワールドワイドウェブは、グラフィカルインタフェースを通じた異なるコンピュータプラットフォーム間の通信を可能にする。ウェブ上で通信するコンピュータは、アプレットと称される小さなアプリケーションをダウンロードして実行することができる。アプレットは、異なる種類のコンピュータプラットフォーム上で実行可能である場合、Java(登録商標)仮想マシンによって実行されるのが通常である。仮想マシンは、一般に、特定のハードウェア、ソフトウェア、またはその両方に実装された抽象的なコンピューティングマシンである。仮想マシンは、特定のハードウェア用、ソフトウェア用、またはその両方用のプラットフォームアプリケーションをサポートすることができる。以下では、Java(登録商標)仮想マシンがより普及しているものと仮定して、Javaコンピューティング環境について詳しく述べるものとする。
Javaプログラミング環境は、ここ最近、極めてポピュラーになってきた。Javaプログラミング言語は、小型機器(例えばポケベル、携帯電話、スマートカード等)からスーパーコンピュータに至る広範囲のコンピュータ上で実行可能であるように、十分な移植性を有するように設計された言語である。Javaプログラミング言語(およびその他の言語)で記述されたコンピュータプログラムは、Java仮想マシン処理系による実行に適したJavaバイトコード命令にコンパイルされ得る。Java仮想マシンは、通例は、Java仮想マシン命令セット用のインタープリタの形態をとるソフトウェアとして実装されるが、ソフトウェア、ハードウェア、またはその両方でもあり得る。特定のJava仮想マシン処理系と、それに対応するサポートライブラリとが合わさって、Javaランタイム環境が構成される。
Javaプログラミング言語のコンピュータプログラムは、一つもしくはそれ以上のクラスまたはインタフェース(ここでは併せてクラスまたはクラスファイルと称する)の形で作成される。このようなプログラムは、一般に、プラットフォームから独立している、すなわちハードウェアおよびオペレーティングシステムから独立している。したがって、これらのコンピュータプログラムは、Javaランタイム環境の処理系を実行可能な任意のコンピュータ上で、修正なく実行され得る。
Javaプログラミング言語で記述されたオブジェクト指向のクラスは、「クラスファイルフォーマット」と称される特定のバイナリフォーマットにコンパイルされる。クラスファイルは、単一のクラスに関連付けられた複数のコンポーネントを含む。これらのコンポーネントは、そのクラスに関連付けられたメソッド、インタフェース、またはこれらの両方であることが可能である。また、クラスファイルフォーマットは、そのクラスに関連付けられた大量の補助的情報を含むことができる。クラスファイルフォーマット(およびJava仮想マシンの通常動作)は、ティム・リンドホルムおよびフランク・イェリンによる「Java仮想マシン第2版」(1999年4月、ISBN 0−201−43294−3)に詳細に記載されている。本書は、引用によって、その全体が本明細書に組み込まれるものとする。
図1Aは、単純なJavaソースコード101が、インタープリタ、すなわちJava仮想マシンによる実行を経て進展する様子を示している。Javaソースコード101は、Javaで記述された定番の「Hello World」プログラムを含む。ソースコードは、ついで、ソースコードをバイトコードにコンパイルするバイトコードコンパイラ103に入力される。バイトコードは、ソフトウェアをエミュレートされたコンピュータによって実行される仮想マシン命令である。仮想マシン命令は、通常は汎用である(すなわち、特定のマイクロプロセッサアーキテクチャ用またはコンピュータアーキテクチャ用に設計されたものではない)が、これは、必ずしも必要ではない。バイトコードコンパイラは、Javaプログラム用のバイトコードを含むJavaクラスファイル105を出力する。Javaクラスファイルは、Java仮想マシン107に入力される。Java仮想マシンは、Javaクラスファイル内のバイトコードをデコードして実行するインタープリタである。Java仮想マシンは、インタープリタであるが、通常は、マイクロプロセッサアーキテクチャまたはコンピュータアーキテクチャをソフトウェアの形で模倣する(例えばマイクロプロセッサアーキテクチャまたはコンピュータアーキテクチャがハードウェア内に存在しない)ことから仮想マシンと称される。
仮想マシンは、極めて有用である。しかしながら、後述されるように、従来の仮想マシンは、タスクの種類によっては、ユーザによる複数タスクの並行処理を可能にするマルチタスク環境を提供することができなかった。このようなタスクの例として、ユーザまたは別のソースからの入力を受け付ける対話型タスク(例えばアプリケーションプログラム)が挙げられる。
マルチタスクコンピューティング環境において、タスクは、タスクを主として実行する単一のコンピューティングユニットと称することができる。コンピューティングユニットは、例えば、プログラミング命令(例えば、C、C++、またはJavaで記述された高水準プログラミング言語)のセットによって表すことができる。他方では、タスクは、アプリケーションプログラム全体(すなわちアプレット)でもあり得る。例えば、タスクは、電卓、音楽プレーヤ、ビデオプレーヤ、または対話型ゲームであり得る。ユーザは、これらの各タスクを開始し使用することによって、機能タスクすなわちコンピューティングタスクを形成することができる。
いずれの場合も、マルチタスクをサポートするコンピューティングシステムによって、タスクを並行して実行させることが可能になる。並行タスクは、通常は、交互に実行可能である、またはコンピュータシステムリソースを交互に共有可能である、またはその両方が可能である。しかしながら、ユーザの観点から見れば、複数のタスクを並行して実施可能である。例えば、ユーザは、電卓アプリケーションと音楽プレーヤとを同時に使用することができる。これは、ユーザが音楽を聴きながら電卓を使用することを可能にする。しかしながら、従来の仮想マシンは、対話型タスクを同時に使用可能にするマルチタスク環境を提供するものではなかった。これは、すなわち、従来の仮想マシンのユーザは、二つの並行タスクと同時に効果的に相互にやりとりすることができないことを意味する。
以上からわかるように、仮想マシンにおいてマルチタスク処理を行うための技術が必要とされている。
上述されたように、今日のコンピューティング環境では、仮想マシンが極めて有用である。マルチタスクをサポートする環境は、ユーザによる複数タスクの並行処理も可能にするので、マルチタスクをサポートする仮想マシンの開発も、更に望まれている。
マルチタスクコンピューティング環境では、タスクは、タスクを主として実施するコンピューティングユニットと称することができる。コンピューティングユニットは、例えば、プログラミング命令(例えば、C、C++、またはJavaで記述された高水準プログラミング言語)のセットによって表すことができる。タスクは、また、アプリケーションプログラム全体、すなわちアプレットでもあり得るし、または、アプリケーションプログラム全体、すなわちアプレットに関連付けることもできる。例えば、タスクは、電卓、音楽プレーヤ、ビデオプレーヤ、またはコンピュータゲームであり得る。いずれの場合も、マルチタスクをサポートするコンピューティングシステムによって、タスクを並行して実行させることが可能になる。これら複数のタスクは、交互に実行可能である、またはコンピュータシステムリソースを交互に共有可能である、またはその両方が可能である。これは、ユーザが複数のタスクを実施することを可能にする。例えば、ユーザは、電卓アプリケーションと音楽プレーヤとを同時に使用することができる。これは、ユーザが音楽を聴きながら電卓を使用することを可能にする。
しかしながら、タスクのなかには、「イベント」処理を必要とするものがある。このようなタスクの例として、ユーザからの入力を受け付ける対話型プログラムが挙げられ、これらは、ユーザにとって、より面白いのが通常である。イベント処理は、外部イベント(例えばキーボードによるユーザからの入力)を適切なタスク(例えば対話型ゲーム)に送ること、および処理することを含む。仮想マシンにおいて、外部イベントは、プラットフォーム固有のハードウェアコンポーネントまたはソフトウェアコンポーネントによって生成、伝送、もしくは処理されるのが通常である。これらプラットフォーム固有のイベントは、「ネイティブ」イベントと称することができる。仮想マシンにおけるネイティブイベントの処理は、アプリケーションプログラムがプラットフォーム依存である従来のコンピューティング環境では通常的に遭遇しえない新たな問題を提起する。したがって、仮想マシンにおいてネイティブイベント処理に対処することが必要になる。
従来の仮想マシンは、マルチタスク環境において並行タスクのネイティブイベントを処理するためのメカニズムを提供するものではない。これは、すなわち、従来の仮想マシンのユーザは、ネイティブイベント処理を必要とする二つのタスクを並行して使用することができないことを意味する。したがって、マルチタスクをサポートする仮想マシンにおいてネイティブイベントを処理するための技術が必要とされている。ネイティブイベントの処理は、アプリケーションプログラムがプラットフォーム依存である従来のコンピューティング環境で通常的に遭遇される問題とは異なる。したがって、これらの技術は、従来のコンピューティング環境では通常的に遭遇しえない問題に対処することを望まれる。
本発明は、大まかに言うと、仮想マシンに並行してサポートされている複数のタスクに関連付けられたネイティブイベントを処理するための技術に関するものである。この技術を用いれば、仮想マシンのユーザは、たとえプラットフォーム固有の(すなわちネイティブ)イベント(例えばプラットフォーム固有の入力)の処理を必要とするタスクであっても、並行して実施することが可能になる。本発明の一態様にしたがって、ネイティブイベントをディスパッチするためのスマートイベントディスパッチャを使用する仮想マシンが開示される。スマートイベントディスパッチャは、仮想マシンによって並行してサポートされている複数のタスクにネイティブイベントを送る。知られているように、スマートイベントディスパッチャは、複数の並行タスクのなかから、処理のためにネイティブイベントを受け付けるべきタスクを判断することができる。この判断は、異なる様々な基準に基づいて下すことができる。例えば、特定のタスクに対し、プラットフォーム依存の特定のエンティティ(例えばデバイス)によって生成、処理、または伝送されたネイティブイベントを割り当てることができる。イベントは、また、ユーザによる割り当てに基づいてディスパッチする(例えばユーザによってプログラムする)ことも、または、イベントの各種の属性(例えば、コンテンツ、受信ポート、プロキシミティ等)に基づいてディスパッチすることも可能である。一実施形態において、ネイティブイベントは、フォアグラウンドタスクに送られる。モバイル機器において、フォアグラウンドタスクは、ユーザにいっときに表示される唯一のタスクであるのが通常である。したがって、本実施形態は、モバイル機器をサポートする仮想マシンに対して特に有用である。
本発明は、方法、装置、コンピュータ読み取り可能媒体、およびデータベースシステムを含む多くの方法で実現することができる。以下では、本発明のいくつかの実施形態が説明される。
添付の図面と併せて記載される以下の詳細な説明から、本発明の上記のおよびその他の特性ならびに利点がいっそう明らかになる。
本発明は、添付の図面と併せて記載される以下の詳細な説明から、容易に理解することができる。図中において、類似の参照符号は類似の構成要素を表すものとする。
発明の背景に記載されたように、仮想マシンは、今日のコンピューティング環境において、極めて有用である。マルチタスクをサポートする環境は、ユーザによる複数タスクの並行処理も可能にするので、マルチタスクをサポートする仮想マシンの開発も、更に望まれている。
マルチタスクコンピューティング環境では、タスクは、タスクを主として実施するコンピューティングユニットと称することができる。コンピューティングユニットは、例えば、プログラミング命令(例えば、C、C++、またはJavaで記述された高水準プログラミング言語)のセットによって表すことができる。タスクは、また、アプリケーションプログラム全体、すなわちアプレットであり得るし、または、アプリケーションプログラム全体、すなわちアプレットに関連付けることもできる。例えば、タスクは、電卓、音楽プレーヤ、ビデオプレーヤ、またはコンピュータゲームであり得る。いずれの場合も、マルチタスクをサポートするコンピューティングシステムによって、タスクを並行して実行させることが可能になる。これら複数のタスクは、交互に実行可能である、またはコンピュータシステムリソースを交互に共有可能である、またはその両方が可能である。これは、ユーザが複数のタスクを実施することを可能にする。例えば、ユーザは、電卓アプリケーションと音楽プレーヤとを同時に使用することができる。これは、ユーザが音楽を聴きながら電卓を使用することを可能にする。
しかしながら、タスクのなかには、その処理のために「イベント」処理を必要とするものがある。このようなタスクの例として、ユーザからの入力を受信する対話型プログラムが挙げられ、これらは、ユーザにとって、より面白いのが通常である。イベント処理は、外部イベント(例えばキーボードによるユーザからの入力)を適切なタスク(例えば対話型ゲーム)に送ること、および処理することを含む。仮想マシンにおいて、外部イベントは、プラットフォーム固有のハードウェアコンポーネントまたはソフトウェアコンポーネントによって生成、伝送、もしくは処理されるのが通常である。これらプラットフォーム固有のイベントは、「ネイティブ」イベントと称することができる。仮想マシンにおけるネイティブイベントの処理は、アプリケーションプログラムがプラットフォーム依存である従来のコンピューティング環境では通常的に遭遇しえない新たな問題を提起する。したがって、仮想マシンにおいてネイティブイベント処理に対処することが必要になる。
しかしながら、従来の仮想マシンは、マルチタスク環境において並行タスクのネイティブイベントを処理するためのメカニズムを提供するものではない。これは、すなわち、従来の仮想マシンのユーザは、ネイティブイベント処理を必要とする二つのタスクを並行して使用することができないことを意味する。したがって、マルチタスクをサポートする仮想マシンにおいてネイティブイベントを処理するための技術が必要とされている。ネイティブイベントの処理は、アプリケーションプログラムがプラットフォーム依存である従来のコンピューティング環境で通常的に遭遇される問題とは異なる。したがって、これらの技術は、従来のコンピューティング環境では通常的に遭遇しえない問題に対処することを望まれる。
したがって、本発明は、仮想マシンに並行してサポートされている複数タスクに関連付けられたネイティブイベントを処理するための技術に関するものである。この技術を用いれば、仮想マシンのユーザは、たとえプラットフォーム固有の(すなわちネイティブ)イベント(例えばプラットフォーム固有の入力)の処理を必要とするタスクであっても、並行して実施することが可能になる。本発明の一態様にしたがって、ネイティブイベントをディスパッチするためのスマートイベントディスパッチャを使用する仮想マシンが開示される。スマートイベントディスパッチャは、仮想マシンによって並行してサポートされている複数のタスクにネイティブイベントを送る。知られているように、スマートイベントディスパッチャは、複数の並行タスクのなかから、処理のためにネイティブイベントを受信するべきタスクを決定することができる。この決定は、異なる様々な基準に基づいて下すことができる。例えば、特定のタスクに対し、プラットフォーム依存の特定のエンティティ(例えばデバイス)によって生成、処理、または伝送されたネイティブイベントを割り当てることができる。イベントは、また、ユーザによる割り当てに基づいてディスパッチする(例えばユーザによってプログラムする)ことも、または、イベントの各種の属性(例えば、コンテンツ、受信ポート、プロキシミティ等)に基づいてディスパッチすることも可能である。一実施形態において、ネイティブイベントは、フォアグラウンドタスクに送られる。モバイル機器において、フォアグラウンドタスクは、ユーザにいっときに表示される唯一のタスクであるのが通常である。したがって、本実施形態は、モバイル機器をサポートする仮想マシンに対して特に有用である。
以下では、図1B〜3を参照にしながら発明の実施形態が説明される。しかしながら、当業者ならば容易にわかるように、本発明は、これらの実施形態の範囲に限定されず、これらの図に基づく詳細な説明は、例示のみを目的としたものである。
図1Bは、本発明の一実施形態にしたがった、コンピューティング環境110を示している。図1Bに示されるように、仮想マシン112は、プラットフォーム116上で、アプリケーション層114をサポートしている。アプリケーション層114は、仮想マシン112によってサポートされている一つまたはそれ以上のアプリケーション(例えばアプレット)を表している。プラットフォーム116は、コンピューティング環境110にある、ハードウェア固有のコンポーネント、ソフトウェア固有のコンポーネント、またはその両方を表している。なお、仮想マシン112によってサポートされている、アプリケーション層114にある一つまたはそれ以上のアプリケーションは、プラットフォーム独立であることが可能である。要するに、アプリケーション層114にあるアプリケーションは、異なるプラットフォーム(不図示)に移植され得る。また、仮想マシン112は、仮想マシン112上で並行して動作している二つの並行タスクを、すなわちタスク120およびタスク122をサポートしている。
図1Bに示されるように、仮想マシン112は、タスク120,122に関連付けられたいくつかのプラットフォーム固有のイベント(すなわちネイティブイベント)E1,E2,E3,E4を受け付ける。これらのネイティブイベントは、例えば、ネットワークデバイス(またはインタフェース)を介して受信されたデータや、キーボードを介してユーザによって生成された入力等であることが可能である。概して、ネイティブイベントは、プラットフォーム116によって生成、処理、または伝送された任意のイベントであることが可能である。いずれの場合も、これらのネイティブイベントは、仮想マシン112による処理のために、適切なタスクに提示されるべきものである。
知られているように、スマートイベントディスパッチャ118は、並行タスク120,122のどちらがネイティブイベントE1,E2,E3,E4を受信するべきかを決定する。例えば、イベントE1,E4がタスク120に送られるのに対し、ネイティブイベントE2,E3はタスク122に送られる。これらのネイティブイベントは、ディスパッチのために、スマートイベントディスパッチャ118に直接受け付けられ得るが、これは必要条件ではない。
スマートイベントディスパッチャ118による判断は、望ましい様々な基準に基づいて下される。例えば、特定のタスクに対し、特定のエンティティ(例えばデバイス)によって生成された、または受信されたネイティブイベントを割り当てることができる。別の一実施形態では、ネイティブイベントは、現時点でフォアグラウンドにある(例えば現時点でユーザに表示されている)タスクにディスパッチされる。ネイティブイベント・ディスパッチャ118は、また、ユーザによる選択結果に基づいてイベントをディスパッチする(例えばユーザによってプログラムする)ことも、または、イベントの属性(例えば、コンテンツ、入力、ポート、プロキシミティ等)に基づいてディスパッチすることも可能である。いずれの場合も、スマートイベントディスパッチャ118は、仮想マシン112によってサポートされているマルチタスク環境にある特定のタスクにネイティブイベントを送る。
図1Cは、並行タスクをサポートする仮想マシンにおいて、特定のプラットフォームに関連付けられたプラットフォーム依存の(ネイティブ)イベントを処理するための方法150を、本発明の一実施形態にしたがって示している。方法150は、例えば、プラットフォーム116(図1Bに示される)に関連付けられたネイティブイベントを処理する目的で、仮想マシン112によって使用することができる。先ずは、動作152において、特定のプラットフォームに関連付けられたプラットフォーム依存の(ネイティブ)イベントが受け付けられる。次に、動作154において、プラットフォーム依存の(ネイティブ)イベントを処理するために割り当てられているタスクが判断される。その後、方法150は動作156に進み、プラットフォーム依存の(ネイティブ)イベントは、その処理のために割り当てられたタスクに送信される。したがって、動作158において、プラットフォーム依存の(ネイティブ)イベントは、その処理のために割り当てられたタスクによって処理される。方法150は、動作158の後に終了する。
図2は、本発明の別の一実施形態にしたがった、Java対応のコンピューティング環境200を示している。Java対応のコンピューティング環境200は、モバイル情報デバイスプロファイル(JSR−37)のJava仕様にしたがったコンピューティング環境を図示したものである。本文献は、引用によって、その全体が本明細書に組み込まれるものとする。
図1のコンピューティング環境110と同様に、Java対応のコンピューティング環境200のアーキテクチャ層として、プラットフォーム層202、仮想マシン204、およびアプリケーション層206が図示されている。図2に示されるように、プラットフォーム層202は、モバイル情報デバイス(MID)ハードウェア層208およびネイティブシステムソフトウェア層210を含む。モバイル情報デバイス(MID)ハードウェア層208は、モバイルコンピューティングデバイス(例えば電話や携帯情報端末)用のハードウェアを表している。ネイティブシステムソフトウェア層210は、モバイル情報デバイス(MID)ハードウェア層208の上で動作しており、例えば、デバイスを使用するために用いられるオペレーティングシステム、ライブラリ、またはその両方を含むことができる。ただし、ネイティブシステムソフトウェア層210は、必ずしもオペレーティングシステムを有する必要があるのではない点に留意する必要がある。したがって、仮想マシン204は、ネイティブシステムソフトウェア層210がオペレーティングシステムを有するものとは想定しておらず、実際には、仮想マシン204は、イベントをディスパッチする動作に際してオペレーティングシステムを真似ることができる。
このように、スマートイベントディスパッチャ(またはマネージャ)212は、プラットフォーム固有のネイティブシステムE1をタスク214にディスパッチすると同時に、もう一つのイベントE2をもう一つのタスク216にディスパッチすることができる。繰り返し述べるが、タスク214,216は、仮想マシン204によって並行してサポートされている。本実施形態において、スマートイベントディスパッチャ(またはマネージャ)212は、ネイティブイベントを待機させてそれらを様々なタスクにディスパッチするイベントマネージャスレッドとして実装される。図2に示されるように、スマートイベントディスパッチャ(またはマネージャ)212は、待機イベント216およびイベントディスパッチロジック218を含む。実際は、待機イベント216は、ネイティブイベントが受け付けられるまで、スマートイベントディスパッチャ(またはマネージャ)212を待機させる働きをする。例えば、ネイティブイベントE2が受け付けられると、イベントディスパッチロジック218は起動される。イベントディスパッチロジック218は、どのタスクがネイティブイベントE2を受け付けるべきかを判断する。前述のように、この決定は、異なる様々な基準に基づいて下すことができる。いずれの場合も、スマートイベントディスパッチャ(またはマネージャ)212は、イベントディスパッチロジック218に基づいて、複数のタスク(タスク214,216)の少なくとも一方にネイティブイベントE2を送る。
図2に示されるように、スマートイベントディスパッチャ(またはマネージャ)212は、ネイティブイベントE2をタスク216に送る。より具体的に言うと、スマートイベントディスパッチャ(またはマネージャ)212は、ネイティブイベントE2をイベントリポジトリ(例えば先入れ先出しキュー)220に格納する。スマートイベントディスパッチャ(またはマネージャ)212は、また、ネイティブイベントが転送されてきたことを、タスク216に関連付けられたイベントハンドラ221に通知する。すると、タスク216に関連付けられたイベントハンドラ221(例えばイベントハンドラスレッド)が呼び出される。実際は、転送の通知によって、待機イベントロジック222が呼び出される。その結果、イベント処理ロジック223は、イベントリポジトリ220にアクセスし、タスク216のためにイベントE2を処理することが可能になる。なお、スマートイベントディスパッチャ(またはマネージャ)212は、イベントリポジトリ220にデータを入れる前に、そのデータを操作する(例えばカプセル化する)ことができる。この動作は、後ほど詳述される(例として、図3の動作330を参照)。
なお、タスク216,218は、例えば、Javaモバイル情報デバイスプロファイル228に対応したモバイル情報デバイスプロファイル(MIDP)アプリケーション224,226(すなわち、MIDlet(ミッドレット))に関連付けることができる。モバイル情報デバイスプロファイル228は、引用によってその全体を本明細書に組み込まれたモバイル情報デバイスプロファイル(JSR−37)のJava仕様で説明されている。
なお、図2に示されたイベントディスパッチの技術は、モバイル情報デバイスプロファイル(JSR−37)のJava仕様に準拠していないコンピューティング環境でも実施することができる。これは、とりわけイベントマネージャ、イベントハンドラ、およびイベントキューが、前述されたのと同様に、イベントをディスパッチする目的であらゆる仮想マシン内に実装可能であることから明らかである。このように、これらの技術は、あらゆる仮想マシンにおいて、イベントをディスパッチするために使用することができる。
上述されたように、本発明の一実施形態にしたがうと、ネイティブイベントは、例えばフォアグラウンドにあるタスクにディスパッチすることができる。このようなタスクは、フォアグラウンドで処理されるのが通常である。モバイル機器において、フォアグラウンドタスクは、ユーザに表示される唯一のタスク(またはタスク表示)であるのが通常である。例として、別のタスク(例えば音楽プレーヤ等)がバックグラウンドで実行されている間、電卓タスクがフォアグラウンドにある場合を考える。モバイル機器において、もし電卓タスクがフォアグラウンドタスクである場合は、それは、ユーザ用のディスプレイに表示されている唯一のタスクであるのが通常である。ユーザには、フォアグラウンドタスクのグラフィック表示(例えばアイコンやウィンドウ)が示されるのが通常である。ユーザは、グラフィック表示、または別のデバイス(例えばキーボード)、またはその両方を介してタスク(例えば電卓)と相互にやりとりすることができる。この相互のやりとりは、ネイティブイベントを生成することができ、生成されたネイティブイベントは、処理のためにフォアグラウンドタスクに提供される。
更なる説明のため、図3は、本発明の一実施形態にしたがった、ネイティブイベントをフォアグラウンドタスクにディスパッチするための方法300を示している。フォアグラウンドタスクは、例えば、ユーザ用のディスプレイに表示されたタスクであることが可能である。モバイル機器において、フォアグラウンドタスクは、ユーザにいっときに表示される唯一のタスク(またはタスク表示)であるのが通常である。しかしながら、ユーザは、異なるタスクをフォアグラウンドに配することもできる。方法300は、例えば、フォアグラウンドタスクにイベントをディスパッチする目的で、図2の仮想マシン204によって用いることが可能である。
いずれの場合も、処理310は、現時点でフォアグラウンド(フォアグラウンドタスク)にあるタスクのタスクID(すなわちタスク識別子)が格納される動作312から開始される。次に、動作314では、フォアグラウンドに新しいタスクがあるか否かについて決定される。処理312は、動作314において新しいタスクがフォアグラウンドにあると決定されるまで待機する。動作314において、新しいタスクがフォアグラウンドにあると決定されると、処理310は、現時点でフォアグラウンドにあるタスク(フォアグラウンドタスク)のタスクID(すなわちタスク識別子)が格納される動作312に進む。
しかしながら、処理320は、ネイティブイベントが受け付けられたか否かについて判断される動作322から開始される。処理320は、動作322においてネイティブイベントが受け付けられたと判断されるまで待機する。動作322において、ネイティブイベントが受け付けられたと決定されると、処理320は、フォアグラウンドタスクのタスクIDが取り出される動作324に進む。その後、動作326において、タスクIDによって識別されるタスクに関連付けられたJavaオブジェクト(MIDletオブジェクト)が獲得される。このJavaオブジェクトは、そのフォアグラウンドタスク用のイベントリポジトリおよびイベントハンドラへのハンドル(例えば参照)を得るために使用される。イベントリポジトリおよびイベントハンドラへのハンドルが得られると、動作328において、ネイティブイベントは、Javaイベントオブジェクト(例えばMIDletイベントオブジェクト)として表すことができるように、カプセル化される。したがって、動作330において、Javaイベントオブジェクトは、フォアグラウンドタスクのイベントリポジトリのハンドルを使用して、イベントリポジトリに入れられる。最後に、動作332において、イベントハンドラは、そのハンドルを使用して通知を受けることができる。これは、例えば、イベントハンドラスレッドに「thread. notify」を送信することによって達成される。いずれにせよ、通知は、Javaイベントオブジェクトがイベントリポジトリ内の待ち行列に入ったことを知らせるものである。処理320は、次いで、ネイティブイベントが受信されたか否かについて決定される動作320に進む。
当業者ならば明らかなように、Javaで実現されたタスクのなかには、Javaで実現されていない(すなわちネイティブプログラミング言語の)データ構造内のデータにアクセスできないものがある。このようなタスクの一例として、互いにデータを共有しない複数のJavaタスク、またはそれ以外の形で互いに分離されている複数のタスクが挙げられる。これらのタスクは、「分離タスク」と称することができる。分離タスクおよびその可能性のあるその他のJavaタスクは、Javaで実現されたデータ構造として表現されているイベントリポジトリおよびハンドラに直接アクセスできない可能性がある。
しかしながら、Java仮想マシンそれ自体は、Java以外のプログラミング言語(例えばC、C++)で実現し得る。更に、Java仮想マシンそれ自体のコードは、ネイティブプログラミング言語で実現されたデータ構造へのアクセスに用いることが可能である。したがって、仮想マシンそれ自体は、データを操作して、そのデータをJavaデータ構造で表すことが可能である。こうして、操作して得られたこれらのJavaデータ構造は、分離タスクおよびその他のJavaタスクによってアクセス可能になる。したがって、データを操作して、そのデータをJava対応にするために、Javaコードを実行することは不要である。
以上の説明から、本発明の多くの特徴および利点が明らかになるので、添付の特許請求の範囲は、発明のこれらの特徴および利点を全て網羅するものとする。更に、当業者ならば、多くの変更態様に想到し得るので、本発明の範囲は、以上で図示され説明された厳密な構造および動作に限定されることは望ましくなく、したがって、適切なあらゆる変更態様および等価態様をその範囲内に含むものとする。
単純なJavaソースコードがインタープリタすなわちJava仮想マシンによる実行を経て進展する様子を示す図である。 本発明の一実施形態にしたがったコンピューティング環境を示す図である。 並行タスクをサポートする仮想マシンにおいて、特定のプラットフォームに関連付けられたプラットフォーム依存(ネイティブ)イベントを処理するための方法を示す図である。 本発明の別の一実施形態にしたがったJava対応のコンピューティング環境を示す図である。 本発明の一実施形態にしたがったフォアグラウンドタスクにネイティブイベントをディスパッチするための方法を示す図である。

Claims (19)

  1. プラットフォーム上で動作し第1および第2のタスクを並行して実行可能な仮想マシンによってネイティブイベントを処理する方法であって、
    前記仮想マシンが、前記プラットフォームに関連付けられた前記ネイティブイベントを受け付ける工程と、
    前記第1および第2のタスクが前記仮想マシンによって並行して実行される場合、前記仮想マシンが、該第1および第2のタスクの一方を、前記ネイティブイベントを受け付ける選択タスクとして選択する工程と、
    前記ネイティブイベントを前記選択タスクのために処理する工程と
    を備える方法。
  2. 請求項1記載の方法であって、更に、
    前記選択タスク用のイベントリポジトリおよびイベントハンドラを用意する工程と、
    前記ネイティブイベントを前記イベントリポジトリに格納する工程と、
    前記ネイティブイベントの処理を開始するために前記イベントハンドラを呼び出す工程と、
    前記イベントハンドラに基づいて前記ネイティブイベントを処理する工程と
    を備える方法。
  3. 請求項2記載の方法であって、
    前記イベントリポジトリは、先入れ先出しキューを含み、
    前記イベントハンドラは、イベントハンドラスレッドを含み、
    前記選択タスクを選択する工程は、イベントマネージャスレッドによって実行される方法。
  4. 更に、前記ネイティブイベントをJava(登録商標)に対応させる工程を備える請求項1記載の方法。
  5. 前記ネイティブイベントをJava(登録商標)に対応させる工程は、前記仮想マシンによって実行される請求項1記載の方法。
  6. 前記選択タスクは、Java(登録商標)対応ミッドレットを含む請求項1記載の方法。
  7. 前記選択タスクは、Java(登録商標)対応ミッドレットの一部を含む請求項1記載の方法。
  8. 前記選択タスクを選択する工程は、前記選択タスクの選択に際しフォアグラウンドタスクを選択する工程を含む請求項1記載の方法。
  9. 請求項1記載の方法であって、
    前記選択タスクは、Java(登録商標)対応ミッドレットを含み、
    前記選択タスクを選択する工程は、前記選択タスクの選択に際しフォアグラウンドタスクを選択する工程を含む方法。
  10. 前記フォアグラウンドタスクを選択する工程は、前記ユーザに対して表示されているタスクを選択する工程を含む請求項9記載の方法。
  11. 前記プラットフォームは、携帯機器を含む請求項10記載の方法。
  12. 第1および第2のタスクを並行して実行可能でありプラットフォームに関連付けられたネイティブイベントを処理する仮想マシンであって、
    前記第1および第2のタスクを前記仮想マシンによって並行して実行される場合、前記プラットフォームに関連付けられたネイティブイベントを受け付けると共に、前記第1および第2のネイティブイベントの一方を、前記ネイティブイベントを処理する選択タスクとして選択するネイティブイベント・ディスパッチャを備える仮想マシン。
  13. 請求項12記載の仮想マシンであって、更に、前記選択タスクが選択された場合に呼び出された後、前記ネイティブイベントを処理するネイティブイベント・ハンドラを備える仮想マシン。
  14. 請求項12記載の仮想マシンであって、更に、
    前記選択タスク用のネイティブイベント・リポジトリおよびネイティブイベント・ハンドラを備え、
    前記ネイティブイベント・ディスパッチャは、更に、
    前記ネイティブイベントを前記ネイティブイベント・リポジトリに格納し、
    前記ネイティブイベントの処理を開始するために前記ネイティブイベント・ハンドラを呼び出す仮想マシン。
  15. プラットフォーム上で動作し該プラットフォーム上で第1および第2のタスクを並行して実行可能な仮想マシンによってネイティブイベントを処理する方法であって、
    前記仮想マシンが、前記プラットフォームに関連付けられた前記ネイティブイベントを受け付ける工程と、
    前記第1および第2のタスクのどちらがフォアグラウンドタスクであるかを、前記仮想マシンが判断する工程であって、前記フォアグラウンドタスクは、表示されている唯一のタスクである工程と、
    前記ネイティブイベントを前記フォアグラウンドタスクによって処理する工程と
    を備える方法。
  16. 前記プラットフォームは、携帯機器を含む請求項15記載の方法。
  17. 前記第1および第2のタスクは、ミッドレットを含む請求項15記載の方法。
  18. プラットフォーム上で第1および第2のタスクを並行して実行可能な仮想マシンに、ネイティブイベントを処理する機能を実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
    前記プラットフォームに関連付けられたネイティブイベントを受け付ける機能と、
    前記第1および第2のタスクのどちらがフォアグラウンドタスクであるかを判断する機能であって、前記フォアグラウンドタスクは、表示されているタスクである機能と、
    前記フォアグラウンドタスクを前記ネイティブイベントのために処理する機能と
    を実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  19. 請求項18に記載のコンピュータ読み取り可能な記録媒体であって、
    前記仮想マシンは、携帯機器上で動作し、
    前記フォアグラウンドタスクは、Java(登録商標)対応ミッドレットを含むコンピュータ読み取り可能な記録媒体。
JP2008533303A 2004-02-18 2005-02-09 仮想マシンにおける並行タスクのためのイベント処理 Pending JP2009506467A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/782,242 US7904904B2 (en) 2004-02-18 2004-02-18 Processing events for concurrent tasks in a virtual machine
PCT/US2005/004212 WO2008030207A2 (en) 2004-02-18 2005-02-09 Processing events for concurrent tasks in a virtual machine

Publications (1)

Publication Number Publication Date
JP2009506467A true JP2009506467A (ja) 2009-02-12

Family

ID=34838793

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008533303A Pending JP2009506467A (ja) 2004-02-18 2005-02-09 仮想マシンにおける並行タスクのためのイベント処理

Country Status (4)

Country Link
US (1) US7904904B2 (ja)
EP (1) EP1929400A2 (ja)
JP (1) JP2009506467A (ja)
WO (1) WO2008030207A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9959130B2 (en) 2013-09-13 2018-05-01 Ricoh Company, Ltd. Process simulation for information processing system, information processing method, and information processing program product

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7800614B2 (en) * 2004-02-17 2010-09-21 Oracle America, Inc. Efficient communication in a client-server scene graph system
US9606821B2 (en) 2004-12-17 2017-03-28 Intel Corporation Virtual environment manager for creating and managing virtual machine environments
US20070168872A1 (en) * 2006-01-19 2007-07-19 Raytheon Company Multi-monitor, multi-JVM java GUI infrastructure with layout via XML
US7673113B2 (en) * 2006-12-29 2010-03-02 Intel Corporation Method for dynamic load balancing on partitioned systems
JP4591798B2 (ja) * 2008-10-23 2010-12-01 Necカシオモバイルコミュニケーションズ株式会社 端末装置及びプログラム
KR101310218B1 (ko) * 2008-10-28 2013-09-24 삼성전자주식회사 화상형성장치의 파일 통합 설치 방법 및 파일 통합 설치가 가능한 화상형성장치
EP2209334A1 (en) * 2009-01-15 2010-07-21 SwissQual License AG Measurement arrangement for performing quality of service measurements of a telecommunication network

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05289836A (ja) * 1992-04-15 1993-11-05 Matsushita Electric Ind Co Ltd イベント管理方法およびイベント管理装置
JPH06187177A (ja) * 1992-12-18 1994-07-08 Fuji Xerox Co Ltd 仮想計算機
JPH0973385A (ja) * 1995-09-06 1997-03-18 Fujitsu Ltd マルチウィンドウ表示装置
JP2000029724A (ja) * 1998-04-27 2000-01-28 Sun Microsyst Inc マルチスレッドにおいてスレッドへ送信された入力を検出する方法及び装置
JP2001306339A (ja) * 2000-04-26 2001-11-02 Fujitsu Ten Ltd 情報処理装置
JP2003140675A (ja) * 2001-10-30 2003-05-16 Univ Waseda ドラッグ処理装置および語学学習システム、並びにプログラム
JP2004005582A (ja) * 2002-04-17 2004-01-08 Matsushita Electric Ind Co Ltd 通信制御システムと画像転送プログラムを格納した記憶媒体

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173332B1 (en) * 1996-03-06 2001-01-09 Paul L. Hickman Method and apparatus for computing over a wide area network
US6370590B1 (en) * 1998-03-30 2002-04-09 Oracle Corporation Method and apparatus for providing inter-application program communication using a common view
US6199099B1 (en) * 1999-03-05 2001-03-06 Ac Properties B.V. System, method and article of manufacture for a mobile communication network utilizing a distributed communication network
US6711620B1 (en) * 1999-04-14 2004-03-23 Matsushita Electric Industrial Co. Event control device and digital broadcasting system
EP1442372B1 (en) * 2001-11-07 2015-03-04 Sap Se Providing isolation through process attachable virtual machines
US7171663B2 (en) * 2002-12-09 2007-01-30 International Business Machines Corporation External event interrupt for server-side programs

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05289836A (ja) * 1992-04-15 1993-11-05 Matsushita Electric Ind Co Ltd イベント管理方法およびイベント管理装置
JPH06187177A (ja) * 1992-12-18 1994-07-08 Fuji Xerox Co Ltd 仮想計算機
JPH0973385A (ja) * 1995-09-06 1997-03-18 Fujitsu Ltd マルチウィンドウ表示装置
JP2000029724A (ja) * 1998-04-27 2000-01-28 Sun Microsyst Inc マルチスレッドにおいてスレッドへ送信された入力を検出する方法及び装置
JP2001306339A (ja) * 2000-04-26 2001-11-02 Fujitsu Ten Ltd 情報処理装置
JP2003140675A (ja) * 2001-10-30 2003-05-16 Univ Waseda ドラッグ処理装置および語学学習システム、並びにプログラム
JP2004005582A (ja) * 2002-04-17 2004-01-08 Matsushita Electric Ind Co Ltd 通信制御システムと画像転送プログラムを格納した記憶媒体

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9959130B2 (en) 2013-09-13 2018-05-01 Ricoh Company, Ltd. Process simulation for information processing system, information processing method, and information processing program product

Also Published As

Publication number Publication date
WO2008030207A2 (en) 2008-03-13
US7904904B2 (en) 2011-03-08
US20050183083A1 (en) 2005-08-18
EP1929400A2 (en) 2008-06-11
WO2008030207A3 (en) 2008-05-22

Similar Documents

Publication Publication Date Title
US7895594B2 (en) Virtual machine extended capabilities using application contexts in a resource-constrained device
US8490070B2 (en) Unified mobile platform
US20040095387A1 (en) Virtualized and realized user interface controls
US7174361B1 (en) Scripting task-level user-interfaces
JP5496683B2 (ja) カスタマイズ方法及びコンピュータシステム
US7203941B2 (en) Associating a native resource with an application
US9141422B2 (en) Plug-in task scheduler
US9830176B2 (en) Methods, systems, and media for binary compatible graphics support in mobile operating systems
US7596782B2 (en) Software build extensibility
JP2009506467A (ja) 仮想マシンにおける並行タスクのためのイベント処理
US20090260011A1 (en) Command line transactions
JP2000514944A (ja) オブジェクト指向プログラミング言語のためのハードウェア加速器
JP2005518015A (ja) 移動体端末用プラットフォーム・システムのミドルウエア・サービス・レイヤ
US20170192762A1 (en) Declarative programming model with a native programming language
JP2005209173A (ja) 非同期挙動変更をマネージドアプリケーションプロセスに誘導するためのシステムおよび方法
Helal Pervasive java
US7003778B2 (en) Exception handling in java computing environments
KR20010086202A (ko) 응용 프로그램 래퍼 방법 및 시스템
JP2006048645A (ja) ドキュメントにコンテキスト情報を埋め込むための方法およびシステム
US7350193B2 (en) Procedure invocation in an integrated computing environment having both compiled and interpreted code segments
EP1667019A2 (en) Improving operating system performance
US7096467B2 (en) Initialization of Java classes in Java virtual machine environments
US6918109B2 (en) Execution of synchronized Java methods in Java computing environments
Jipping Smartphone Operating System Concepts with Symbian OS
US7197750B2 (en) Java Bytecode instruction for determining hashcode values

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091208

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100305

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100312

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100607

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100713

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101004

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101026

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110222

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110304

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20110325

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110413

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110415