JP4471428B2 - グラフィカル・ユーザ・インタフェースにおける装置サポートを検出する方法および装置 - Google Patents
グラフィカル・ユーザ・インタフェースにおける装置サポートを検出する方法および装置 Download PDFInfo
- Publication number
- JP4471428B2 JP4471428B2 JP34032899A JP34032899A JP4471428B2 JP 4471428 B2 JP4471428 B2 JP 4471428B2 JP 34032899 A JP34032899 A JP 34032899A JP 34032899 A JP34032899 A JP 34032899A JP 4471428 B2 JP4471428 B2 JP 4471428B2
- Authority
- JP
- Japan
- Prior art keywords
- class
- screen element
- definition
- input
- current class
- 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 - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4492—Inheritance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
- Input From Keyboards Or The Like (AREA)
- Position Input By Displaying (AREA)
Description
【発明の属する技術分野】
本発明は、グラフィカル・ユーザ・インタフェースの構成要素に関し、詳細には、グラフィカル・ユーザ・インタフェースの構成要素による装置サポートに関する。
【0002】
本特許文書の開示の一部には、著作権保護を受ける内容が含まれる。著作権所有者は、アメリカ特許庁のファイルまたは記録に記載された本特許文書または本特許開示をそのまま複製することには異議を唱えないが、それ以外の場合にはすべての著作権を留保する。Sun、Sun Microsystems、Sunロゴ、Java、およびJavaベースのすべての商標およびロゴは、米国および他の国のSun Microsystems,Inc.の商標または登録商標である。すべてのSPARC商標は、ライセンスの下で使用され、米国および他の国のSPARC Internationalの商標または登録商標である。SPARC商標を有する製品は、Sun Microsystems,Inc.によって開発されたアーキテクチャに基づく製品である。
【0003】
【従来の技術】
グラフィカル・ユーザ・インタフェース(GUI)は、コンピュータ・システムのビデオ・ディスプレイ(または画面)に情報を表示するために使用される。GUIは通常、ウィンドウ、アイコン、ラベル、フィールドなどの画面要素を含む。画面要素とは、GUI内の表示と、GUI内の画面要素の表示を生成し制御するために使用されるプログラム・コードとの両方を指す。画面要素は通常、ユーザがコンピュータ・システムとの対話に使用する物理装置を制御する1つまたは複数のソフトウェア・ルーチン層で構成されたオペレーティング・システムと対話する。ユーザは、たとえば、キーボードやポインティング・デバイス(たとえば、マウス、タッチ・スクリーンなど)など1つまたは複数の入力装置を使用することができる。ユーザがコンピュータ・システムの入力装置のうちの1つを使用して入力を生成すると、ユーザの入力を受け取り、現在処理しているか、あるいはすでに処理したことを示すためにビデオ・ディスプレイによって表示されるフィードバックをGUIで生成することができる。画面要素の装置機能および予想と、コンピュータ・システムの実際の装置機能との間に互換性がないと問題が生じる。たとえば、画面要素は、コンピュータ・システムでは利用できない入力装置をサポートすることができる。
【0004】
現在利用できる大部分のパーソナル・コンピュータは、GUI内で所与の画面要素にわたって移動するのに使用することのできるマウス入力装置を備える。画面要素によって占有されているGUIの領域内で行われたマウス入力は、画面要素へ転送することができる。画面要素は、マウス入力を処理し、GUIで表示されるフィードバックを生成することができる。たとえば、ユーザは、GUI内の画面要素の領域内で移動し、マウス上のボタンを押して画面要素を選択することができる。画面要素は、マウスがその領域内にあり(たとえば、「マウス入力」イベント)、かつユーザがその領域内でマウス・ボタンを押した(たとえば、「マウス・ダウン」イベント)ことを知る。このプロセスを通常、画面要素の選択と呼ぶ。画面要素が選択されると、選択された画面要素は通常、GUI内でフォーカスとなる。たとえば、選択された画面要素の表示をその前の表示および他の画面要素の表示と異なるものにして、現在選択されている画面要素として識別することができる。入力装置からのイベントは通常、現在選択されている(あるいはフォーカスされている)画面要素へ向けて送られる。
【0005】
上記の例では、コンピュータ・システム上でマウス入力装置を利用できるものと仮定する。さらに、画面要素が、マウスから受け取った入力を処理できるものと仮定する。しかし、所与の入力装置を利用できないか、あるいは画面要素が所与の入力装置をサポートできない可能性がある。その入力を画面要素によって処理することのできる入力装置の種類を判定できると有益である。すなわち、装置入力を画面要素へ向けて送る前に、この画面要素が装置入力を処理できるかどうかがわかると有益である。さらに、画面要素が所与の入力装置をサポートできるときに、この装置がコンピュータ・システムに物理的に接続されていない場合でも、この種の入力装置の外観および雰囲気をGUIに示すことができれば有益である。
【0006】
画面要素が装置入力を処理できるかどうかの検出に関連する問題は、Java仮想マシンの処理環境を検討し、オブジェクト指向プログラミングの概要を示すことによって、よりよく理解することができる。
【0007】
オブジェクト指向プログラミング
オブジェクト指向プログラミングは、ある基本構成単位を組み合わせ、これらの構成単位の間の関係を作成することによって、コンピュータ・プログラムを作成する方法である。オブジェクト指向プログラミング・システムの構成単位を「オブジェクト」と呼ぶ。オブジェクト指向プログラミング言語を使用してソフトウェア・アプリケーションを書くことができ、それによって、このようなオブジェクトを使用してプログラムの機能が実施される。
【0008】
オブジェクトとは、データ構造(1つまたは複数のインスタンス変数)と、このデータを使用するか、あるいはこのデータに影響を与えることのできるオペレーション(メソッド)とをグループ化するプログラミング・ユニットである。したがって、オブジェクトは、データと、このデータに対して実行できる1つまたは複数のオペレーションすなわち手続きとからなる。データとオペレーションを結合して単一の構成単位を形成することを「カプセル化」と呼ぶ。
【0009】
オブジェクトには、「メッセージ」を受け取ったときにオブジェクトのメソッドのうちの1つを実行するよう命令することができる。メッセージとは、あるメソッドを実行するためにオブジェクトに送られるコマンドまたは命令である。メッセージは、メソッド選択(たとえば、メソッド名)および複数の引数からなる。メッセージは、どんなオペレーションを実行すべきかを受信側オブジェクトに伝える。
【0010】
オブジェクト指向プログラミングの1つの利点は、メソッドを呼び出す方法である。オブジェクトにメッセージを送るとき、このメッセージが、あるメソッドをどのように実行すべきかをオブジェクトに命令する必要はない。必要なのは、オブジェクトがこのメソッドを実行することを要求することだけである。このため、プログラム開発が大幅に簡略化される。
【0011】
オブジェクト指向プログラミング言語は主として、「クラス」体系に基づく言語である。クラス・ベースのオブジェクト指向プログラミング体系は、Lieberman著「Using Prototypical Objects toImplement Shared Behavior in Object−Oriented Systems」OOPSLA86Proceedings、1986年9月、214ページないし223ページに概略的に記載されている。
【0012】
オブジェクト・クラスは、通常はフィールド(たとえば、変数)とメソッドの両方を含むオブジェクトの定義を与える。オブジェクト・クラスは、特定の「オブジェクト・インスタンス」を作成するために使用される(語「オブジェクト」自体がしばしば、相互交換可能に特定のクラスまたは特定のインスタンスを指すために使用される)。オブジェクト・クラスのインスタンスは、そのクラスについて定義された変数およびメソッドを含む。同じオブジェクト・クラスから複数のインスタンスを作成することができる。オブジェクト・クラスから作成された各インスタンスを、同じタイプまたはクラスのインスタンスと言う。
【0013】
一例を挙げると、従業員オブジェクト・クラスは、「名前」インスタンス変数および「給与」インスタンス変数と、「給与設定」メソッドとを含むことができる。従業員オブジェクトのインスタンスは、組織内の各従業員ごとに作成またはインスタンス化することができる。各オブジェクト・インスタンスをタイプ「従業員」のオブジェクト・インスタンスと言う。各従業員オブジェクト・インスタンスは、「名前」インスタンス変数および「給与」インスタンス変数と、「給与設定」メソッドとを含む。各従業員オブジェクト・インスタンス中の「名前」変数および「給与」変数に関連する値は、組織内の従業員の名前および給与を含む。従業員の従業員オブジェクトにメッセージを送り、「給与設定」メソッドを呼び出し、従業員の給与(すなわち、従業員の従業員オブジェクト内の「給与」変数に関連する値)を変更することができる。
【0014】
オブジェクト・クラス定義が1つまたは複数のサブクラスを有するようにクラスの階層を定義することができる。サブクラスはその親(および親の親など)の定義を継承する。階層内の各サブクラスを、その親クラスによって指定されたふるまいに追加するか、あるいは各サブクラスによってこのふるまいを修正することができる。親クラスをそのサブクラスに対するスーパークラスと呼ぶ。いくつかのオブジェクト指向プログラミング言語は多重継承をサポートし、その場合、サブクラスは複数の親クラスからクラス定義を継承することができる。他のプログラミング言語は、単一の継承のみをサポートし、その場合、サブクラスは1つの親クラスのみのクラス定義の継承に制限される。Javaプログラミング言語は、1組のコンスタントおよびアブストラクト・メソッド宣言を備える「インタフェース」として知られる機構も提供する。オブジェクト・クラスは、インタフェースで定義された抽象メソッドを実装することができる。インタフェースは単一継承と多重継承の両方を使用することができる。すなわち、インタフェースは複数の親インタフェースからインタフェース定義を継承することができる。
【0015】
Javaプログラミング言語およびプログラム実行
Javaアプリケーションは通常、1つまたは複数のオブジェクト・クラスおよびインタフェースを含む。プログラムがマシン依存実行可能コードにコンパイルされる多くのプログラミング言語とは異なり、Javaプログラミング言語で書かれたクラスは、マシン独立バイトコード・クラス・ファイルにコンパイルされる。各クラスは、クラス・ファイル・フォーマットと呼ばれるプラットフォーム独立フォーマットでコードおよびデータを含む。バイトコードは、命令を識別するコード(命令コード)と、命令を実行する際に使用されるゼロ個以上のオペランドとを含む。実行ビークルとして働くコンピュータ・システムは、仮想マシンと呼ばれるプログラムを含み、このプログラムは、Javaプログラミング言語クラス・ファイル内のコード(すなわち、バイトコード)を実行する責任を負う。
【0016】
アプリケーションは、独立Javaアプリケーションとして設計するか、あるいはHTML(Hypertext Markup Language)文書中のアプレット・タグによって識別され、ブラウザ・アプリケーションによってロードされる「アプレット」として設計することができる。アプリケーションまたはアプレットに関連するクラス・ファイルは、ローカル・コンピューティング・システムに記憶するか、あるいはネットワークを介してアクセスできるサーバ上に記憶することができる。各Javaプログラミング言語クラス・ファイルは、必要に応じて「クラス・ローダ」によってJava仮想マシンにロードされる。
【0017】
Javaアプレットのクラスは、Javaアプレットを実行している間に初めて参照されたときに、必要に応じてネットワークからロードされる(サーバ上に記憶される)か、あるいはローカル・ファイル・システムからロードされる。仮想マシンは、各クラス・ファイルを見つけてロードし、クラス・ファイル・フォーマットを解析し、クラスの様々な構成要素用のメモリを割り付け、このクラスを、すでにロードされている他のクラスとリンクする。このプロセスは、クラスのコードを仮想マシンによって容易に実行できるようにする。
【0018】
Javaアプリケーションおよびアプレットはしばしば、クラス・ライブラリを使用する。クラス・ライブラリ内のクラスは、「ネイティブ・メソッド」と呼ばれるものを含むことができる。ネイティブ・メソッドとは、ネイティブ・コードで構成されたメソッドである。Javaプログラミング言語を使用して書かれたプログラミング文から生成されたクラス・ファイルに含まれるバイトコードは、マシン独立コードの一例である。ネイティブ・コードとは通常、プラットフォーム依存コードを指す。しかし、ネイティブ・コードは他のプログラム・コードを指すことができる。たとえば、ネイティブ・コードは、二次プログラミング言語(すなわち、アプリケーションを書くために使用される一次プログラミング言語以外の言語)を使用して書かれたコードでもよい。
【0019】
アプリケーションおよびアプレットは場合によっては、ネイティブ・メソッドを宣言するクラスを含む。ネイティブ・メソッド宣言は、キーワード「ネイティブ」、メソッドの名前、メソッドのリターン・タイプ、およびメソッドに渡されるパラメータを指定する。Javaプログラミング言語で書かれた「標準メソッド」(すなわち、非ネイティブ・メソッド)とは異なり、それぞれのクラス内にネイティブ・メソッドの本体はない。その代わり、ネイティブ・メソッドのルーチンは、リンク済みライブラリをサポートする所与のプラットフォームに特有のリンキング機能を使用して実行時に仮想マシン内の所与のクラスに動的にリンクされるコンパイル済みネイティブ・コード(たとえば、CまたはC++プログラミング言語で書かれ、バイナリー形式にコンパイルされたコード)によって実行される。
【0020】
たとえば、SolarisTM環境やUNIX環境では、バイナリ形式のネイティブ・コードを含むリンク済みライブラリを、「.so」ファイルとして書かれた「共用オブジェクト」ライブラリとして実装することができる。Windows環境では、リンク済みライブラリは、「.dll」ファイルとして書かれた動的リンク(または動的ロード可能)ライブラリの形態をとることができる。他の場合には所与のプラットフォームの専用のハードウェア(たとえば、ディスプレイ・ハードウェア)またはソフトウェア(たとえば、データベース・ドライバ)とのインタフェースをとることなど、Javaプログラミング言語ではサポートされない機能を実行するためにネイティブ・コードを使用することができる。レンダリングなど計算を多用する機能を高速化するためにネイティブ・コードを使用することもできる。
【0021】
ネイティブ・メソッドを含むクラスは、それぞれのリンク済みライブラリをロードするための以下の呼出しも含む。
System.loadLibrary(“Sample")
この場合、「Sample」はリンク済みライブラリの名前であり、通常、ホスト・オペレーティング・システム(たとえば、UNIX、Windowsなど)に応じて、「libSample.so」または「Sample.dll」と呼ばれるファイルに記憶される。リンク済みライブラリは通常、関連するクラスが仮想マシン内でインスタンス化されるときにロードされる。
【0022】
ネイティブ・コードのリンク済みライブラリは、リンク済みライブラリがクラス内のネイティブ・メソッドのメソッド・シグネチャーを認識することができるように、関連するクラスのスタブ情報およびヘッダ情報でコンパイルされる。次いで、ネイティブ・メソッドの処理系が、リンク済みライブラリ内のネイティブ・コード関数(C関数など)として生成される。実行時に、ネイティブ・メソッドが呼び出されると、(たとえば、ネイティブ・メソッド・フレームをネイティブ・メソッド・スタック上にプッシュすることによって)呼び出されたメソッドに対応するリンク済みライブラリ内の関数に制御が渡される。リンク済みライブラリ内のネイティブ・コードは、この関数を実行し、制御をJavaアプリケーションまたはアプレットに戻す。
【0023】
動的リンク済みライブラリとは異なり、静的リンク済みライブラリのコードはコンパイル中にリンクされる。Solaris環境では、静的リンク済みライブラリは通常、「.a」拡張子(たとえば、「sample.a」)を有するファイルに記憶される。たとえば、記憶域(たとえば、セットトップ・ボックスやパーソナル・データ・アシスタント)の量が限られている場合、動的リンク済みライブラリの代わりに静的リンク済みライブラリを使用することができる。
【0024】
図1は、処理システム用のコンパイル環境および実行時環境を示す。コンパイル環境で、ソフトウェア開発者は、Javaプログラミング言語を使用して書かれたソース・ファイル100を作成する。このファイルは、データ構造、メソッド処理系、および他のクラスの参照を含む、プログラマ読取り可能クラス定義を含む。ソース・ファイル100はJavaコンパイラ101に供給され、Javaコンパイラ101はソース・ファイル100をコンパイルし、Java仮想マシンによって実行できるバイトコードを含むコンパイル済み「.class」(またはクラス)ファイル102を生成する。クラス・ファイル102は、サーバ上に(たとえば、一次記憶域または永久記憶域内に)記憶され、ネットワークを介してダウンロードすることができる。別法として、クラス・ファイル102をローカルにクライアント・プラットフォーム上のディレクトリに記憶することができる。
【0025】
実行時環境はJava仮想マシン(JVM)105を含む。Java仮想マシン105は、バイトコード・クラス・ファイルを実行し、実行中の必要に応じてオペレーティング・システム109へのネイティブ・オペレーティング・システム(「O/S」)呼出しを実行することができる。Java仮想マシン105は、バイトコード・クラスのマシン独立性と基本コンピュータ・ハードウェア110のマシン依存命令セットとの間の抽象レベルを生成すると共に、オペレーティング・システム109のプラットフォーム依存呼出しを行う。
【0026】
クラス・ローダおよびバイトコード・ベリファイア(「クラス・ローダ」)103は、必要に応じて、バイトコード・クラス・ファイル102をJava仮想マシンにロードし、Javaプログラミング言語を使用して書かれたクラス・ライブラリ104をサポートする責任を負う。クラス・ローダ103はまた、セキュリティ規則が適切に実行されるように各クラス・ファイルのバイトコードを検証する。実行時システム108では、インタプリタ106がバイトコードを直接実行するか、あるいはバイトコードをハードウェア110内のプロセッサによって実行できるように「ジャストインタイム」(JIT)コンパイラ107がバイトコードをマシン・コードに変換する。たとえば、リンク済みライブラリ111の形式のネイティブ・コードは、関連するネイティブ・メソッドを含む(たとえば、クラス・ライブラリ104の)クラスが仮想マシン内でインスタンス化されるときにロードされる。
【0027】
インタプリタ106は、バイトコード命令を読み取り、解釈し、実行し、その後で次の命令に進む。JITコンパイラ107は、複数のバイトコード命令を、次いで実行されるマシン・コードに変換することができる。バイトコードを実行する前にコンパイルすることによって、実行がより高速になる。たとえば、プログラムを実行する際に同じバイトコード命令を複数回実行する場合、このバイトコード命令を実行するたびに、インタプリタ106を使用してこの命令を解釈しなければならない。JITコンパイラ107を使用してプログラムをコンパイルする場合、バイトコード命令がプログラム内で実行される回数にかかわらず、バイトコード命令を1度変換することができる。さらに、コンパイルされたもの(すなわち、JITコンパイラ107の出力)を保持する場合、プログラム実行中に各命令を変換する必要はない。
【0028】
仮想マシン105の実行時システム108は一般的なスタック・アーキテクチャをサポートする。基本ハードウェア110によってこの一般的なスタック・アーキテクチャをサポートする方式は、特定の仮想マシン処理系によって決定され、バイトコードを解釈またはJITコンパイルする方法に反映される。
【0029】
図2は、実行時システム108内のスタック・アーキテクチャをサポートする実行時データ領域を示す。図2で、実行時データ領域200は、1つまたは複数のスレッド・ベースのデータ領域207を含む。各スレッド・ベースのデータ領域207は、プログラム・カウンタ・レジスタ(PC REG)208、ローカル変数ポインタ・レジスタ(VARS REG)209、フレーム・レジスタ(FRAME REG)210、オペランド・スタック・ポインタ・レジスタ(OPTOP REG)211、スタック212、および任意選択でネイティブ・メソッド・スタック216を備える。スタック212は、オペランド・スタック214およびローカル変数215を含む1つまたは複数のフレーム213を備える。ネイティブ・メソッド・スタック216は、1つまたは複数のネイティブ・メソッド・フレーム217を備える。
【0030】
実行時データ領域200はさらに、共用ヒープ201を備える。ヒープ201は実行時データ領域であり、この領域から、すべてのクラス・インスタンスおよびアレイ用のメモリが割り付けられる。共用ヒープ201はメソッド領域202を備え、メソッド領域202はすべてのスレッドの間で共用される。メソッド領域202は、ロードされた各クラス・ファイルから抽出された情報を記憶する1つまたは複数のクラス・ベース・データ領域203を備える。たとえば、クラス・ベースのデータ領域203は、コンスタント・プール204、フィールド/メソッド・データ205、メソッドおよびコンストラクタ用コード206などのコード構造を備えることができる。メソッド/コンストラクタ・コード206はメソッド・テーブル206と呼ぶこともある。
【0031】
仮想マシンは、多数の実行スレッドを一度にサポートすることができる。各スレッドはそれ自体のスレッド・ベース・データ領域207を有する。任意の時点で、各スレッドは、単一のメソッド、すなわちそのメソッドの「現在のメソッド」のコードを実行している。「現在のメソッド」がネイティブ・メソッドではない場合、プログラム・カウンタ・レジスタ208は、現在実行されている仮想マシン命令のアドレスを含む。「現在のメソッド」がネイティブ・メソッドである場合、プログラム・カウンタ・レジスタ208の値は不定である。フレーム・レジスタ210は、メソッド領域202内の現在のメソッドの位置を指し示す。
【0032】
【課題を解決するための手段】
本発明の実施態様は、グラフィカル・ユーザ・インタフェース(GUI)の画面要素によって所与の入力装置に対するサポートを検出する技法を備える。本発明の一実施形態では、画面要素のプログラム・コードの実行時バージョンが調べられ、装置のイベントを処理する能力が検出される。本発明の他の実施態様では、画面要素が所与の入力装置のイベントの処理を他のプログラム・コードにデリゲートしたかどうかが実行時に判定される。本発明の他の実施形態では、画面要素のプログラム・コードの実行時バージョンが調べられ、画面要素が所与の入力装置をサポートするか否かを示すプログラム・コードの宣言が検出される。本発明の他の実施態様では、上記で識別した実施態様のうちの1つまたは複数を組み合わせることができる。
【0033】
【発明の実施の形態】
グラフィカル・ユーザ・インタフェースにおける装置サポートを検出する方法および装置について説明する。以下の説明では、本発明をより完全に説明するために多数の特定の詳細について述べる。しかし、当業者には、これらの特定の詳細なしに本発明を実施できることが明らかであろう。他の例では、本発明を不明確にしないように周知の特徴については詳しく説明していない。
【0034】
本発明の実施形態は、グラフィカル・ユーザ・インタフェース(GUI)の画面要素によって所与の入力装置に対するサポートを検出する技法を備える。本発明の一実施形態では、画面要素のプログラム・コードの実行時バージョンが調べられ、装置のイベントを処理する能力が検出される。本発明の他の実施形態では、画面要素が所与の入力装置のイベントの処理を他のプログラム・コードにデリゲートしたかどうかが実行時に判定される。本発明の他の実施形態では、画面要素のプログラム・コードの実行時バージョンが調べられ、画面要素が所与の入力装置をサポートするか否かを示すプログラム・コードの宣言が検出される。本発明の他の実施形態では、上記で識別した実施形態のうちの1つまたは複数を組み合わせることができる。
【0035】
入力装置に対するサポートの存在を判定することによって、GUIディスプレイに画面要素が現れる。さらに、入力装置に対するサポートを識別することによって、どの画面要素が入力装置のイベントを受け取るかどうかを判定することが困難な場合に、画面要素の識別を容易にすることができる。たとえば、複数の画面要素によって占有されるGUIの領域内にポインティング・デバイス(たとえば、マウス)が位置決めされている場合、このポインティング・デバイスのイベントを処理する能力を有する画面要素にこのイベントを送ることができる。
【0036】
1つまたは複数の入力装置を利用することができない場合にも本発明の実施形態を使用することもできる。たとえば、テレビジョン、またはGUIを含む他の情報器械(情報器械の他の例には、電子アドレス・ブックおよび/またはパーソナル・オーガナイザ、スマート・テレフォン、電子メール装置が含まれる)用のセットトップ・ボックスは、入力用のキーボード装置を含むだけでよい。ユーザは、キーボード上の方向キー(たとえば、矢印キー)を使用してマウスをまねることができる。本発明の1つまたは複数の実施形態を使用する場合、画面要素がマウス入力をサポートするかどうかが判定される。そうである場合、マウス・イベントを画面要素へ送ることができる。また、通常はマウスに関連するアイコン(たとえば、矢印)を表示し、方向キーに関連する移動に対応するようにGUI内で移動することができる。したがって、マウス入力装置のないシステムに対応するように画面要素を修正する必要はない。
【0037】
図7は、本発明の1つまたは複数の実施形態による画面要素を含むGUI700を示す。本発明の実施形態は、画面要素702がマウス装置をサポートしないという実行時判定を下すために使用することができる。しかし、本発明の1つまたは複数の実施形態を使用して、画面要素706がマウス装置をサポートすることを判定することができる。画面要素706は、他の画面要素(たとえば、画面要素704)を含むことができるという点でコンテナーである。
【0038】
画面要素706の外観および雰囲気で、画面要素706がマウス入力をサポートすることを識別することができる。この例では、GUI700内にマウス・アイコン708が表示されている。マウス・アイコン708は、受け取った位置入力(たとえば、位置キーやマウス移動)を反映するように画面要素706内で移動することができる。画面要素706の外側の位置入力を受け取った場合は、アイコン708をGUI700の表示から削除することができる。GUI700内の画面要素706にフォーカス指示が与えられた場合、画面要素700の外側の位置入力を受け取ったときと同様に、このフォーカス指示をGUI700から削除することができる。
【0039】
前の例は、システムが所与の入力装置を含まないものと仮定している。しかし、ユーザが1つの入力装置を使用して他の利用可能な装置をシミュレートまたはエミュレートする必要があることは明らかであろう。たとえば、ユーザは、ユーザのシステムがマウスを含む場合でも、キーボードの方向キーを使用してマウス入力をシミュレートすることができる。
【0040】
本明細書では、本発明の実施形態をマウス装置に関して説明するが、本発明の実施形態を他の装置に適用できることは明らかであろう。さらに、本発明の実施形態はJavaプログラミング言語に関して記載されている。本発明の実施形態と共に他のプログラミング言語を使用することもできることは明らかであろう。
【0041】
メソッド検査
本発明の1つまたは複数の実施形態では、画面要素は、Javaプログラミング言語を使用して書かれたオブジェクト指向オブジェクトである。(バイトコードの形式の)画面要素の実行時バージョンを調べ、所与の装置タイプを処理するメソッドが存在するかどうかを判定することができる。
【0042】
Javaプログラミング言語などのオブジェクト指向プログラミング言語は、実行時バージョンが画面要素のクラス定義のバイトコード・バージョンである。バイトコード・クラス定義は、この定義が少なくとも1つの「装置処理」メソッドを含むかどうかを判定するために調べられる。
【0043】
オブジェクト・クラスは、他のクラス(たとえば、スーパークラス)からメソッドを継承することができる。画面要素のクラス定義が装置メソッドを含まない場合、本発明の実施形態は、画面要素のスーパークラス・バイトコード・オブジェクト・クラス定義を調べ、スーパークラス定義が少なくとも1つの「装置処理」メソッドを含むかどうかを判定する。
【0044】
いくつかの例では、画面要素は、入力装置メソッド抽象化を含むオリジネーティング(またはアルティメット)スーパークラスから継承する。この場合、メソッド検査ではオリジネーティングスーパークラスは調べられない。たとえば、AWTボタンなどの抽象ウィンドウ・ツールキット(AWT)内の画面要素は、オリジネーティングスーパークラス(java.awt.Component)から始まるクラスの階層から継承する。java.awt.Componentオリジネーティングクラスはマウス・イベント・ハンドラを含む。AWTボタン画面要素のスーパークラスを調べるプロセスは、オリジネーティングスーパークラスに到達する前に終了する。
【0045】
画面要素(たとえば、Sun Microsystems,Inc.から市販されているJava Development Kit バージョン1.0のAWTを使用して開発されたボタン・クラス)がマウス入力をサポートするかどうかを検出するために、画面要素のバイトコード・クラス定義に対してメソッド検査が実行され、少なくとも1つの「マウス処理」メソッドが検出される。以下に、本発明の1つまたは複数の実施形態で検出される「マウス処理」メソッドの例を示す。
− mouseEnter()
− mouseExit()
− mouseDown()
− mouseUp()
− mouseDrag()
− mouseMove()
【0046】
画面要素のバイトコード・クラス定義でこれらのマウス処理メソッドのうちの少なくとも1つが検出された場合、その画面要素は、マウス入力をサポートできる画面要素としてマーク付けされる。画面要素がマウス入力をサポートできることを示す表示を使用して、GUI内のこの画面要素の外観および雰囲気を修正することもできる。
【0047】
図3は本発明の実施形態によるメソッド検査プロセス・フローの一例を示す。このプロセス・フローは、クラス定義にメソッド(たとえば、上記で識別したマウス・イベント・メソッドのうちの1つなど、装置の入力を処理するメソッド)があるかどうかを調べる。装置メソッドがクラス定義内に存在する場合、この画面要素はこの装置をサポートすると仮定される。本発明の一実施形態では、1つの装置メソッドが見つかるまで、プロセス・フローが各装置メソッドごとに実行される。
【0048】
ステップ302で、画面要素のクラス定義が現在のクラス定義になる。ステップ304で、現在のクラス定義が調べられ、この定義内に所与のメソッドが存在するかどうかが判定される。存在する場合、処理はステップ312に進み、画面要素が所与の装置に関する入力をサポートする画面要素としてマーク付けされる。処理はステップ316で終了する。
【0049】
ステップ304でメソッドが見つからなかった場合、処理はステップ308に進み、現在のクラスのスーパークラスが得られる。このスーパークラスは現在のクラスになる。ステップ310で、現在のクラスがオリジネーティングスーパークラス(たとえば、java.awt.Component)であるかどうかが判定される。そうである場合、処理はステップ314に進み、画面要素が装置入力をサポートしない画面要素としてマーク付けされる。処理はステップ316で終了する。ステップ310で、現在のクラスがオリジネーティングスーパークラスではないと判定された場合、処理はステップ304に戻り、現在のクラスに装置メソッドがあるかどうかを調べる。
【0050】
本発明の一実施形態では、メモリにロードされたJavaバイトコード・クラス定義に対して、実行時に検出プロセス(たとえば、図3のプロセス・フロー)が実行される。クラス定義の内容を検査するメソッドを含むリフレクション・アプリケーション・プログラミング・インタフェース(API)を使用して、バイトコード・クラス・ファイルに所与のメソッドがあるかどうかを調べられる。たとえば、リフレクションAPIのgetDeclareMethodメソッドを使用して、クラス定義に、指定されたメソッドがあるかどうかを検査し、指定されたメソッドを反映するメソッド・オブジェクトを返すか、あるいは指定されたメソッドが見つからない場合には例外(たとえば、NoSuchMethod例外)を返す。
【0051】
本発明の一実施形態では、画面要素のオブジェクト・インスタンスを構築する際に(すなわち、コンストラクタ・メソッドで)検出プロセスが実行される。Java仮想マシンによって形成されるようなプラットフォーム独立仮想マシン環境では、マルチレイヤ・アーキテクチャを使用してGUIが生成される。マルチレイヤ・アーキテクチャでは、プラットフォーム独立画面要素オブジェクト・インスタンスは1つまたは複数のプラットフォーム依存画面要素オブジェクト・インスタンスと共に構築される。ピア・オブジェクト・インスタンスは、プラットフォーム独立インスタンスとプラットフォーム依存オブジェクト・インスタンスとの間のインタフェースを形成する。プラットフォーム独立オブジェクト、ピア・オブジェクト、またはプラットフォーム依存オブジェクトのコンストラクタ・メソッドで検出プロセスを実行することができる。
【0052】
図4は、本発明の実施形態で使用されるマルチレイヤ・ウィンドウ・システムの一例を示す。
【0053】
レイヤ402は、プラットフォーム独立レイヤを備える。レイヤ402は、開発者が、複数のプラットフォーム(たとえば、Windows95、Windows NT、OS/2、Solaris)上で実行できるGUIを設計し実装できるようにする。このレイヤの一例は、Javaプログラミング言語を使用して書かれたオブジェクト・クラスの集合を含むAWTである。AWTは、GUIを構成する画面要素の特性およびふるまいを定義するオブジェクト・クラスを備える。たとえば、AWTボタン・オブジェクト・クラスは、GUIのボタン画面要素の特性およびふるまいを含む。AWTボタン・オブジェクト・クラスは、ボタン画面要素のプラットフォーム独立定義を与える。
【0054】
レイヤ402のプラットフォーム独立画面要素はピア画面要素とのインタフェースをとる。ピア要素はピア・レイヤ404を備える。ピア・レイヤ404は、プラットフォーム特有画面要素とのインタフェースを形成するプラットフォーム特有抽象化を行う。たとえば、AWTボタン・インスタンスは、Windows95ボタン・インスタンスとのインタフェースをとる対応するボタン・ピアを有する。
【0055】
ピア・レイヤ404は、ネイティブ・インタフェース・レイヤ406を介してネイティブ・レイヤ408とのインタフェースをとる。ネイティブ・インタフェース・レイヤ406は、Javaネイティブ・インタフェース(JNI)、すなわち、Java仮想マシン(VM)内で実行されるJavaコードが、他のプログラミング言語(たとえば、C、C++、アセンブリ)で書かれた、アプリケーションやライブラリなどのプログラム・コードと相互オペレーションすることを可能にするネイティブ・プログラミング・インタフェースでよい。ネイティブ・レイヤ408は、プラットフォーム特有のウィンドウ・システムおよび/またはオペレーティング・システム(たとえば、Windows95やMotif)で構成される。Windowsプラットフォーム上では、Windowsボタン要素がネイティブ・レイヤ画面要素の例である。
【0056】
一例を挙げれば、プラットフォーム独立レイヤ402内のAWTボタンは、ピア・レイヤ404のボタン・ピアとのインタフェースをとる。Windowsプラットフォーム上で、ボタン・ピアは、ネイティブ・インタフェース・レイヤ406を介してネイティブ・レイヤ408のWindowsボタンとのインタフェースをとる。AWTボタン・インスタンスを構築すると、ボタン・ピア・インスタンスおよびWindowsボタン・インスタンスも構築される。これらのオブジェクト・クラスのそれぞれのコンストラクタ・メソッドが呼び出され、ボタン・インスタンスを作成する。たとえば、これらのコンストラクタ・メソッドのうちの1つまたは複数で検出プロセス(たとえば、図3の検出プロセス)を実行することができる。
【0057】
デリゲーション
いくつかのプログラミング言語(たとえば、Javaプログラミング言語を使用して書かれたJava Development KitまたはJDKバージョン1.1)では、デリゲーション・モデルによって、あるオブジェクトは他のオブジェクトに処理(たとえば、装置イベント処理)をデリゲートすることができる。JDKバージョン1.1「デリゲーション・モデル」で、あるオブジェクト(「ソース」と呼ばれる)は、他のオブジェクト(「リスナ」と呼ばれる)をソース・オブジェクトの入力を処理するオブジェクトとして指定することができる。
【0058】
ソース・オブジェクトは、「リスナ」にソース・オブジェクトを登録するメソッドを含む。他の場合にはソース・オブジェクトに向けて送られる処理(たとえば、イベント処理)が、ソース・オブジェクトが登録されたリスナ・オブジェクトに向けて送られる。「リスナ」オブジェクトは、たとえば入力を処理するためにソース・オブジェクトによって活動化することができる。ソース・オブジェクトはそれ自体および/または他のオブジェクトをリスナとして登録することができる。したがって、ソース・オブジェクトは、それが「リスナ」として登録されている場合にはそれ自体を活動化することができる。
【0059】
本発明の一実施形態では、画面要素が、ある装置をサポートするリスナを有するとき、この画面要素は、この装置をサポートする画面要素としてマーク付けされる。
【0060】
たとえば、マウス装置をサポートするリスナを「mouseListener」または「mouseMotionListener」と呼ぶ。画面要素はそれ自体または他のオブジェクトを「mouseListener」または「mouseMotionListener」として登録することができる。
【0061】
画面要素は、少なくとも1つの「mouseListener」または「mouseMotionListener」がその画面要素に登録されている場合に、マウス入力をサポートする画面要素としてマーク付けされる。逆に、画面要素は、その画面要素に「mouseListener」も「mouseMotionListener」も登録されていない場合に、マウス入力をサポートしない画面要素としてマーク付けされる。
【0062】
登録済みの「リスナ」はそれ自体を登録解除することができる。たとえば、それ自体を「mouseListener」および/または「mouseMotionListener」として登録している「リスナ」インスタンスは、「リスナ」インスタンスとして登録解除されることを要求することができる。画面要素は、最後の「mouseListener」または「mouseMotionListener」が登録解除されると、マウス入力をサポートしない画面要素としてマーク付けされる。
【0063】
Javaでは、画面要素に関してmouseListenerが登録されると、java.awt.Componentに専用フラグ(または変数)mouselistenerがセットされる。画面要素に関してmouseMotionListenerが登録されると、java.awt.Componentは専用フラグmouseMotionListenerをセットする。これらの変数は専用変数であるので、プラットフォーム独立レイヤ402からアクセスすることはできない。これらの変数をネイティブ・レイヤ408で実行時の任意の時間に調べ、画面要素がマウス装置をサポートするかどうかを判定することができる。本発明の一実施形態では、ピア・レイヤ404のピア要素は、ネイティブ・レイヤ408のネイティブ要素にmouseListener変数および/またはmouseMotionListener変数を検査するよう要求することができる。画面要素は、これらの要素の一方または両方がセットされている場合、マウス入力をサポートする画面要素としてマーク付けされる。
【0064】
インタフェース検査
画面要素は、外部定義メソッドの1つまたは複数の集合を含むことができる。通常、外部定義メソッドの集合には名前が与えられる。外部定義メソッドの集合を含む画面要素は、集合の名前を使用してこれらのメソッドを宣言する。たとえば、Javaでは、インタフェースがコンスタントおよびアブストラクト・メソッドの集合の例である。画面要素は、インタフェースの名前を処理系句に指定することによってインタフェースを宣言する。インタフェースのメソッドは、画面要素のメソッド定義によって無効化することができる。
【0065】
以下の表は、Sun Microsystems,Inc.から市販されているPersonal Javaプログラミング言語のインタフェースの例を示す。
【表1】
【0066】
これらのインタフェース例で、NoInputPreferredインタフェースおよびKeyboardInputPreferredインタフェースはマウス入力を許容しない。したがって、これらのインタフェースを実装する画面要素は、マウス入力をサポートしない画面要素とみることができる。したがって、本発明の実施形態によれば、画面要素の実行時バージョンでこれらのインタフェースの一方または両方が検出された場合、この画面要素は、マウス入力をサポートしない画面要素としてマーク付けされる。
【0067】
逆に、画面要素がActionInputPreferredインタフェースまたはPositionInputPreferred(または両方)インタフェースを実装する場合、この画面要素はマウス入力をサポートすると仮定される。したがって、本発明の実施形態では、これらのインタフェースの一方または両方を実装する画面要素は、マウス入力をサポートする画面要素としてマーク付けされる。
【0068】
Javaプログラミング言語では、instanceof演算子を使用してオブジェクト・インスタンスのクラスを判定することができる。instanceof演算子を使用して、オブジェクト・インスタンスがインタフェースを実装するかどうかを示すこともできる。instanceofオペレーションをピア要素(たとえば、ボタン・ピア)コンストラクタ・メソッド内に配置し、画面要素に関連する所与のインタフェース実装に関して試験することができる。以下のinstanceof擬似コード例は、本発明の実施形態では、オブジェクト・インスタンスがマウス入力をサポートするかどうかを検出するために使用される。
【0069】
ライトウェイト要素
ライトウェイト要素とは、ネイティブ・レイヤ408内の対応する画面要素を必要としない画面要素である。ライトウェイト要素は通常、様々なプラットフォーム上で同じ外観を有する。ライトウェイト要素の例には、グラフィック画像(たとえば、.gifファイル)を表示する要素がある。ネイティブ・レイヤ要素がないので、ネイティブ・レイヤ408は必ずしもライトウェイト要素を認識しない。
【0070】
本発明の一実施形態では、ライトウェイト要素は最初、装置入力をサポートする要素としてマーク付けされる。このデフォルトは無効化することができる。たとえば、ライトウェイト要素はNoInputPreferredインタフェースおよびKeyboardInputPreferredインタフェースの一方または両方を実装することができる。この場合、ライトウェイト要素は、マウス入力をサポートできない要素としてマーク付けされる。上述のように、Javaプログラミング言語のinstanceof演算子を使用して、インタフェースの組み込み(inclusion)を検出することができる。
【0071】
図5は本発明の一実施形態によるインタフェース宣言などの宣言を検出するプロセス・フローの一例を示す図である。ステップ502で、画面要素がライトウェイト要素であるかどうかが判定される。そうである場合、処理はステップ504に進み、ライトウェイト要素に関する肯定的な装置サポート・デフォルト(すなわち、ライトウェイト要素が所与の装置をサポートすることを示すデフォルト)が設定される。
【0072】
ステップ506で、ライトウェイト要素が、この要素が所与の装置をサポートしないことを示すインタフェースを実装するかどうかが判定される。そうである場合、処理は、ステップ508に進み、このライトウェイト要素がこの装置をサポートしない要素としてマーク付けされ、処理はステップ510で終了する。ステップ506で、ライトウェイト要素が非サポート・インタフェースを実装しないと判定された場合、処理はステップ510で終了する。
【0073】
ステップ502で、画面要素がライトウェイト要素ではないと判定された場合、処理はステップ512に進む。ステップ512で、この画面要素が、所与の装置用の装置サポート・インタフェースを実装するかどうかが判定される。そうでない場合、処理はステップ516に進み、この要素が装置をサポートしない要素としてマーク付けされる。ステップ512で、この画面要素が所与の装置用の装置サポート・インタフェースを実装すると判定された場合、処理はステップ514に進み、この要素が装置をサポートする要素としてマーク付けされる。いずれの場合も、処理はステップ510で終了する。
【0074】
コンピュータ実行環境の実施形態(ハードウェア)
本発明の実施形態は、汎用コンピュータまたは専用コンピュータ上で実行されるコンピュータ可読コードの形式のコンピュータ・ソフトウェア、またはこのような汎用コンピュータまたは専用コンピュータ上で実行されるJava実行時環境内で実行することのできるバイトコード・クラス・ファイルの形式のコンピュータ・ソフトウェアとして実装することができる。
【0075】
図6は、本発明の実施形態で使用することのできる汎用コンピュータの例を示す。キーボード610およびマウス611はシステム・バス618に結合される。キーボードおよびマウスは、コンピュータ・システムにユーザ入力を導入し、このユーザ入力をプロセッサ613に伝達するために使用される。マウス611およびキーボード610に加えて、あるいはそれらの代わりに、他の適切な入力装置を使用することができる。システム・バス618に結合された入出力ユニット619は、プリンタ、A/V(オーディオ/ビデオ)入出力などの入出力要素を表わす。
【0076】
コンピュータ600は、ビデオ・メモリ614、メイン・メモリ615、および大容量記憶域612を含み、すべてのこれらの構成要素は、キーボード610、マウス611、およびプロセッサ613と共にシステム・バス618に結合される。大容量記憶域612は、磁気記憶システムや、光学記憶システムや、磁気光学記憶システムや、他の利用可能な大容量記憶技法など、固定媒体と着脱可能媒体の両方を含むことができる。バス618は、たとえば、ビデオ・メモリ614またはメイン・メモリ615にアドレスする64本のアドレス線を含むことができる。システム・バス618は、たとえば、プロセッサ613、メイン・メモリ615、ビデオ・メモリ614、大容量記憶域612などの構成要素の間でデータを転送する64ビット・データ・バスも含む。別法として、別々のデータ線およびアドレス線ではなく複数のデータ/アドレス線を使用することができる。
【0077】
本発明の一実施形態では、プロセッサ613は、Sun Microsystems,INc.から市販されているSPARCマイクロプロセッサ、Motorolaによって製造されている680X0プロセッサ、80X86プロセッサやPentiumプロセッサなどIntelによって製造されているマイクロプロセッサなどのマイクロプロセッサである。しかし、他の適切なマイクロプロセッサまたはマイクロコンピュータを使用することができる。メイン・メモリ615は、ダイナミック・ランダム・アクセス・メモリ(DRAM)で構成される。ビデオ・メモリ614は、デュアル・ポート・ビデオ・ランダム・アクセス・メモリである。ビデオ・メモリ614の1つのポートはビデオ増幅器616に結合される。ビデオ増幅器616を使って、陰極線管(CRT)ラスタ・モニタ617を励振させる。ビデオ増幅器616は、当技術分野でよく知られており、任意の適切な装置によって実装することができる。この回路は、ビデオ・メモリ614に記憶されている画素データを、モニタ617が使用するのに適したラスタ信号に変換する。モニタ617は、グラフィック画像を表示するのに適した種類のモニタである。別法として、フラット・パネル・ディスプレイまたは液晶ディスプレイ(LCD)、あるいは他の適切なデータ・プレゼンテーション装置を駆動するためにビデオ・メモリを使用することができる。
【0078】
コンピュータ600は、バス618に結合された通信インタフェース620を含むこともできる。通信インタフェース620は、ネットワーク・リンク621を介してローカル・ネットワーク622と2方向データ通信結合を確立する。たとえば、通信インタフェース620が総合デジタル通信網(ISDN)カードまたはモデムである場合、通信インタフェース620は、ネットワーク・リンク621の一部を備える対応する種類の電話回線とデータ通信接続を確立する。通信インタフェース620がローカル・エリア・ネットワーク(LAN)カードである場合、通信インタフェース620は、ネットワーク・リンク621を介して、互換性のあるLANとデータ通信接続を確立する。通信インタフェース620はケーブル・モデムでも、あるいは無線インタフェースでもよい。そのような実施形態では、通信インタフェース620は、様々な種類の情報を表わすデジタル・データ・ストリームを搬送する電気信号、電磁信号、または光学信号を送受信する。
【0079】
ネットワーク・リンク621は通常、1つまたは複数のネットワークを介して他のデータ装置とデータ通信を行う。たとえば、ネットワーク・リンク621は、ローカル・ネットワーク622を介して、ローカル・サーバ・コンピュータ623、またはインタネット・サービス・プロバイダ(ISP)624によって操作されるデータ機器と接続を確立することができる。ISP624は、現在では一般に「インタネット」625と呼ばれている世界全域のパケット・データ通信網を介してデータ通信サービスを行う。ローカル・ネットワーク622とインタネット625は共に、デジタル・データ・ストリームを搬送する電気信号、電磁信号、または光学信号を使用する。様々なネットワークを通る信号と、デジタル・データをコンピュータ600に搬送しかつコンピュータ600から搬送するネットワーク・リンク621上の信号および通信インタフェース620を通る信号は、情報を搬送する搬送波の例示的な形態である。
【0080】
コンピュータ600は、ネットワーク、ネットワーク・リンク621、および通信インタフェース620を介して、メッセージを送信し、プログラム・コードを含むデータを受信することができる。インタネットの例では、リモート・サーバ・コンピュータ626は、インタネット625、ISP624、ローカル・ネットワーク622、および通信インタフェース620を介してアプリケーション・プログラム用の要求されたコードを伝送することができる。
【0081】
受信されたコードは、受信されたときにプロセッサ613によって実行し、かつ/または後で実行できるように大容量記憶域612またはその他の非揮発性記憶域に記憶することができる。このように、コンピュータ600は、アプリケーション・コードを搬送波の形で得ることができる。
【0082】
アプリケーション・コードは、任意の形態のコンピュータ・プログラム製品に組み込むことができる。コンピュータ・プログラム製品は、コンピュータ可読コードまたはデータを記憶または搬送するように構成されるか、あるいはコンピュータ可読コードまたはデータを記録することのできる媒体を備える。コンピュータ・プログラム製品の例には、CD−ROMディスク、ROMカード、フロッピィ・ディスク、磁気テープ、コンピュータ・ハード・ディスク、ネットワーク上のサーバ、搬送波などがある。
【0083】
前述のコンピュータ・システムは例示のみのためのシステムである。本発明の実施形態は、埋込み装置(たとえば、web電話)、および仮想マシンをサポートする「シン(thin)」クライアント処理環境(たとえば、ネットワーク・コンピュータ(NC)など)を含め、任意の種類のコンピュータ・システムまたはプログラミングまたは処理環境に実装することができる。
【0084】
図6は、本発明の1つまたは複数の実施形態で使用することのできる汎用コンピュータの一例を示す。本発明の実施形態では専用コンピュータを使用することもできる。専用コンピュータまたは専用装置の例には、パーソナル・デジタル・アシスタント、ネットワーク・コンピュータ、機能拡張された携帯電話およびハード配線電話、インタネット機能付きテレビジョン・セットなどが制限なしに含まれる。
【0085】
したがって、グラフィカル・ユーザ・インタフェースにおける装置サポートを検出する方法および装置を1つまたは複数の特定の実施形態に関して説明した。本発明は、特許請求の範囲およびその全範囲の均等物によって定義される。
【図面の簡単な説明】
【図1】コンパイル環境および実行時環境のブロック図である。
【図2】仮想マシンの実施形態の実行時データ領域のブロック図である。
【図3】本発明の実施形態によるメソッド検査プロセス・フローの一例を示す図である。
【図4】本発明の実施形態で使用されるマルチレイヤ・ウィンドウ・システムの一例を示す図である。
【図5】本発明の実施形態によるインタフェース宣言などの宣言を検出するプロセス・フローの一例を示す図である。
【図6】本発明の実施形態に適した実行環境を形成することのできるコンピュータ・システムの一実施形態のブロック図である。
【図7】本発明の1つまたは複数の実施形態による画面要素を含むGUI700を示す図である。
【符号の説明】
100 クラス・ソース・ファイル
101 コンパイラ
102 クラス・バイトコード・ファイル
103 クラス・ローダおよびバイトコード・ベリファイア
104 クラス・ライブラリ
105 仮想マシン
106 インタプリタ
107 ジャストインタイム・コンパイラ
108 実行時システム
109 オペレーティング・システム
110 ハードウェア
111 リンク済みライブラリ
200 実行時データ領域
201 ヒープ
202 メソッド領域
203 クラス・ベース・データ領域
204 コンスタント・プール
205 フィールド/メソッド・データ
206 コンストラクタ/メソッド・コード
207 スレッド・ベース・データ領域
208 プログラム・カウンタ・レジスタ
209 ローカル変数ポインタ・レジスタ
210 フレーム・レジスタ
211 オペランド・スタック・ポインタ・レジスタ
212 スタック
214 オペランド・スタック
215 ローカル変数
216 ネイティブ・メソッド・スタック
217 ネイティブ・メソッド・フレーム
402 プラットフォーム独立レイヤ
404 ピア・レイヤ
406 ネイティブ・インタフェース・レイヤ
408 ネイティブ・レイヤ
610 キーボード
611 マウス
612 大容量記憶域
613 プロセッサ
614 ビデオ・メモリ
615 メイン・メモリ
616 ビデオ増幅器
617 モニタ
619 入出力
620 通信インタフェース
621 ネットワーク・リンク
622 ローカル・ネットワーク
623 ホスト(ローカル・サーバ)
624 インタネット・サービス・プロバイダ
625 インタネット
626 サーバ
Claims (12)
- コンピュータ・システムにおけるグラフィカル・ユーザ・インターフェイスの画面要素の入力デバイス・サポートを検出する方法であって、
(a)画面要素のクラス定義を、現在のクラス定義として設定するステップと、
(b)前記現在のクラス定義を調べて、デバイスの入力を処理するための所与のメソッドが、前記クラス定義に存在するか否かを決定するステップと、
(c)前記所与のメソッドが、前記現在のクラスの前記定義に存在する場合には、前記画面要素を、前記デバイスに対する入力をサポートするとしてマーク付けするステップと、
(d)前記所与のメソッドが、前記現在のクラスの前記定義に存在しない場合には、前記現在のクラスのスーパークラスを、前記現在のクラスとして設定するステップと、
(e)前記現在のクラスが、オリジネーティングスーパークラスであるか否かを決定するステップと、
(f)前記現在のクラスが、前記オリジネーティングスーパークラスである場合には、前記画面要素を、デバイス入力をサポートしないとしてマーク付けするステップと、
(g)前記現在のクラスが、前記オリジネーティングスーパークラスでない場合には、処理はステップ(a)に戻り、(a)からのステップを再度行うステップと、を含む、グラフィカル・ユーザ・インターフェイスの画面要素の入力デバイス・サポートを検出する方法。 - 前記画面要素を、前記デバイスに対する入力をサポートするとしてマーク付けするステップが、前記画面要素の外観を変更するステップを含む請求項1に記載の方法。
- 前記メソッドは、画面要素のオブジェクト・インスタンスが構築されるときに実行される請求項1に記載の方法。
- 前記メソッドが、1つ以上のコンストラクタ・メソッドで実行される請求項1に記載の方法。
- 前記メソッドが、ランタイムに、メモリにロードされているJavaバイトコード・クラス定義に対して実行される請求項1に記載の方法。
- クラス定義の内容を検査するメソッドを含むリフレクション・アプリケーション・プログラミング・インターフェイス(API)が、バイトコード・クラス・ファイルに所与のメソッドがあるかどうかを調べるために用いられる請求項5に記載の方法。
- グラフィカル・ユーザ・インターフェイスの画面要素の入力デバイス・サポートを検出する方法をコンピュータが実行するように定められたプログラム・コードを記憶したコンピュータ読み取り可能な媒体であって、前記方法は、
(a)画面要素のクラス定義を、現在のクラス定義として設定するステップと、
(b)前記現在のクラス定義を調べて、デバイスの入力を処理するための所与のメソッドが、前記クラス定義に存在するか否かを決定するステップと、
(c)前記所与のメソッドが、前記現在のクラスの前記定義に存在する場合には、前記画面要素を、前記デバイスに対する入力をサポートするとしてマーク付けするステップと、
(d)前記所与のメソッドが、前記現在のクラスの前記定義に存在しない場合には、前記現在のクラスのスーパークラスを、前記現在のクラスとして設定するステップと、
(e)前記現在のクラスが、オリジネーティングスーパークラスであるか否かを決定するステップと、
(f)前記現在のクラスが、前記オリジネーティングスーパークラスである場合には、前記画面要素を、デバイス入力をサポートしないとしてマーク付けするステップと、
(g)前記現在のクラスが、前記オリジネーティングスーパークラスでない場合には、処理はステップ(a)に戻り、(a)からのステップを再度行うステップと、を含む、コンピュータ読み取り可能な媒体。 - 前記画面要素を、前記デバイスに対する入力をサポートするとしてマーク付けするステップが、前記画面要素の外観を変更するステップを含む請求項7に記載のコンピュータ読み取り可能な媒体。
- 前記メソッドは、画面要素のオブジェクト・インスタンスが構築されるときに実行される請求項7に記載のコンピュータ読み取り可能な媒体。
- 前記メソッドが、1つ以上のコンストラクタ・メソッドで実行される請求項7に記載のコンピュータ読み取り可能な媒体。
- 前記メソッドが、ランタイムに、メモリにロードされているJavaバイトコード・クラス定義に対して実行される請求項7に記載のコンピュータ読み取り可能な媒体。
- クラス定義の内容を検査するメソッドを含むリフレクション・アプリケーション・プログラミング・インターフェイス(API)が、バイトコード・クラス・ファイルに所与のメソッドがあるかどうかを調べるために用いられる請求項11に記載のコンピュータ読み取り可能な媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/201,644 US6930695B1 (en) | 1998-11-30 | 1998-11-30 | Method and apparatus for detecting device support in a graphical user interface |
US09/201644 | 1998-11-30 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2000231440A JP2000231440A (ja) | 2000-08-22 |
JP2000231440A5 JP2000231440A5 (ja) | 2009-04-23 |
JP4471428B2 true JP4471428B2 (ja) | 2010-06-02 |
Family
ID=22746668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP34032899A Expired - Lifetime JP4471428B2 (ja) | 1998-11-30 | 1999-11-30 | グラフィカル・ユーザ・インタフェースにおける装置サポートを検出する方法および装置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US6930695B1 (ja) |
EP (1) | EP1008930A3 (ja) |
JP (1) | JP4471428B2 (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7207036B2 (en) * | 2000-02-07 | 2007-04-17 | Esmertec Ag | Preprocessing of interfaces to allow fast call through |
US7219331B2 (en) | 2001-03-14 | 2007-05-15 | Sun Microsystems, Inc. | Method and apparatus for lightweight support on set top box |
US7930681B2 (en) * | 2005-12-30 | 2011-04-19 | Sap Ag | Service and application management in information technology systems |
US8527542B2 (en) * | 2005-12-30 | 2013-09-03 | Sap Ag | Generating contextual support requests |
US7979733B2 (en) | 2005-12-30 | 2011-07-12 | Sap Ag | Health check monitoring process |
US20080065679A1 (en) * | 2006-09-12 | 2008-03-13 | Douglas Ray Fish | Method for rules-based drag and drop processing in a network environment |
US8499276B2 (en) * | 2006-12-28 | 2013-07-30 | Ca, Inc. | Multi-platform graphical user interface |
JP2010140233A (ja) * | 2008-12-11 | 2010-06-24 | Nec Computertechno Ltd | エミュレーションシステム及びエミュレーション方法 |
DE102009006882A1 (de) * | 2009-01-30 | 2010-08-05 | Advanced Micro Devices, Inc., Sunnyvale | Anwendung plattformabhängiger Routinen in virtuellen Maschinen durch Einbetten einer nativen Codierung in Klassendateien |
US8997053B2 (en) | 2010-01-14 | 2015-03-31 | Worksoft, Inc. | System and method for automated testing of software applications with dynamic user interfaces spanning multiple technologies |
US10594763B2 (en) * | 2013-03-15 | 2020-03-17 | adRise, Inc. | Platform-independent content generation for thin client applications |
JP6539163B2 (ja) * | 2015-09-07 | 2019-07-03 | キヤノン株式会社 | 情報処理装置およびその制御方法、並びにプログラム |
CN106952517A (zh) * | 2017-05-23 | 2017-07-14 | 郑州云海信息技术有限公司 | 一种基于云平台的微机授课实验系统 |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5590060A (en) * | 1992-03-20 | 1996-12-31 | Metronics, Inc. | Apparatus and method for an object measurement system |
US5600789A (en) * | 1992-11-19 | 1997-02-04 | Segue Software, Inc. | Automated GUI interface testing |
US5430875A (en) * | 1993-03-31 | 1995-07-04 | Kaleida Labs, Inc. | Program notification after event qualification via logical operators |
CA2136367A1 (en) * | 1993-12-20 | 1995-06-21 | John Scott Anderson | Dynamically specifying invocations in compiled objects |
US5600838A (en) * | 1994-01-18 | 1997-02-04 | Sybase, Inc. | Object oriented dispatch and supercall process and arrangement |
AU693553B2 (en) * | 1994-05-23 | 1998-07-02 | Kordtech Pty Ltd | A human/machine interface |
US5594663A (en) * | 1995-01-23 | 1997-01-14 | Hewlett-Packard Company | Remote diagnostic tool |
JP3841366B2 (ja) * | 1995-02-17 | 2006-11-01 | 富士通株式会社 | 監視装置の負荷分散処理システム |
US5929852A (en) * | 1995-05-05 | 1999-07-27 | Apple Computer, Inc. | Encapsulated network entity reference of a network component system |
US6307574B1 (en) * | 1995-05-08 | 2001-10-23 | Apple Computer, Inc. | Graphical user interface with hierarchical structure for customizable menus and control objects |
US5625835A (en) * | 1995-05-10 | 1997-04-29 | International Business Machines Corporation | Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor |
US5754222A (en) * | 1996-03-08 | 1998-05-19 | Eastman Kodak Company | Visual characterization using display model |
US5940494A (en) * | 1995-07-12 | 1999-08-17 | Rafacz; Walter | Data display system and method for displaying real-time data relating to an automatic call distributor |
US5844560A (en) * | 1995-09-29 | 1998-12-01 | Intel Corporation | Graphical user interface control element |
US5822587A (en) * | 1995-10-20 | 1998-10-13 | Design Intelligence, Inc. | Method and system for implementing software objects |
US6067639A (en) * | 1995-11-09 | 2000-05-23 | Microsoft Corporation | Method for integrating automated software testing with software development |
US5832483A (en) * | 1995-12-15 | 1998-11-03 | Novell, Inc. | Distributed control interface for managing the interoperability and concurrency of agents and resources in a real-time environment |
US5838315A (en) * | 1996-02-01 | 1998-11-17 | Apple Computer, Inc. | Support for custom user-interaction elements in a graphical, event-driven computer system |
WO1997029421A1 (fr) * | 1996-02-05 | 1997-08-14 | Athena Telecom Lab, Inc. | Procede et equipement de gestion d'objets |
JP2862075B2 (ja) * | 1996-02-29 | 1999-02-24 | 日本電気株式会社 | ネットワークマップ表示処理システム |
US5805796A (en) * | 1996-03-27 | 1998-09-08 | Dell Usa, Lp | System architecture for implementing modular diagnostics |
US5861864A (en) * | 1996-04-02 | 1999-01-19 | Hewlett-Packard Company | Video interface system and method |
US5786815A (en) * | 1996-05-31 | 1998-07-28 | Sun Microsystems, Inc. | Configurable runtime graphical user interface widget management |
US5745909A (en) * | 1996-07-09 | 1998-04-28 | Webtv Networks, Inc. | Method and apparatus for reducing flicker when displaying HTML images on a television monitor |
US6134707A (en) * | 1996-11-14 | 2000-10-17 | Altera Corporation | Apparatus and method for in-system programming of integrated circuits containing programmable elements |
WO1998033151A1 (fr) * | 1997-01-24 | 1998-07-30 | Sony Corporation | Dispositif, procede et support permettant de generer des donnees graphiques |
US6334157B1 (en) * | 1997-03-11 | 2001-12-25 | Microsoft Corporation | Programmatically providing direct access to user interface elements of an application program |
US6262729B1 (en) * | 1997-04-14 | 2001-07-17 | Apple Computer, Inc. | Method and apparatus for binding user interface objects to application objects |
US6122627A (en) * | 1997-05-09 | 2000-09-19 | International Business Machines Corporation | System, method, and program for object building in queries over object views |
JPH11136394A (ja) * | 1997-08-26 | 1999-05-21 | Casio Comput Co Ltd | データ出力システムおよびデータ出力方法 |
US6865735B1 (en) * | 1997-10-07 | 2005-03-08 | University Of Washington | Process for rewriting executable content on a network server or desktop machine in order to enforce site specific properties |
US6272537B1 (en) * | 1997-11-17 | 2001-08-07 | Fujitsu Limited | Method for building element manager for a computer network element using a visual element manager builder process |
US6137488A (en) * | 1997-12-05 | 2000-10-24 | International Business Machines Corporation | System for creating structured fields on electronic forms |
US6275935B1 (en) * | 1998-04-17 | 2001-08-14 | Thingworld.Com, Llc | Systems and methods for locking interactive objects |
US6173239B1 (en) * | 1998-09-30 | 2001-01-09 | Geo Vector Corporation | Apparatus and methods for presentation of information relating to objects being addressed |
US6362840B1 (en) * | 1998-10-06 | 2002-03-26 | At&T Corp. | Method and system for graphic display of link actions |
US6469694B1 (en) * | 1999-04-13 | 2002-10-22 | Peter J. Mikan | Mouse emulation keyboard system |
-
1998
- 1998-11-30 US US09/201,644 patent/US6930695B1/en not_active Expired - Lifetime
-
1999
- 1999-11-30 JP JP34032899A patent/JP4471428B2/ja not_active Expired - Lifetime
- 1999-11-30 EP EP99123791A patent/EP1008930A3/en not_active Withdrawn
-
2005
- 2005-03-29 US US11/093,915 patent/US7774717B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP1008930A2 (en) | 2000-06-14 |
US7774717B2 (en) | 2010-08-10 |
US20050172243A1 (en) | 2005-08-04 |
EP1008930A3 (en) | 2006-02-15 |
JP2000231440A (ja) | 2000-08-22 |
US6930695B1 (en) | 2005-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7774717B2 (en) | Method and apparatus for detecting device support in a graphical user interface | |
US5875335A (en) | Parameter marshaling techniques for dynamic object-oriented programming languages | |
US6067577A (en) | Dynamic method resolution for native methods in a dynamic object-oriented programming language | |
US6327701B2 (en) | Method and apparatus for finding bugs related to garbage collection in a virtual machine | |
US6026237A (en) | System and method for dynamic modification of class files | |
US6675371B1 (en) | Java and native application window integration | |
US5966702A (en) | Method and apparatus for pre-processing and packaging class files | |
US6557023B1 (en) | Method and apparatus for avoiding array class creation in virtual machines | |
US10684827B2 (en) | Generating dynamic modular proxies | |
US6704926B1 (en) | Bimodal Java just-in-time complier | |
US6704927B1 (en) | Static binding of dynamically-dispatched calls in the presence of dynamic linking and loading | |
US7114152B2 (en) | Method, apparatus, and program to determine the mutability of an object at loading time | |
KR20020085872A (ko) | 객체지향 컴퓨터 프로그램의 번역 및 실행방법 | |
JP2002522844A (ja) | バーチャル・マシン環境でネイティブ・コードを変換し、実行する方法および装置 | |
US7334235B2 (en) | Operating system application programming interfaces and methods of using operating systems | |
US7681207B2 (en) | Methods of factoring operating system functions, methods of converting operating systems, and related apparatus | |
US6604167B1 (en) | Method and apparatus traversing stacks for just-in-time compilers for Java virtual machines | |
US5911069A (en) | Exception handling techniques for native methods bound to SOM classes | |
US6779188B1 (en) | Apparatus and method for improved devirtualization of method calls | |
US20040015874A1 (en) | Method and apparatus for finding resource allocation errors in virtual machine compilers | |
EP0950947B1 (en) | Static binding of dynamically dispatched calls in the presence of dynamic linking and loading | |
US7219331B2 (en) | Method and apparatus for lightweight support on set top box | |
WO2001009715A2 (en) | A single-compiler architecture | |
US11243876B2 (en) | Techniques for accessing off-heap memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061129 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061129 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081111 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090212 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090217 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090311 |
|
A524 | Written submission of copy of amendment under article 19 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20090311 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091215 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100115 |
|
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: 20100216 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100302 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130312 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4471428 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130312 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140312 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |