図1は、本発明に従ったシステム80を示す。システムは、Webコンテンツサーバ84、コンパイラ86、およびリレーサーバ87に接続された、公共のインターネット82を含む。無線通信網88はリレーサーバ87に接続されており、該無線通信網88はハンドヘルドモバイル通信デバイス90に無線で接続している。ハンドヘルドモバイル通信デバイス90は、ハウジング、キーボード92およびサムホイール94などの1つ以上の入力制御、出力デバイス、ディスプレイ96(好ましくはフルグラフィックLCD)を有する。その他の種類の出力デバイスが代わりに利用されてもよい。図1とともに図2を参照すると、処理デバイスであるマイクロプロセッサ98が、キーボード92およびサムホイール94と、ディスプレイ96の間に接続されて概略的に示されている。マイクロプロセッサ98は、ユーザによるキーボード92上のキー、および/またはサムホイール94の操作に反応して、ディスプレイ96の動作、およびモバイル通信デバイス90の全体的な動作を制御する。
ハウジングは縦方向に長くてもよく、また、他の大きさおよび形態であってもよい(二つ折り構造のハウジングを含む)。キーボードは、テキスト入力と電話入力とを切り替えるためのモード選択キーまたはその他のハードウェアもしくはソフトウェアを備えていてもよい。
マイクロプロセッサ98に加えて、モバイル通信デバイス90のその他の部分を概略的に図2に示す。これらには、通信サブシステム(または送受信機)100、短距離通信サブシステム102、キーボード92、サムホイール94、およびディスプレイ96が含まれるほか、1組の補助I/Oデバイス106、シリアルポート108、スピーカー111、マイクロフォン112を含むその他の入力/出力デバイス、フラッシュメモリ116およびランダムアクセスメモリ(RAM)118を含む記憶デバイス、そして種々の他のデバイスサブシステム120が含まれる。モバイル通信デバイス90は、好ましくは、音声およびデータ通信能力を有する双方向のRF通信デバイスである。また、該モバイル通信デバイス90は、インターネットを介して他のコンピュータシステムと通信する能力を有することが好ましい。
マイクロプロセッサ98によって実行されるオペレーティングシステムソフトウェアは、フラッシュメモリ116などの永続的な格納装置に格納されることが好ましいが、読み取り専用メモリ(ROM)もしくは同様の格納装置など、他の種類の記憶デバイスに格納されてもよい。また、システムソフトウェア、特定のデバイスアプリケーション、またそれらの部品は、RAM118などの揮発性の格納場所に一時的にロードされてもよい。モバイル通信デバイスによって受信された通信信号も、RAM118に格納されてもよい。
マイクロプロセッサ98は、そのオペレーティングシステム機能に加えて、JAVA(登録商標)仮想マシン128の動作を可能にし、そのJAVA(登録商標)仮想マシンを介して、ソフトウェアアプリケーション130A〜130Nの動作を可能し、これらのアプリケーションのすべては、デバイス90上のフラッシュメモリ116に格納され得る。当業者には理解されるように、JAVA(登録商標)はプラットフォーム非依存言語であり、JAVA(登録商標)仮想マシンは、特定のデバイス上でJAVA(登録商標)プログラムを実行可能にするために作成される。ハンドヘルド90とともに使用することができる特定のJAVA(登録商標)仮想マシンは、JAVA(登録商標)2プラットフォーム、Micro Edition(J2ME)の一部であり、Sun Microsystems,Inc.のウェブサイトwww.sun.comから入手可能である。JAVA(登録商標)の詳細についてはhttp://java.sun.comなど多くのソースから入手可能であり、その内容は参照により本明細書に援用される。データおよび音声通信130Aおよび130Bのような基本的なデバイスの動作を制御する、所定の1組のアプリケーションは、製造時にデバイス90にインストールすることができる。また、個人情報管理(PIM)アプリケーション130Cが、製造時にインストールされ得る。PIMは、好ましくは、e−メール、カレンダーイベント、ボイスメール、アポイントメント、タスクアイテムなどのデータアイテムを整理および管理する能力を有する。また、PIMアプリケーションは、好ましくは、無線ネットワーク88を介してデータアイテムを送信および受信する能力を有する。好ましくは、PIMデータアイテムは、無線ネットワーク88を介して、デバイスユーザ側の対応する格納データアイテムとシームレスに統合、同期化、および更新されるか、または、ホストコンピュータシステムと関連付けられる。工場でインストールされるその他のアプリケーションには、メディアエンジン130DおよびJAVA(登録商標)ユーザインタフェース(UI)オブジェクト130Eが含まれ、双方について後に詳述する。
データおよび音声通信を含む通信機能は、通信サブシステム100を介して実行され、場合によっては、短距離通信サブシステム102を介して実行される。該通信サブシステム100には、受信機150、送信機152、1つ以上のアンテナ154および156が含まれる。さらに、該通信サブシステム100には、デジタルシグナルプロセッサ(DSP)158やローカルオシレータ(LO)160のような処理モジュールが含まれる。通信サブシステム100の特定の設計および実装は、モバイル通信デバイス90が動作することが意図される通信ネットワークに依存する。例えば、モバイル通信デバイス90の通信サブシステム100は、MobitexTM、DataTACTMもしくは汎用パケット無線サービス(GPRS)のモバイルデータ通信網を用いて動作するために設計されてもよく、また、AMPS、TDMA、CDMA、PCS、GSM等の、種々の音声通信ネットワークのいずれかを用いて動作するために設計されてもよい。他の種類のデータおよび音声ネットワークは、別個でも統合されていても、モバイル通信デバイス90を用いて利用されてもよい。
ネットワークへのアクセス要件は、通信システムの種類により異なる。例えば、MobitexTMおよびDataTACTMネットワークにおいては、モバイル通信デバイスは各デバイスに関係する一意的な個人識別番号(PIN)を用いてネットワーク上で登録される。しかし、GPRSネットワークにおいては、ネットワークアクセスは加入者すなわちデバイスのユーザと関係している。従って、GPRSデバイスがGPRSネットワーク上で動作するためには、一般的にSIMカードと呼ばれる加入者識別モジュールが必要となる。
必要なネットワーク登録もしくは起動手順が完了すると、モバイル通信デバイス90は通信網88を介して通信信号を送信および受信することができる。通信網88からアンテナ154を通して受信された信号は、受信機150にルートされ、該受信機は、信号増幅、周波数ダウンコンバージョン、フィルタリング、チャネル選択等を提供し、またさらにはアナログからデジタルへの変換を行うこともできる。受信信号をアナログからデジタルへ変換することで、DSP158は、復調および復号のような、より複雑な通信機能を実行することが可能となる。同様に、ネットワーク88に送信された信号はDSP158により処理され(復調および複合されるなど)、それから送信機152に送られ、デジタルからアナログへの変換、周波数アップコンバージョン、フィルタリング、増幅、そしてアンテナ156を介して通信ネットワーク88(複数の場合もある)への送信が行われる。
通信信号の処理に加えて、DSP158は、受信機150および送信機152の制御を提供する。例えば、受信機150および送信機152中の通信信号に与えられた利得は、DSP158に実装された自動利得制御アルゴリズムによって適応制御されることができる。
データ通信モードにおいては、ダウンロードされたテキストメッセージもしくはWebページのような受信された信号は、通信サブシステム100によって処理され、マイクロプロセッサ98に入力される。受信された信号はそれからマイクロプロセッサ98によってさらに処理され、ディスプレイ96に出力されるか、または、他の補助I/Oデバイス106に代わりに出力される。デバイスユーザは、キーボード92、サムホイール94、タッチパッドやロッカースイッチ、または別の種類の入力デバイスなどその他の補助I/Oデバイス106のうちの1つ以上を使用して、Eメールメッセージのようなデータアイテムを作成することもできる。作成されたデータアイテムは、それから、通信サブシステム100を介して無線通信ネットワーク88を介して送信される。
音声通信モードにおいて、受信信号がスピーカー111に出力されること、そして送信するための信号はマイクロフォン112によって生成されるということを除けば、デバイスの全体的な動作はデータ通信モードと実質的に同様である。代替的なボイスメッセージ録音システムのような、音声または音響I/Oサブシステムも、デバイス90に実装することができる。また、ディスプレイ96も、例えば、発信者のIDもしくはボイスコールの長さ、またはその他のボイスコールに関連した情報を表示するために音声通信モードにおいて利用され得る。
短距離通信サブシステム102は、モバイル通信デバイス90とその他の隣接するシステムまたはデバイス間の通信を可能にするが、該デバイスは同様のデバイスでなくともよい。例えば、同様に使用可能なシステムおよびデバイスを通信に提供するための、短距離通信サブシステムには赤外線デバイスや関連する回路およびコンポーネント、あるいはBluetoothTM通信モジュールが含まれてもよい。
デバイス90は、デバイスの活性素子に電力を供給するために電池121を有してもよい。
コンパイラ86は、入力されたソースコードファイルを受信して解析し、コンピュータ読み取り可能なオブジェクトファイルとして出力するために、ソフトウェア制御で動作するプロセッサを備えてもよい。後にさらに説明されるように、コンパイラは、SVGのような図形表示言語もしくは修正されたWebフォーム作成言語を含むソースコードを解析するように特別に構成される。Webフォーム作成言語はXFormsであってもよい。XForms version 1.0は、2003年10月14日ワールド・ワイド・ウェブ・コンソーシアム(W3C)勧告であり、www.w3.orgにて入手可能であり、その内容は参照により本明細書に援用される。SVG同様、XFormsはXMLの拡張機能である。
動作上の概要において、コンテンツプロバイダは、図形表示言語およびWebフォーム作成言語の両方を使用してWebコンテンツを開発し得る。各言語でのステートメントは、ソースコードにおいて別々に識別される。Webフォーム作成言語は、Webフォーム作成言語によって定義されるユーザ入力の位置およびサイズの規格を含むように修正されてもよい。ソースコードは、図形要素をWebフォーム作成言語の提出動作に結合する図形表示言語でのステートメントを含んでもよい。別のステートメントが、図形要素をWebフォーム作成言語のリセット動作に結合してもよい。ソースコードは、Webコンテンツサーバ84にロードされてもよい。デバイス90は、無線通信網88、リレーサーバ87、およびインターネット82を介して、Webコンテンツサーバ84からこのコンテンツを要求できる。コンテンツが戻されると、リレー87において傍受され、コンパイラ86にリダイレクトされる。コンパイラは、コンテンツのソースコードをコンパイルし、オブジェクト(バイナリ)ファイルにしてリレー87に戻し、該ファイルはそこから無線通信ネットワーク88を介してデバイス90に送られる。デバイス90のマイクロプロセッサ98は、JAVA(登録商標)仮想マシン128上で動作するメディアエンジン130Dを使用して、ディスプレイ96上のオブジェクトファイルにある図形要素をレンダリングする。Webフォーム作成ステートメントは、UIクラスからネイティブUIオブジェクトを作成するのに必要なパラメータを抽出するために解析される。これらのパラメータは、その後ネイティブUIオブジェクトを作成するために使用される。それから、ネイティブUIオブジェクトは、ユーザが種々の特定のUI領域にあるデータを入力および表示することを許可する。ユーザが提出動作に結合した図形を選択すると、ユーザ入力データは、コンテンツサーバ84上のアプリケーションのような特定の(ローカルまたは遠隔)アプリケーションに提出され得る(ネットワーク88、リレー87、およびインターネット82を介して)。
動作は、図3A〜3Cのソースコード例を用いて、さらによく理解されるであろう。この典型的なコードは、SVGおよびXFormsステートメントの両方を含んでおり、XFormsステートメントには、接頭辞「XForms:」が付与されている。残りのステートメントにはそのような接頭辞が付かないため、SVGステートメントであると予測することができる。これらの図面を参照すると、1行目はコードがXMLコードであることを宣言している。2行目は、SVGステートメントに対する文書型宣言(DTD)ファイルのロケーションを特定している。3行目はSVG図形要素を含み得るディスプレイの領域を設定している。該3行目は、関連するも画定している。具体的には、ネームスペースはXFormsの拡張子である「pz」に対して画定され、ネームスペースはXFormsそのものに対して画定され、また、ネームスペースはSVGに対して画定される。4〜24行目は、フォームモデル「form1」を定義するXFormsモデル定義を設定する。より具体的には、7〜11行目は、ユーザから収集される情報の構造を定義する。12行目は、最初の提出である「form1Submission」がトリガされた時、何を提出するかという命令であり、13行目は、インスタンスデータおよびインスタンスデータの送信先のURLを送信するのに使用されるプロトコルを規定する。14および15行目は、第2の提出である「form1Submission2」がトリガされた時に、同様の情報を提供する。17〜20行目もXFormsであり、各提出が結合されたインスタンスデータの提出を開始する。21〜23行目は、ユーザがXFormsでトリガしたアクション、ここではフォーム内のいかなる情報も削除するためのリセット、を定義する。
25行目は、青い境界線を持つ空の矩形を確立するSVGステートメントである。矩形の左上の角は、表示位置(80,0)に設定されており、矩形の幅は100(ピクセル)、高さは20(ピクセル)である。26〜30行目は、「CustomerName」を参照して、「form1」フォームに対するフリーフォームのXForms入力を、そして、「Enter your name」という説明ラベルを定義する。標準XForms入力ステートメントでは、ラベルの表示位置を規定すること、および、関連するテキスト入力ボックスを作成して位置決めすることはWebブラウザに任されている。しかし、標準フォームのフリーフォームで入力したステートメントは、「pz」パラメータを4つ含む27行目によって修正されている。これらのpzパラメータは、矩形を表示位置に画定し、この矩形は25行目のSVGステートメントによる画定とまったく同じであることが分かるであろう。
31行目は、ディスプレイに「Description」という単語を配置するためにSVGステートメントを使用し、32行目は、この単語の横に矩形を配置するために、さらにSVGステートメントを使用する。33〜35行目は、「Description」を参照して「form1」フォームに対して、XFormsユーザ入力テキスト領域を画定する。XFormsの標準テキスト領域ステートメントは、33行目に「pz」パラメータを4つ含むことにより修正されており、これらのパラメータは、32行目のSVGで作成された矩形のパラメータとまったく同じである。
36および37行目は、「Favourite Ice Cream Flavour」という言葉、およびこのテキスト横の矩形の表示を規定する。38〜55行目は、ユーザが4アイテムのうちひとつを選択できるようにXForms選択メニューを定義する。アイテムが選択されると、各選択の値の属性が、格納される値を規定する。ここでも「pz」パラメータは、37行目で作成された矩形に対するパラメータとまったく同じである。
56〜61行目は、17および18行目の「form1Submit」というXFormsの動作をSVG図形、すなわち、「Submit1」という単語を含む輪郭のない色付きの矩形に結合する。同様に、62〜67行目は、19および20行目の「form1Submit2」というXFormsの動作をSVG図形、すなわち、「Submit2」という単語を含む輪郭のない色付きの矩形に結合する。また、同様に、68〜73行目は、21〜23行目の「form1Reset」というXFormsの動作をSVG図形、すなわち、「Reset」という単語を含む輪郭のない色付きの矩形に結合する。
図1を参照すると、図3A〜3Cのソースコードはサーバ84上に格納され得る。このソースコードは、ハンドヘルド90によって要求された場合、最初にコンパイラ86によってコンパイルされる。図2を参照すると、コンパイルされたコードは、それからプロセッサ98によって、JAVA(登録商標)仮想マシン128上で動作しているメディアエンジン130Dを通して実行される。メディアエンジンが、図形を規定するSVGオブジェクトコードに遭遇した場合、エンジンはディスプレイ96に図形をレンダリングするために直接コードを適用する。エンジンが、ユーザ入力を可能にするために修正されたXFormsコードに遭遇した場合、エンジンはコードからパラメータを抽出し、それらのパラメータを利用してネイティブUIオブジェクトを規定する。例えば、エンジンが26〜30行目のソースコードに対応するオブジェクトコードに遭遇した場合、エンジンは4つのpzパラメータ、「CustomerName」参照、および「Enter your name」ラベルを抽出して、これらのパラメータを用いてネイティブUIオブジェクトを規定する。そしてネイティブUIオブジェクトはこれらのパラメータを使用してユーザ入力を可能にする。すなわち、例に従って、ネイティブUIオブジェクトは「Enter your name」という言葉、および、pzパラメータで画定されたテキストボックスの表示を制御する。ハンドヘルド90に適合したネイティブUIオブジェクトは、キーボード92、サムホイール94、および、いかなる補助入力デバイス106をも介してこのボックスへのテキスト入力を可能にし、参照「CustomerName」の元に入力されたテキストを格納する。ネイティブUIオブジェクトは同様に規定され、ユーザインタフェースを表示し、ソースコード33〜35行目のテキストボックス、および、38〜55行目のソースコードの選択メニューに対する入力値の入力および格納を許可する。これについては、「pz」パラメータを選択することにより、ユーザ入力領域は、SVG図形要素と同空間に存在するか、またはその中に含まれて存在するようになり、SVGは、図形枠の種類や塗りつぶしの色などの、ユーザ入力領域を視覚的に定義するために使用され得るということに注目するべきである。SVGはまた、これらユーザ入力領域(点滅している領域など)の動画を定義するために使用され得る。
SVG図形をXForms提出動作に結合することにより、ユーザはSVG「submit」図形を選択することで(例えばクリックすることで)提出動作を行うことができる。同様に、SVG図形をXFormsリセット動作に結合することにより、ユーザはSVG「reset」を選択することでリセット動作を行うことができる。従って、エンジンは、この機能性を提供するためのネイティブUIオブジェクトを規定する必要はない。
当業者には理解されるように、メディアエンジンはオブジェクトコードからツリー構造を作成し、オブジェクトコードによって規定された命令を実行するためにそのツリーをトラバースする。エンジンは、アクティブな動画およびユーザのアクションに応答してディスプレイを更新するために、必要に応じてツリーをトラバースする。
図4は、メディアエンジンがオブジェクトコードによって確立されたツリーをトラバースした後の、ハンドヘルドのディスプレイ96を示す。図形要素210、212および214は、それぞれソースコード25、32および37行目によって定義される。「submit1」の図形216はソースコード56〜61行目によって定義され、「submit2」の図形218は62〜67行目に定義され、「reset」図形220は68〜73行目によって定義される。
マイクロプロセッサ98は、フィールドプログラマブルゲートアレー(FPGA)のような、いかなる適切なコントローラとも置き換えられる。
ソフトウェアアプリケーション130A〜130N(クラス130Eからインスタンスを作成したメディアエンジン130DおよびネイティブUIオブジェクトを含む)は、JAVA(登録商標)仮想マシン128上で動作していると説明されているが、適切な適応によって、これらのソフトウェアアプリケーションはMicrosoft Windows(登録商標)のような別のプラットフォーム上で動作することができる。あるいは、メディアエンジンは、デバイスのオペレーティング・システムの一部にもなり得る。図形表示言語がSVGとして説明されているが、同じく別の図形表示言語も使用され得る。Webフォーム作成言語はXFormsとして説明され得るが、1999年12月24日のHTML4.01 W3C勧告の一部である、ハイパーテキストマークアップ言語(HTML)フォームなど、別のWebフォーム作成言語を使用することも可能であり得る。
ハンドヘルド90のネイティブUIオブジェクトは、ハンドヘルドの特定のユーザインタフェース制御(例えばサムホイール)と相互に作用するように開発されたオブジェクトである。これらのオブジェクトは、ハンドヘルドがJAVA(登録商標)仮想マシンを実行する典型的な実施形態においてJAVA(登録商標)オブジェクトとして説明されてきた。しかし、異なるプラットフォーム上で動作するデバイスにおいては、これらのネイティブUIオブジェクトもまた異なるため、異なるプラットフォーム上で実行するように構成されている。
本発明の教示が、典型的な実施形態に記述されている通り、無線デバイスよりもむしろ有線デバイスに応用できることは明白である。さらに、デバイスは、例えば、ハンドヘルドデバイスよりもむしろパーソナルコンピュータまたはラップトップコンピュータであり得る。デバイスの能力によって、デバイスは、コンパイルされた形態のソースコードよりもむしろWebコンテンツサーバ84からソースコードそのものを受け入れる(および実行する)ことが可能であり得る。その場合には、コンパイラ86は必要ではなくなる。
他の改良は当業者には明白であり、従って、本発明は特許請求の範囲において定義される。