JP2007524875A - ネットワーク・ベースの処理のためのシステムおよび方法 - Google Patents

ネットワーク・ベースの処理のためのシステムおよび方法 Download PDF

Info

Publication number
JP2007524875A
JP2007524875A JP2006500912A JP2006500912A JP2007524875A JP 2007524875 A JP2007524875 A JP 2007524875A JP 2006500912 A JP2006500912 A JP 2006500912A JP 2006500912 A JP2006500912 A JP 2006500912A JP 2007524875 A JP2007524875 A JP 2007524875A
Authority
JP
Japan
Prior art keywords
markup
client
server
network
compiler
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
JP2006500912A
Other languages
English (en)
Inventor
ウェイ コーチ
Original Assignee
ネクサウェブ テクノロジーズ インコーポレイテッド
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 ネクサウェブ テクノロジーズ インコーポレイテッド filed Critical ネクサウェブ テクノロジーズ インコーポレイテッド
Publication of JP2007524875A publication Critical patent/JP2007524875A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms

Abstract

【課題】 ネットワークベースの処理システムであって、該システムは、アプリケーションのコンパイル、配備並びに実行を自動化、単純化並びに最適化する。これは、任意の種類のクライアント・マシンにより行われ、該クライアント・マシンは任意の種類のネットワーク接続を介してサーバに接続する。システムは、クライアント・ランタイム環境、サーバ・ランタイム環境並びにオブジェクト指向マークアップ・ビジネス・ロジック・バインディング機構を備える。クライアント・ランタイム環境はクライアント・サイド・コードとスクリーン定義を管理する。サーバ・ランタイム環境は動的にコードをコンパイルし、クライアント・プラットフォームのコンパティビリティを保証する。システムは、ネットワーク・アプリケーションを要求に応じて配信し、これは、ネットワーク・アプリケーションを軽いモジュールに分割するとともにこれらモジュールを配信することにより行われる。
【選択図】 図10

Description

本発明は、ネットワーク・ベースの処理のためのシステムおよび方法に関する。より詳しくは、任意のネットワーク接続を介して、サーバと接続するクライアント・マシンにより、自動的に配備、コンパイル、そして実行を行うアプリケーションを提供するネットワーク・ベースの処理に関する。
本出願は、2003年1月10日に出願した米国特許仮出願番号第60/439,394号「帯域幅およびクライアント・インディペンデント・ネットワーク処理を実現するために、コードのコンパイル、配備、そして実行を自動的に行うシステムおよび方法」に係る優先権を主張するものである。また、米国特許仮出願番号第60/439,394号に係る特許を受ける権利は、本発明の譲受人に譲渡されており、当該発明内容は、本発明に明確に含まれている。
一般的なコンピュータ・システムは、ハードウェア要素及びソフトウェア要素を備える。
ハードウェア要素には、とりわけ個人用コンピュータ、メインフレーム・コンピュータ、コンピュータ回路などのコンピュータ・デバイスが含まれる。コンピュータ・デバイスの基本構造には、プログラムの命令を実行する中央処理ユニット(Central Processing Unit, CPU)及びデータやプログラムの命令を記憶するメモリ・ユニットが含まれる。
命令やデータは、メモリ・ユニットからCPUに伝送され、CPU操作の結果は、メモリ・ユニットに返送される。
ソフトウェア要素とは、アプリケーション・プログラムであり、CPUユニットによって実行される命令を含む。アプリケーション・プログラムとして、とりわけシステム・プログラミング・ソフトウェア、ドローイング・ソフトウェア、文書作成ソフト、表計算ソフトウェア、経営資源管理ソフトウェア、顧客関係管理ソフトウェア、データ解析ソフトウェア、顧客用セルフヘルプ・ソフトウェア、ネットワーク/ストレージ管理ソフトウェア、数値計算及び科学技術ソフトウェアが挙げられる。
コンピュータ・プログラマーは、プログラミング言語の文法規則を用いるソース・ファイル中の命令のセットを、まずコード化することにより、アプリケーション・プログラムを開発する。図1の例では、プログラマは、Javaプログラミング言語(82)の文法規則とシンタックスを用いるソース・ファイルを作成する。Javaソース・ファイルは、Javaコンパイラ(84)を通り、そこで分析および解析され、Javaバイトコード・ファイル(86)を生成させるために用いられる(つまり、Java仮想マシン(Java Virtual Machine, JVM)により理解されるコードのこと)。そして、コンパイルされたJava バイトコード・ファイル(86)は、コンピュータ・デバイス内のメモリに記憶される。
ユーザが、特定のアプリケーション・プログラムを実行させたいときは、コンピュータ・デバイスは、コンパイルされたJavaバイトコード・ファイル(86)をメモリから読み込む。尚、この操作はJava仮想マシン(88)により実行され、この処理結果は表示される(89)。コンパイルされたJavaバイトコード・ファイル(86)は、CD、フロッピーディスク、またはテープなどのコンピュータが読み込める記憶媒体に記憶することも可能である。これらの記憶媒体は、アプリケーション・プログラム(すなわちコンパイルされたJavaバイトコード・ファイル)を他のコンピュータ・デバイスに、分散したりインストールするために用いることも可能である。この処理システムは、インディペンデント・コンピュータ・デバイスは十分なシステムである。
ネットワーク・ベースのコンピュータ・システムには、中央サーバと複数のコンピュータ・デバイス(すなわち、ネットワークを介し、互いとまたはサーバと接続するクライアント・マシンのこと)が含まれる。アプリケーション・プログラムは、中央サーバに記憶され、ネットワークを介してクライアント・マシンに配置することができる。あるいは、アプリケーション・プログラムは、クライアント・マシンにインストールすることも可能である。このインストールは、コンパイルされたアプリケーション・コードを含む記憶媒体(例えばCDやフロッピーディスク)を手動で分配することにより行うことができる。
多数の場所にあって、ネットワーク接続を介して、互いとまたはサーバと交信する多数のコンピュータ・デバイスを有する大企業が、ネットワーク・ベースの処理を利用する。
ネットワーク・ベースのコンピュータ・システムにおけるアプリケーション・プログラムには、サーバに記憶されるサーバ・プログラム、クライアント・マシンのメモリに記憶されるクライアント・プログラムが含まれる。サーバ・プログラムはサーバ上で作動し、クライアント・プログラムは、クライアント・マシンのうちの1つで作動する。
大企業は、SAP社の企業資源計画ソフトウェアや顧客内部アプリケーションのような企業アプリケーションを利用するために、ネットワーク・ベースの処理を利用する。
例えば、金融サービス企業では、投資ポートフォリオ・マネジメント・アプリケーションを使用することにより、株分析を行うことができる。資産管理担当者が特定の株分析を行いたいときには、クライアント・マシンの投資ポートフォリオ・マネジメント・アプリケーションを実行させるために、クライアント・プログラムを起動させる。このクライアント・マシンは、多メガバイトのクライアント・プログラムのデータを読み込み、管理担当者の要求を受け処理する。クライアント・マシンは、必要なデータを得るために、ネットワークを介して更なる要求をサーバ・プログラムに伝送することができる。そして、クライアント・プログラムが必要データを受け取った後データ分析し、その分析結果を適切なフォーマットで管理担当者に示す。
ネットワーク・ベースの処理過程には、とりわけ、アプリケーション開発、アプリケーション配備、アプリケーション実行が含まれる。アプリケーション開発は、サーバ上のコーディング、コンパイルおよびデバッグ、サーバにより作動可能であるクライアント・プログラム、クライアント・マシンの多様なコンフィギュレーションおよびオペレーティング・システムをそれぞれ意味する。アプリケーション配備は、多様なクライアント・マシンに組み込まれている様々なクライアント・プログラムの分配およびインストールを意味する。アプリケーション実行は、コンパイルされたサーバ・プログラムおよびクライアント・プログラムのサーバおよびネットワーク上の様々なクライアント・マシンそれぞれを意味する。
ネットワーク・ベースのコンピュータ・システムのためのアプリケーション開発の主な問題点は、クライアント・プラットフォームおよびデバイス・コンフィギュレーションには互換性がない点である。クライアント・プラットフォームの互換性の無さは、異なるオペレーティング・システムや異なるハードウェアにより生じる。オペレーティング・システムには、様々なバージョンのWindows、 Mainframe、 Macintosh、 Unix、Linux、そしてPalmが挙げられ、ハードウェアには、Pocket PC、デスクトップ、ラップトップ、ワークステーション、電話システム、携帯情報端末(personal digital assistant,PDA)、および多機能テレビ等様々な異なる種類が含まれる。デバイス・コンフィギュレーションには、規定のアプリケーションが要求する特定の設定を含む。 尚、この特定の設定には、ダイナミック・リンク・ライブラリ(Dynamic Link Library,DLL)バージョンおよび一般的なWindowsのアプリケーションのレジストリが挙げられる。数千のユーザやクライアント・マシンを持つ企業にとって、クライアント・プラットフォームおよびデバイス・コンフィギュレーションの互換性の無さは、かなりの複雑さやネットワーク・アプリケーションの開発に有する費用の増大を生じさせる。
ネットワーク・ベースのシステムにおけるアプリケーション配備の主な問題点は、何千、もしくは何十万ものクライアント・マシンへクライアント・プログラムを分散することである。また、各々のクライアント・マシンが、最も適したバージョンのアプリケーションを常に含んでいるかという確認も、アプリケーション配備の主な問題点である。以下は、コード分散やコードコンフィギュレーションを処理するために、今日最も良く使用されている方法である。
CDもしくはフロッピーディスクの分散、手動インストール、および設定
情報システム(Information System, IS)上の個人は、CDもしくはフロッピーディスクからコンパイルされたクライアント・プログラムを直接クライアント・コンピュータにインストールし、アプリケーションを個々のクライアント・コンピュータに手動で設定する。コードがアップグレードされる度に、この手動での手順は繰り返される。多くの異なる場所に配される何千というデスクトップ・コンピュータを有する企業を考慮すると、この方法はあまりに時間や費用がかかり、効率的ではない。
手動によるダウンロード、インストールおよび設定
この方法により、エンドユーザが、ローカル・エリア・ネットワーク(Local Area Network,LAN)、広域ネットワーク(Wide Area Network,WAN)、そしてインターネットを介しクライアント・プログラムを各自のコンピュータにダウンロードおよびインストールすることができる。しかし、クライアント・プログラムが、数十メガバイトを容易に有することを考慮すると、ユーザは、このように大きなファイルをダウンロードしたり、アプリケーションを設定するのに、数時間をかけなければならない。また、何千というユーザを有する企業では、手動ダウンロードによる生産性の損失は重大な問題である。更に、ネットワーク接続が遅く帯域幅が限られている場合(すなわちダイアルアップやワイヤレス接続)は、手動による操作は実行不可能である。
クライアント・プログラム実行による問題点は、今日のプログラム実行モデルが、ユーザがアプリケーションを実行する前に、ほとんど全てのプログラムをメモリに移さなければならないという点である。上記のごとく、クライアント・プログラムは一般的に多メガバイトのファイルであり、このような大きな容量のファイルをメモリに移すには、非常に多くの時間を要する。更に、この実行モデルは、より早いCPU、大容量のメモリやストレージ、そしてより早いネットワークを要求するため、ハードウェア上に更なる要求を生み出す。それゆえ、これら全ての要求はコストパフォーマンスの問題につながる。
スタティック・ネットワーク・ベースのコンピュータ・システムに対する他の方法には、Javaアプレット方法やハイパー・テキスト・マークアップ・ランゲージ(Hyper Text Markup Language,HTML)形式によるウェブページ方法が含まれる。Javaアプレット方法では、ネットワーク・アプリケーションのクライアント要素が、Javaアプレットとして書き込まれ、予めアプリケーションをインストールしなくても、エンドユーザがこのアプリケーションにアクセスすることが可能となる。
しかし、Javaアプレットの実際の使用は、技術上において深刻な問題を有し、簡単なアプリケーションのみに限定される。複雑なエンタープライズ・アプリケーションでは、Javaアプレットは、うまく作動しないだけでなく、1MGを超えるフットプリントを容易に備える。つまり、このフットプリントにより、ダウンロードに長い時間を要し、ユーザがインターネットやワイド・エリア・ネットワーク上で、Javaアプレットを効果的に使用することができない。更に、Javaアプレットは、クライアント・マシン上でJava仮想マシン(Java Virtual Machine,JVM)を必要とする。Java仮想マシンの互換性の無さとクライアント・マシン上JVMが欠如することによって、エンタープライズ・アプリケーションにおけるJavaアプレットを幅広く普及することは不可能となる。
HTML方式のウェブページにおける方法では、企業は、簡単なアプリケーションの画面を公開するために、HTMLを使用する。この方法では、全てのアプリケーションがサーバ上で作動する。各々の画面は、HTML方式のウェブページにフォーマットされ、ウェブ・ブラウザに表示される。ある簡単なクライアント・サイドのロジックは、Javaスクリプトのような技術を用いたHTMLページに加えられることが可能である。
しかし、この方法は、最小限の双方向性と機能性しかユーザに要求しないアプリケーションに限定される。この方法を用いたネットワーク・アプリケーションは、クライアント・サイドの処理と関与する多くの特徴と機能性を犠牲にしてしまう。この処理には、とりわけオフライン処理、ドラッグ&ドロップ、マルチ・ウィンドウ、表計算が挙げられる。インターネット・ブラウザと関与する「クリックと更新」ユーザ相互作用モデルは、ネットワーク・アプリケーションには最適でない。なぜならば、このモデルは、重複する情報を送信したり再送信することにより、かなりの帯域幅を浪費するだけでなく、一回のクリックごとに時間がかかるので、ユーザ効率をかなり下げる。
また、このシナリオでは、クライアントサイド・ビジネス・ロジックを制限することとなる。なぜならば、JavaやC++のような、より頑強なオブジェクト指向プログラミング(Object-oriented programming,OOP)言語とは異なり、Javaスクリプトのようなスクリプト言語は、開発者の大編成チームによって開発されるような複雑なプログラムには上手く適合できないからである。その結果、HTML方式は、簡単なアプリケーションのみに使用されている。重要なアプリケーションは、OOP言語を使用する旧来のクライアント/サーバ・アプリケーションとして、未だに書き込まれている。
つまり、ネットワーク・ベースの処理における今日の方法は、開発者にとって費用がかかり、非効率で複雑である。ユーザがアプリケーションを実行するためには、ダウンロード、設定、そして読込みを、時間をかけて行わなければならない。また、新しいバージョンのアプリケーションが利用可能となれば、ユーザは同じ工程を繰り返し行わなければならない。
プラットフォームの互換性の無さによって、多くのユーザは、しばしば、アプリケーションを全く作動することができなくなる。また、企業は、アプリケーション・コンフィグレーションと管理を行うための、大規模な技術サポートチームを維持しなければならない。
デスクトップは、ますます大きくなるクライアントのプログラムから発せられる要求を満たすために、常にアップグレードする必要がある。ワイド・エリア・ネットワーク(WAN)や公共用途向けインターネットなど、帯域幅が限られているネットワークを利用するユーザにとっては、今日の方法は、単に実行不可能である。HTML方式のように、クライアントのフットプリントや互換性の無さの問題を大幅に低減できる別の方法も存在する。しかし、このような方法では、ほとんどのビジネス・アプリケーションに要求される機能性やパフォーマンスを提供することはできない。
すなわち、任意のネットワーク接続を介してサーバと接続するクライアント・マシンによるアプリケーションのコンパイル、展開、実行を自動化し、簡略化し、最適化するネットワーク・ベースのコンピュータ・システムの必要性がある。
本発明の一形態において、総じて、本発明は、汎用コンパイラを提供する。該汎用コンパイラは、複数の入力ファイルを受信する。この入力ファイルはアプリケーションのソース・コードを備える。該ソース・コードは、複数のそれぞれ異なるプログラム言語のうちいずれかにて記載される。そして、汎用コンパイラは、入力ファイルのうち任意の入力ファイルを出力ファイルに変換する。出力ファイルは、アプリケーションの実行コードを備え、該実行コードは、実行エンジンにより実行される。
本発明の上記形態の実施例は、以下の1若しくはそれ以上の特徴を備えるものであってもよい。
汎用コンパイラが複数の特定のプログラム言語コンパイラを備えるものであってもよい。各特定のプログラム言語コンパイラは、入力ファイルを受信する。入力ファイルはアプリケーションのソース・コードを備え、該ソース・コードは、特定のプログラム言語で書かれる。そして各特定のプログラム言語コンパイラは、入力ファイルをアプリケーションの特定の実行コードに変換する。この実行コードは特定の実行エンジンにより実行される。
汎用コンパイラは、更に、制御ロジックを備えるものであってもよい。制御ロジックは、複数の特定のプログラム言語コンパイラから、特定のプログラム言語コンパイラを選択する。
プログラム言語は、Java、JavaScript、C#、C+、C++、Visual Basic、J#、ActionScript、XSL、XQuery、XPath及びその他の言語であってもよい。実行コードは、Java仮想マシン・バイトコード、.Net Common Language Runtime(ドット・ネット・コモン・ランゲージ・ランタイム:CLR)バイトコード或いはFlashプレイヤ・バイトコードであってもよい。
実行エンジンは、それぞれ、Java仮想マシン、.Net CLRエンジン或いはFlashプレイヤであってもよい。
本発明の他の形態において、総じて、本発明はコンパイラ・システムを提供する。コンパイラ・システムは複数の入力ファイルを受信し、これら複数の入力ファイルのうち任意のファイルを複数の出力ファイルに変換する。
入力ファイルそれぞれは、アプリケーションのソース・コードを備え、該ソース・コードは、複数の異なるプログラム言語のうちいずれかで書かれている。複数の出力ファイルは、アプリケーションの複数の実行コードをそれぞれ備える。この実行コードは、複数の実行エンジンそれぞれにより実行可能である。
本発明の上記形態の実施例は、以下の1若しくはそれ以上の特徴を備えるものであってもよい。
コンパイラ・システムは、複数の汎用コンパイラを備え、該汎用コンパイラそれぞれが、複数の特定のプログラム言語コンパイラを備えるものであってもよい。特定のプログラム言語コンパイラは、1つの入力ファイルを受信する。入力ファイルは、アプリケーションのソース・コードを備え、該ソース・コードは、特定のプログラム言語で書かれている。そして、特定のプログラム言語コンパイラは、この入力ファイルをアプリケーションの1つの特定の実行コードに変換する。この実行コードは、特定の実行エンジンにより実行される。
コンパイラ・システムは、更に第1制御ロジックを備えてもよい。該第1制御ロジックは、複数の汎用プログラム言語コンパイラから1つの汎用プログラム言語コンパイラを選択する。また、コンパイラ・システムは更に第2制御ロジックを備えてもよい。第2制御ロジックは複数の実行コードをキャッシュする。
プログラム言語は、Java、JavaScript、C#、C+、C++、Visual Basic、J#、ActionScript、XSL、XQuery、XPath及びその他から選択されてもよい。また実行コードは、Java仮想マシン・バイトコード、.Net CLRバイトコード、Flashプレイヤ・バイトコード、Palm OSバイトコード、Symbian OSバイトコード及びQualcomm Brewバイトコードであってもよい。また対応する実行エンジンがそれぞれ、Java仮想マシン、.Net CLRエンジン、Flashプレイヤ、Palm OS、Symbian OS、Qualcomm Brewエンジンであってもよい。
本発明の他の形態において、総じて、本発明は分散処理を実行するコンピュータ・システムを提供する。該コンピュータ・システムは、1つの汎用コンパイラを備えるサーバと、1つの実行エンジンを備える少なくとも1つのクライアント・マシンを備える。クライアント・マシンは、ネットワークを介して、サーバと接続する。汎用コンパイラは、複数の入力ファイルを受信し、該複数の入力ファイルのうち任意のファイルを出力ファイルに変換する。複数の入力ファイルは、アプリケーションのソース・コードを備え、該ソース・コードは、複数のプログラム言語でそれぞれ書かれる。出力ファイルは、アプリケーションの実行コードを備える。実行エンジンはネットワーク上で出力ファイルを受信するとともに、実行コードを実行する。
本発明の他の形態において、総じて、本発明は分散処理を実行するコンピュータ・システムを提供する。該コンピュータ・システムは、1つのサーバを備える。該サーバは、1つのコンパイラ・システムと、複数のクライアント・マシンを備える。該クライアント・マシンは、複数の実行エンジンをそれぞれ備える。また、クライアント・マシンはネットワークを介してサーバと接続する。
コンパイラ・システムは、複数の入力ファイルを受信し、この入力ファイルのうち任意のファイルを複数の出力ファイルに変換する。複数の入力ファイルは、アプリケーションのソース・コードを備え、該ソース・コードは、複数の異なるプログラム言語でそれぞれ書かれている。そして、複数の出力ファイルはそれぞれ、アプリケーションの複数の実行コードを備える。実行エンジンは、ネットワーク上で出力ファイルを受信し、対応する実行コードを実行する。
本発明の他の形態において、総じて、本発明は汎用XMLコンパイラを提供する。この汎用XMLコンパイラは、複数の入力ファイルを受信するとともに、この複数の入力ファイルのうち任意のファイルを1つの出力ファイルに変換する。複数の入力ファイルは複数のマークアップ・ドキュメントを備え、該マークアップ・ドキュメントは複数の異なるXML言語でそれぞれ書かれる。出力ファイルは、実行コードを備え、該実行コードは所定の実行エンジンにより実行される。
本発明の上記形態の実施例は、以下の1若しくはそれ以上の特徴を備えるものであってもよい。
XML言語が、XML、XUL、SVG、Xforms、XAML、HTML、XHTML、HTMLに関連する言語及びこれらの組み合わせであってもよい。実行コードは、XML言語フォーマットを備えていてもよく、また所定の実行エンジンが、XML実行エンジンを備えるものであってもよい。実行コードがバイナリ・フォーマットであってもよく、所定の実行エンジンが、このバイナリ・フォーマットを実行するエンジンであってもよい。
バイナリ・フォーマットは、Java仮想マシン・バイトコード、.Net CLRバイトコード、Palm OSバイトコード、Flashプレイヤ・バイトコード、Symbian OSバイトコード及びQualcomm Brewバイトコードであってもよく、実行エンジンがそれぞれ、Java仮想マシン、.Net CLR、Palm OS 、Flashプレイヤ、Symbian OS、Qualcomm Brewであってもよい。
本発明の他の形態において、総じて、本発明は、ネットワーク・コンピュータ・システム内でアプリケーションを配備する方法を提供する。ネットワーク・コンピュータ・システムは、サーバと、1若しくはそれ以上のクライアント・マシンを備える。クライアント・マシンは、ネットワーク接続を介して、サーバと接続する。またクライアント・マシンそれぞれが実行エンジンを備える。
上記方法は、クライアント・マシンのうち1つによる要求をサーバへ送信し、アプリケーションの1若しくはそれ以上のファイルをダウンロードする段階を備える。次に、サーバにより要求を受信し、クライアント・マシンの実行エンジンを特徴付ける。その後、アプリケーション・コードの1若しくはそれ以上のファイルの1若しくはそれ以上の実行コードがそれぞれサーバ・ストレージ内で利用可能か否かをチェックする。1若しくはそれ以上の実行コードは、クライアント・マシンの実行エンジンにより実行可能である。最後に、1若しくはそれ以上の実行コードが利用可能であるならば、これら実行コードはクライアント・マシンへダウンロードされる。
本発明の上記形態の実施例は、以下の1若しくはそれ以上の特徴を備えるものであってもよい。
ダウンロードされた1若しくはそれ以上の実行コードは、クライアント・ストレージ内でキャッシュされる。1若しくはそれ以上の実行コードは、クライアント・マシンのストレージからダウンロードされてもよい。もし1若しくはそれ以上の実行コードがサーバ・ストレージ内で利用可能でないならば、上記方法はアプリケーションの1若しくはそれ以上のファイルを1若しくはそれ以上の実行コードにそれぞれコンパイルする段階を備えてもよい。そして、これら実行コードがクライアント・マシンにダウンロードされる。
本発明の他の形態において、総じて、本発明は、コンピュータ・アプリケーション・プログラムを提供する。該コンピュータ・アプリケーション・プログラムは、少なくとも1つのマークアップ・ドキュメント、該少なくとも1つのマークアップ・ドキュメントに関連する少なくとも1つのビジネス・ロジック要素及びオブジェクト指向バインディング機構を備える。該オブジェクト指向バインディング機構は、少なくとも1つのマークアップ・ドキュメントを少なくとも1つのビジネス・ロジック要素にバインディングする。或いは、少なくとも1つのビジネス・ロジック要素を、少なくとも1つのマークアップ・ドキュメントにバインディングする。
本発明の上記形態の実施例は、以下の1若しくはそれ以上の特徴を備えるものであってもよい。
クライアント・ランタイム環境(Client Runtime Environment: CRE)が少なくとも1つのマークアップ・ドキュメントを受信するとともに、これを1つのオブジェクト指向表現に変換してもよい。オブジェクト指向表現は、1若しくはそれ以上のマークアップ・オブジェクト、1若しくはそれ以上のユーザ・インターフェース及び1若しくはそれ以上のデータ・セットを備えてもよい。少なくとも1つのビジネス・ロジック要素は、1若しくはそれ以上の手段を備え、該手段が、マークアップ・オブジェクト・イベントに対するイベント・ハンドラとして用いられる。オブジェクト指向バインディング機構は、マークアップ・オブジェクト・イベントを発火することにより、1若しくはそれ以上のマークアップ・オブジェクトにより、1若しくはそれ以上の手段を動作させてもよい。
オブジェクト指向バインディング機構は、更に、アプリケーション・プログラム・インターフェース(Application Program Interface: API)を介して、少なくとも1つのビジネス・ロジック要素により、1若しくはそれ以上のマークアップ・オブジェクトにアクセスするとともにマークアップ・オブジェクトを変更してもよい。APIは、マークアップ・オブジェクトAPI或いはドキュメント・オブジェクト・モデル(Document Object Model: DOM)APIであってもよい。
1若しくはそれ以上のマークアップ・オブジェクトは、親マークアップ・オブジェクトと子マークアップ・オブジェクトであってもよい。子マークアップ・オブジェクトは1若しくはそれ以上のマークアップ・オブジェクト・プロパティを備え、該マークアップ・オブジェクト・プロパティは、親マークアップ・オブジェクトから継承される。
1若しくはそれ以上のマークアップ・オブジェクト・プロパティは、ユーザ・インターフェース定義、データ・セット定義或いはイベント・ハンドラ定義であってもよい。
親マークアップ・オブジェクトは、1若しくはそれ以上のユーザ・インターフェース定義、1若しくはそれ以上のデータ定義及び1若しくはそれ以上のイベント・ハンドラを備えてもよく、子マークアップ・オブジェクトは、1若しくはそれ以上のユーザ・インターフェース定義、1若しくはそれ以上のデータ定義及び1若しくはそれ以上のイベント・ハンドラを親マークアップ・オブジェクトから継承してもよい。
1若しくはそれ以上のマークアップ・オブジェクトは、親マークアップ・オブジェクト及び子マークアップ・オブジェクトを備え、該子マークアップ・オブジェクトが親マークアップ・オブジェクトの1若しくはそれ以上のマークアップ・オブジェクト・プロパティを上書きし、これらを子マークアップ・オブジェクトの1若しくはそれ以上のマークアップ・オブジェクト・プロパティに置換してもよい。
少なくとも1つのマークアップ・ドキュメントがマークアップ言語で書かれてもよい。該マークアップ言語は、XML、XUL、SVG、Xforms、XAML、HTML、HTMLに関連する言語、テキスト、これらの組み合わせ及びその他であってもよい。1若しくはそれ以上のビジネス・ロジック要素は、プログラム言語で書かれてもよい。該プログラム言語は、Java、JavaScript、J#、C#、C+、C++、Visual Basic、ActionScript、XSL、XQuery及びXPathであってもよい。
本発明の他の形態において、総じて、本発明は、ネットワーク・アプリケーション・プログラムを提供する。
該ネットワーク・アプリケーション・プログラムは、1若しくはそれ以上のモジュールを備える。各モジュールは、少なくとも1つのマークアップ・ドキュメント、少なくとも1つのマークアップ・ドキュメントに関連する少なくとも1つのビジネス・ロジック及びオブジェクト指向バインディング機構を備える。該オブジェクト指向バインディング機構は、少なくとも1つのマークアップ・ドキュメントを少なくとも1つのビジネス・ロジック要素にバインディングし、また、少なくとも1つのビジネス・ロジック要素を少なくとも1つのマークアップ・ドキュメントにバインディングする。
本発明の他の形態において、総じて、本発明は、ネットワーク・コンピュータ・システムを提供する。
該ネットワーク・コンピュータ・システムは、サーバ・ランタイム環境(Server Runtime Environment: CRE)を備える1つのサーバと、ネットワーク・アプリケーション・プログラムと、1若しくはそれ以上のクライアント・マシンを備える。各クライアント・マシンは、クライアント・ランタイム環境(Client Runtime Environment: CRE)を備え、また、ネットワーク接続を介して、サーバに接続する。
SREは、ネットワーク・アプリケーション・プログラムを1若しくはそれ以上のクライアント・マシンに、ネットワーク接続を介して配備する。この配備は、まずネットワーク・アプリケーションを1若しくはそれ以上のモジュールに分割し、その後、個別に1若しくはそれ以上のモジュールをクライアント・マシンにダウンロードすることにより行われる。各モジュールは、少なくとも1つのマークアップ・ドキュメントを備える。
本発明の上記形態の実施例は、以下の1若しくはそれ以上の特徴を備えるものであってもよい。
ネットワーク・コンピュータ・システムは、更に少なくとも1つのビジネス・ロジックを備え、該ビジネス・ロジックは少なくとも1つのマークアップ・ドキュメントに関連する。また、ネットワーク・コンピュータ・システムは、オブジェクト指向バインディング機構を備え、該オブジェクト指向バインディング機構は、少なくとも1つのマークアップ・ドキュメントを少なくとも1つのビジネス・ロジック要素にバインディングし、また、少なくとも1つのビジネス・ロジック要素を少なくとも1つのマークアップ・ドキュメントにバインディングする。
CREは、ストレージを備え、該ストレージがダウンロードされた1若しくはそれ以上のモジュールを格納してもよい。CREは、ネットワーク・アプリケーション・プログラムのダウンロードされた1若しくはそれ以上のモジュールを互いに独立に実行してもよい。CREは、オフラインで、ネットワーク・アプリケーション・プログラムのダウンロードされた1若しくはそれ以上のモジュールを実行してもよい。
サーバが、コンパイラ・システムを備え、該コンパイラ・システムが、複数の入力ファイルを受信するとともに、該複数の入力ファイルのうち任意のファイルを複数の出力ファイルにそれぞれ変換してもよい。複数の入力ファイルが、ネットワーク・アプリケーションを備え、該ネットワーク・アプリケーションが、複数の異なるプログラム言語でそれぞれ書かれてもよい。複数の出力ファイルが、ネットワーク・アプリケーションの複数の対応する実行コードをそれぞれ備えてもよい。
1若しくはそれ以上のクライアント・マシンそれぞれが、実行エンジンを備え、該実行エンジンが出力ファイルのうち1つを受信し、対応する実行コードを実行してもよい。ネットワーク接続が、低い帯域幅を有してもよい。
本発明の他の形態において、総じて、本発明は、ネットワーク・コンピュータ・システム内で処理を実行する方法を提供する。該ネットワーク・コンピュータ・システムは、1つのサーバと、1若しくはそれ以上のクライアント・マシンを備える。クライアント・マシンは、ネットワーク接続を介して、サーバに接続する。
上記方法は、サーバ・ストレージ内に格納されたネットワーク・アプリケーションを、1若しくはそれ以上のモジュールに分割する段階を備える。各モジュールは、少なくとも1つのマークアップ・ドキュメントを備える。続いて、1若しくはそれ以上のクライアント・マシンのうち1つを介してユーザによる要求が配置され、1若しくはそれ以上のモジュールがダウンロードされる。次に、クライアント・マシンのCREにより、1つのモジュールが、クライアント・マシンのストレージ内で利用可能であるかチェックされる。そして、利用可能であるならば、モジュールがダウンロードされ、実行される。
本発明の上記形態の実施例は、以下の1若しくはそれ以上の特徴を備えるものであってもよい。
モジュールが更に、少なくとも1つのマークアップ・ドキュメントに関連する少なくとも1つのビジネス・ロジックと、オブジェクト指向バインディング機構を備えてもよい。該オブジェクト指向バインディング機構は、少なくとも1つのマークアップ・ドキュメントを少なくとも1つのビジネス・ロジック要素にバインディングし、また、少なくとも1つのビジネス・ロジック要素を少なくとも1つのマークアップ・ドキュメントにバインディングする。
上記方法は、以下の段階を備えてもよい。
もし、モジュールがクライアント・マシンのストレージ内で利用可能でないならば、サーバへの要求を送信し、モジュールをダウンロードする。続いて、サーバにより要求を受信し、クライアント・マシンの実行エンジンを特徴付ける。そして、クライアント・マシンの実行エンジンにより実行可能なモジュールの実行コード・ファイルが既にサーバ・ストレージ内で既に利用可能であるか否かをチェックする。もし、実行コード・ファイルが利用可能であるならば、該実行コード・ファイルをクライアント・マシンへダウンロードする。
上記方法が更に、クライアント・マシン・ストレージ内にダウンロードされた実行コード・ファイルをキャッシュし、クライアント・マシンによりモジュールを実行する段階を備えてもよい。もし、実行コード・ファイルがサーバ・ストレージ内で利用可能でないならば、モジュールを実行コード・ファイルにコンパイルし、その後実行コード・ファイルをクライアント・マシンにダウンロードする段階を備えてもよい。
本発明の他の形態において、総じて、本発明は、コンピュータ・アプリケーション・プログラム内でクライアント・イベントを取扱う方法を提供する。
該コンピュータ・アプリケーション・プログラムは、クライアント・サイド要素を備える。該クライアント・サイド要素は、クライアント・マシン内で動作する。またコンピュータ・アプリケーション・プログラムは、サーバ内で動作するサーバ・サイド要素を備える。クライアント・マシンは、ネットワーク接続を介して、サーバと接続する。
上記方法は、イベントを傾聴するリスナの存在の有無をチェックし、リスナがクライアント・サイド要素或いはサーバ・サイド要素にいるかを決定する。もしリスナが、クライアント・サイド要素にいるならば、リスナを具体化するとともに登録されたリスナ手段を動作させ、イベントを処理する。これにより、結果を作成する。続いて、該結果がマークアップ・ドキュメントであるか直接のクライアント・ドキュメント・オブジェクト・モデル(Document Object Model: DOM)アプリケーション・プログラム・インターフェース(Application Program Interface: API)操作であるかをチェックし、もし結果が、マークアップ・ドキュメントであるならば、該マークアップ・ドキュメントを表示する。
本発明の上記形態の実施例は、以下の1若しくはそれ以上の特徴を備えるものであってもよい。
もし結果が直接のクライアントDOM API操作であるならば、上記方法が、APIコールを実行し、結果を表示する段階を備えてもよい。もしリスナが、サーバ・サイド要素に存在するならば、該方法が更に、イベントをサーバに送信し、イベントを処理し、サーバ・サイド・ハンドラを動作させる段階を備えてもよい。サーバ・サイド・ハンドラは、イベントを処理する。これによりサーバ結果を作成する。続いて、サーバ結果をクライアント・マシンに送信し、サーバ結果を表示する。
本発明の他の形態において、総じて、本発明は、マークアップ・ドキュメントを1若しくはそれ以上のビジネス・ロジック・オブジェクトにバインディングする方法を提供する。
上記方法は、マークアップ言語を用いて、マークアップ・ドキュメントをコード化し、オブジェクト指向プログラム言語を用いて1若しくはそれ以上のビジネス・ロジック・オブジェクトをコード化し、マークアップ・ドキュメントを1若しくはそれ以上のビジネス・ロジックに関連付ける段階を備える。
続いて、マークアップ・ドキュメントのオブジェクト指向表現を構築し、これにより、1若しくはそれ以上のマークアップ・ドキュメントを作成する。そして、オブジェクト指向表現により、1若しくはそれ以上のマークアップ・オブジェクト・イベントを発火させ、これによりビジネス・ロジック・オブジェクトを動作させ、ビジネス・ロジック・オブジェクトは、イベントを処理する。最後に、1若しくはそれ以上のビジネス・ロジック・オブジェクトによりマークアップ・オブジェクトを操作する。ビジネス・ロジック・オブジェクトは、マークアップ・オブジェクトAPIやドキュメント・オブジェクト・モデル(Document Object Model: DOM)APIを介してマークアップ・オブジェクトの操作を行ってもよい。
本発明の効果のうち1若しくはそれ以上が以下に示される。
コンピュータ・システムは、中央サーバから、ネットワーク接続を介してサーバに接続された任意のクライアント・マシンへのネットワーク・アプリケーションの区割された引渡し並びに実行を可能とする。ネットワーク接続は低い帯域幅ネットワークであってもよい。クライアント・マシンが処理プラットフォームとデバイスの任意の種類を備えるものであってもよい。ネットワーク・アプリケーションが、マークアップ・ドキュメント、ビジネス・ロジック要素及びオブジェクト指向バインディング機構を備え、該オブジェクト指向バインディング機構がマークアップ・ドキュメントをビジネス・ロジック要素にバインディングし、また、ビジネス・ロジック要素をマークアップ・ドキュメントにバインディングしてもよい。
マークアップ・ドキュメントは、任意の種類のマークアップ言語で書かれてもよい。該マークアップ言語は、XML、XUL、SVG、Xforms、XMLに関連する言語、HTML、HTMLに関連する言語、テキスト、これらの組み合わせ及びその他であってもよい。
ビジネス・ロジック要素は、ソース・コードを備え、該ソース・コードが任意のプログラム言語で書かれてもよい。該プログラム言語が、Java、JavaScript、J#、C#、C+、C++、Visual Basic、ActionScript、XSL、XQuery、XPath及びその他を備えるものであってもよい。
コンパイラ・システムはソース・コードを任意の種類の実行可能なバイト・コードに変換する。このコンパイラ・システム・コンフィギュレーションは、アプリケーションのプログラム側とアプリケーションの実行側両面における自在性を提供する。
本発明の1若しくはそれ以上の実施形態は、以下に図面並びに記載にて説明される。本発明の他の特徴、目的並びに優位点は、以下の好適な実施形態に係る説明、図面及び請求の範囲から明らかになる。
図2を参照する。ネットワーク・ベース・コンピュータ・システム(70)は、サーバ(72)と、クライアント・マシン(73)、(74)、(75)及び(76)を備える。該クライアント・マシンには、パーソナル・コンピュータ(73)、ノート・パソコン(74)、その他のコンピュータ・デバイス(75)、及びワイヤレス通信デバイス(76)が含まれる。クライアント・マシン(73)、(74)、及び(75)は、サーバ(72)にネットワーク接続(78)を介して接続されている。クライアント・マシン(76)は、ワイヤレス・ネットワーク接続(79)を介してサーバ(72)に接続されている。追加的なクライアント・マシンをいくつか用いてもよい。これらの追加的なクライアント・マシンとしては、パーソナル・コンピュータ、ノート・パソコン、リナックス・マシン、ワークステーション、コンピューティング回路、有線通信デバイスなどが挙げられる。該有線通信デバイスとしては、電話やテレビなどが挙げられる。ネットワーク接続(78)としては、インターネット、World Wide Web (WWW)、 Wide Area Network (WAN)、 Local Area Network (LAN)、 Personal Area Network (PAN)、電気通信ネットワークが挙げられる。ワイヤレス通信デバイス(76)としては、携帯電話、personal digital assistant (PDA)、ポケットベル、ワイヤレスノートパソコン、パーソナル・コンピュータ、テレビ、及びそれらのプログラマブル・バージョン又はそれらを組み合わせたものが挙げられる。ワイヤレス・ネットワーク(79)としては、wireless wide area network (WWAN)、wireless local area network (WLAN)、wireless personal area network (WPAN)、或いは専用通信網が挙げられる。
図3を参照する。図3はブロック線図であり、単純なネットワーク・コンピュータ・システム(200)のソフトウェア要素及びハードウェア要素を表す。該ネットワーク・コンピュータ・システム(200)は、アプリケーション・サーバ(210)、クライアント・マシン(220)、ウェブ・サーバ(219)を備える。アプリケーション・サーバ(210)は、ウェブ・サーバ(219)後方で動作するとともに、サーバ・アプリケーション・コード(或いはサーバサイド・ビジネス・ロジック)(212)を実行する。ウェブ・サーバ(219)は、マークアップ・ドキュメント或いはサーバサイド・アプリケーション・コード(212)により生成された電子メッセージを、クライアント・ウェブ・ブラウザ(230)に伝達する。該クライアント・ウェブ・ブラウザ(230)は、クライアント・マシン(220)内に常駐する。電子メッセージとは、情報交換のために電子的に伝達されるコミュニケーション・メッセージである。マークアップ・ドキュメントとは、電子ドキュメント、つまりXML或いはHTMLなどのマークアップ言語を用いて書かれたファイルのことをいう。マークアップ言語とは電子ドキュメントのコンテンツを記述するための慣例的な言語である。該電子ドキュメントは、コンピュータ・アウトプット・デバイス(例えば、コンピュータ・モニターなど)上でみたり、該デバイス上に印刷したりするためのものである。マークアップ言語ドキュメントは、特に、テキスト、イメージ、JavaScript、ハイパーリンクなどを含んでもよい。リアルタイム双方向性高信頼性メッセージング・システム(240)は、クライアント・ウェブ・ブラウザ(230)とウェブ・サーバ(219)の間で、HTTPウェブ接続を介して、メッセージを伝達する。アプリケーション・サーバは、サーバサイド・アプリケーション・コード(212)に加えて、サーバ・ランタイム環境(Server Runtime Environment, SRE)(214)を備える。SRE(214)は、HTTPウェブ・サーバ(219)の後方、且つアプリケーション・サーバ(210)内で動作する。SRE(214)はサーバ・コンパイラ(216)、サーバ・キャッシュ(218)、通信モジュール(215)、及びその他の機能的モジュール(217)を備える。機能的モジュール(217)は、アプリケーション・サーバ・インターフェース、XMLパーサ、クラスタリング、ストレージ、及び実行エンジンを備える。アプリケーション・サーバ・インターフェース・モジュールは、SRE(214)がアプリケーション・サーバ(210)内で動作することを可能にするとともに、アプリケーション・サーバ(210)内のアプリケーションがSREの機能性(ファンクショナリティ:functionality)にアクセスすることを可能にする。XMLパーサ・モジュールは、様々なクライアント・マシン或いはその他の情報ソース(例えば、その他のバックエンド接続)からのXMLドキュメントをパースする。パースの結果は、ストレージ・モジュール内に記憶される。クラスタリング・モジュールは、SREのクラスタリングを補助する。実行エンジン・モジュールは、コンパイルされたサーバエンド・アプリケーション・コード(212)を実行する。
クライアント・マシン(220)は、クライアント・ランタイム環境(CRE)(224)を備える。CRE(224)は、クライアント・ウェブ・ブラウザ(230)及びクライアントサイド・アプリケーション・コード(又はクライアントサイド・ビジネス・ロジック)(222)外部で動作する。他の実施例では、CREは、クライアント・ウェブ・ブラウザ(230)内で動作する。クライアントサイド・アプリケーション・コード(222)は、エクステンシブル・マークアップ言語(Extensible Markup Language、XML)ドキュメント及び手続コードからなる。クライアント・マシン(220)は、クライアント・サイド・ファイアウォール(244)により保護されており、ウェブ・サーバ(219)は、サーバサイド・ファイアウォール(242)により保護されている。CRE(224)は、マークアップ・ドキュメントを処理するとともに、クライアントサイド・アプリケーション・コード(222)を実行する。CRE(224)は、クライアント・キャッシュ(226)、通信モジュール(225)、状態同期及び継続化モジュール(228)、及びその他の機能的モジュール(227)を備える。その他の機能的モジュール(227)としては、XMLパーサ、ユーザ・インターフェース、ストレージ、セキュリティ、及び実行エンジンが挙げられる。XMLパーサは、アプリケーション・サーバ(210)からのXMLドキュメントをパースする。パース結果は、アプリケーションのクライアント・サイドの状態の一部としてクライアント・キャッシュ(226)内に記憶されてもよい。ユーザ・インターフェース・モジュールは、ユーザ・インターフェースを表示するとともに、アプリケーションのXML記述に従ってユーザと情報のやりとりを行う。実行エンジン・モジュールは、クライアントサイド・アプリケーション・コード(222)を動作させることが可能である。クライアント・キャッシュ(226)は、アプリケーションのクライアント・サイドの状態を保守するとともに、該CREにより自動的に更新される。同期及び継続化モジュール(228)は、クライアント・キャッシュ(226)を、アプリケーション・サーバ(210)と同期させるとともに、クライアント・キャッシュ(226)を継続的ストレージに保存及び/又は継続的ストレージから検索する。
CRE(224)は、SRE(214)により集中管理される。CRE(224)は、自動的にアプリケーション・サーバ(210)からダウンロードされ、ユーザが最初にクライアント・アプリケーションにアクセスしたときに、クライアント・マシン(220)にインストールされる。初期インストールの後は、SRE(214)が自動的にCRE(224)のヴァージョンアップ並びに更新を管理する。異なるクライアント・プラットフォームに対しては、異なるCRE(224)が用いられる。例えば、Java仮想マシン、 .NET CLR、 或いはFlashプレイヤには、それぞれ異なるCREが用いられる。これら3つのクライアント・プラットフォームの実行アプリケーション・コード・フォーマットはそれぞれ、Java バイトコード、.NET CLR バイトコード、Flash バイトコードである。アプリケーション・コード(222)は、これら3つのクライアント・プラットフォームのための、3つの異なる実行コード・フォーマット内に適宜伝達される。
図4を参照する。サーバ・コンパイラ(216)は、ソフトウェア・プログラムを備える。該ソフトウェア・プログラムは、何らかのサポートされたプログラム言語で書かれたソース・コードを、適宜サポートされた実行フォーマットに変換する。図4に示すとおり、ソース・コードは、プログラム言語の中でも特にJava、C#、JavaScript、及びXMLなどで書かれる。サポートされた実行フォーマットとしては、クライアント・プラットフォームによるが、特にJava バイトコード、.NET CLR バイトコード、Flash バイトコードが挙げられる。例えば、クライアント・プラットフォームがJava仮想マシン(360)を動作させているとき、入力ソース・ファイルは全て、書かれている言語に関わらず、サーバ・コンパイラ(216)によってJava バイトコード実行ファイルにコンパイルされる。同様に、クライアント・プラットフォームが、.NET CLRを動作させるときは、全てのソース・コード・ファイルは.NET CLR バイトコードにコンパイルされる。
サーバ・コンパイラ(216)は、複数の特定の汎用コンパイラ、特に、汎用Java バイトコード・コンパイラ(312)、汎用.NET CLR(Common Language Runtime )コンパイラ(314)、汎用JavaScriptコンパイラ(316)、汎用Flash SWFコンパイラ(318)、汎用XMLコンパイラ(320)を備える。サーバ・コンパイラ(216)はまた、サーバ・コンパイラ・制御ロジック(310)を備える。サーバ・コンパイラ制御ロジック(310)は、クライアント・プラットフォームの種類を検知するとともに、クライアント・プラットフォームの適切な実行コードへのコンパイル並びにキャッシングを実施し、また適切な実行コードを対応するクライアント・プラットフォームに伝達する。サーバ・コンパイラ(216)が任意のクライアント・マシンから要求を受け取ると、制御ロジック(310)は、まず該クライアント・マシンを特徴付けて、どのJava仮想マシンフォーマットが該クライアント・マシンによりサポートされているかを特定する。サポートされたフォーマットのコンパイルされた実行コードが、サーバ・キャッシュ(218)で利用可能であって、且つソース・ファイルが最新のコンパイルから変更されていない場合は、サーバ・コンパイラ制御ロジック(310)は、キャッシュされた実行コードを、直接クライアント・マシンに送る。ソース・ファイルが、最新のコンパイルから変更されている場合は、制御ロジック(310)は、サーバ・コンパイラ(216)にプロンプトする。これにより、制御ロジック(310)は、該ソース・ファイルを検索するとともに、該ソース・ファイルを適切な実行コードにコンパイルし、該実行コードをサーバ・キャッシュ(218)内にキャッシュし、また実行コードを該クライアント・マシンに送信する。
各汎用コンパイラは、任意のプログラム言語で書かれた入力ファイルを受信する。該プログラム言語としては、Java、C#、JavaScript、C+、C++、Visual Basicが挙げられる。各汎用コンパイラはまた、クライアント・プラットフォーム固有の実行フォーマットで書かれた出力ファイルを伝達する。入力ファイル(302)、(304)、(306)及び出力ファイル(332)、(334)、(336)、(340)は、XMLで書かれたマークアップ・ドキュメントを更に備えてもよい。
図4Aの例を参照する。汎用Javaバイトコード・コンパイラ(312)は、ソース・コード・ファイルを受信する。該ソース・コード・ファイルは、Java(302)、C#(304)、JavaScript(306)などのプログラム言語で書かれている。該ソース・コード・ファイルはまた、Java仮想マシンで実行可能なJavaバイトコード・ファイル(332)を伝達する。汎用Javaバイトコード・コンパイラ(312)は、複数のカスタム開発の言語コンパイラ(例えばJavaScriptコンパイラ(353))、複数の市販の言語固有コンパイラ(例えばJavaコンパイラ(351)、J#コンパイラ(352)、C#コンパイラなど)、及び制御ロジック(355)を含む。Javaコンパイラ(351)はカリフォルニア州Santa ClaraのSun Microsystems社から購入可能であり、J#コンパイラ(352)はワシントン州Redmondのマイクロソフト社から購入可能である。JavaScriptコンパイラ(353)は、Nexaweb社によりカスタム開発される。JavaScriptコンパイラ(353)はJavaScriptファイルをJavaバイトコードにコンパイルする。同様に、汎用.NET CLRコンパイラ(314)、汎用JavaScriptコンパイラ(316)、汎用Flash SWFコンパイラ(318)は、プログラム言語で書かれた入力ファイルを受信するとともに、バイトコード・ファイルを伝達する。該バイトコード・ファイルは、それぞれ.NET CLRエンジン、JavaScriptエンジン、Flashプレイヤで書かれている。制御ロジック・モジュール(355)は様々なプログラム言語コードを取り扱うためのルールを含むとともに、入力ファイルを処理する。入力ファイルが受信されると、制御ロジック・モジュール(355)はソース・コードがどの言語で書かれているかをチェックし、適切な言語固有コンパイラを選択する。該言語固有コンパイラは、ソース・コード・ファイルを、所望の実行フォーマットの実行コードにコンパイルする。例えば、汎用Javaバイトコード・コンパイラ(312)の制御ロジック(355)ならば、JavaScriptコンパイラ(353)を選択してJavaScriptソース・ファイルをコンパイルし、Javaコンパイラ(351)を選択してJavaソース・ファイルをコンパイルする。
図4Bを参照する。汎用XMLコンパイラ(320)は様々なマークアップ言語を用いて書かれたファイルを受信する。このマークアップ言語としては例えば、XHTML(362)、x-Forms(364)、HTML(365)、XAML(370)、SVG(368)が挙げられる。汎用XMLコンパイラは(320)はまた、XMLコード(340)を伝達する。XMLコード(340)は、XML実行エンジン(366)により実行される。汎用XMLコンパイラ(320)は、複数のマークアップ言語固有コンパイラ及び制御ロジック(355)を備える。このマークアップ言語固有コンパイラとしては例えば、XHTMLコンパイラ(371)、XAMLコンパイラ(372)、SVGコンパイラ(373)、制御ロジック(355)が挙げられる。制御ロジック(355)は、マークアップ言語固有コンパイラを選択並びに起動するとともに、ソース・ファイルをコンパイルする。該ソース・ファイルは特定のマークアップ言語で書かれている。該言語固有コンパイラは、マークアップ・ドキュメントを取得するとともに、該マークアップ・ドキュメントを新たなマークアップ・ドキュメントに変換する。この新たなマークアップ・ドキュメントは、該実行エンジンが要求する実行フォーマットで書かれている。例えば、もし実行エンジンがSVGレンダリング・エンジン(どのようにSVGをレンダリングするかを知っている)であり、且つソース・コード・ファイルがXAMLを用いて書かれているならば、XAMLコンパイラはXAML入力を取得し、これをSVGフォーマットに変換する。このコンパイル工程は、XMLスタイルシート変換(XML Stylesheet Transformation、XSLT)或いは他の字句分析及び変換を用いて可能になる。
図4に示すごとく、コンパイルされたバイトコード・ファイル(332)、(334)、(336)、(340)が、サーバ・キャッシュ(218)内に記憶されてもよい。クライアント・マシン(220)のCRE(224)が特定のファイルを要求すると、SRE(214)はCRE(224)の特定の実行フォーマットを決定する。この特定のフォーマットが、既にコンパイルされて、サーバ・キャッシュ(218)内に記憶されているか否かをチェックする。該特定のコンパイルされたバイトコードが、サーバ・キャッシュ(218)内に存在し、且つ該コードが最後にコンパイルされてから変更されていないならば、SRE(214)は、該実行ファイルをCRE(220)にダウンロードし、これをクライアント・キャッシュ(226)内に記憶させる。もしそうでない場合は、SRE(214)は、サーバ・コンパイラ(216)を動作させ、まず特定の実行フォーマットの要求されたコードをコンパイルし、その後これをCRE(224)にダウンロードするとともに、クライアント・キャッシュ(226)内に記憶させる。
本発明は、オブジェクト指向のプログラミング方法論を利用して、オブジェクト指向のアプリケーション・プログラムを開発するものである。オブジェクト指向のアプリケーション・プログラムは通常、「オブジェクト・モデル」を用いて、問題をモデル化する。オブジェクト・モデルは、該問題の要素を表現するオブジェクトのクラスを定義する。オブジェクトのクラスは、該クラスと、その他のクラス、該クラスのオブジェクトと関連するデータとプロパティ(或いは属性)、及び該クラスのオブジェクト上で実行可能なオペレーション(或いはタスク)との関連で定義される。オブジェクト指向のアプリケーション・プログラムの実行中に、該オブジェクト・モデル内のクラスのインスタンス(実際のオブジェクト)(以下「オブジェクト」という)が作られるとともに操作される。これら「オブジェクト」についての処理は、これら「オブジェクト」と関連するビジネス・ロジック要素内に定義される「メソッド」を要求することにより行われる。例えば、口座管理プログラムでは、様々な口座がプログラム・オブジェクトとして定義される。各オブジェクト、すなわち口座は、口座名、口座番号、該口座の預金量などの属性を備える。これらの口座オブジェクトと関連するタスクを、「get account number」、「set account name」、「set account amount」などとしてもよい。オブジェクトは、イベント或いはメッセージを介して、互いと相互作用するとともに、また該ビジネス・ロジック・コードと相互作用する。オブジェクトは、イベントを発火(或いはメッセージを送信)してもよい。これにより、該オブジェクトは自身のプロパティ或いは状態を変更する。イベントは、これらオブジェクトと関連する、サブプログラム或いはビジネス・ロジック要素により、受信並びに処理される。オブジェクト指向のプログラム言語は、当技術分野ではよく知られている。また、「Programming languages」(第11章、435−483ページ、Robert W. Sebesta編集)に記述されている。
図5を参照する。オブジェクト指向アプリケーション・コード(400)は、1つ若しくはそれ以上のマークアップ・ドキュメント(402)及び1つ若しくはそれ以上のビジネス・ロジック要素(406)を備える。マークアップ・ドキュメント(402)は、XMLマークアップ言語を用いて書かれたファイルである。ビジネス・ロジック要素(406)はプログラム・オブジェクト上でタスクを実行するための指示を含む。これら指示は、プログラム言語(例えばJava、JavaScript、C#、Visual Basic(VB)、J#など)で書かれたソース・コード・ファイルとして形成される。ビジネス・ロジック要素(406)もまたプログラム・オブジェクトである。クライアント・ランタイム環境(Client Runtime Environment, CRE)(224)は、マークアップ・ドキュメント(402)を受信するとともに、これらをオブジェクト指向表現、すなわちマークアップ・オブジェクト(404)に変換する。マークアップ・オブジェクト(404)は、ユーザ・インターフェース(User Interface、UI)(401)或いはデータ(403)であってもよい。マークアップ・オブジェクト(404)それぞれが、該オブジェクトと関連するイベントを備えてもよい。例えば、入力フィールド又はボタンを備えるUIマークアップ・オブジェクトの場合のイベントとしては、ボタン若しくは入力フィールドをハイライトする、該フィールドにテキストを入力する、或いは該ボタンをクリックするなどが挙げられる。該イベントは、該ビジネス・ロジック要素により受信されるとともに処理される。これにより、該オブジェクトの状態が変更される。ユーザ・インターフェースが入力フィールドを備えて、テキストが該入力フィールドに入力される例では、ビジネス・ロジック要素は該UIを変更して入力されたテキストを表示する。マークアップ・ドキュメント(405)及びビジネス・ロジック要素(406)のオブジェクト指向表現は、マークアップ・ビジネス・ロジック・バインディング機構を介してバインディングされている。
図6を参照する。マークアップ・ビジネス・ロジック・バインディング機構(500)は、マークアップ・オブジェクトをビジネス・ロジック要素にバインディングする段階(520)と、該ビジネス・ロジック要素をマークアップ・オブジェクトにバインディングする段階(530)を備える。マークアップ・オブジェクトをビジネス・ロジック要素にバインディングする段階(520)では、マークアップ・ドキュメント(550)内に定義されたマークアップ・オブジェクト(510)は、ビジネス・ロジック要素(540)を動作させる。該動作は、マークアップ・オブジェクト・イベント(521)を発火することにより行われる。ビジネス・ロジック要素(540)は、マークアップ・オブジェクト・イベントのためのイベント・ハンドラとして用いられるメソッドの定義を含む。イベントを発火すると同時に、CREは対応するビジネス・ロジック要素内の、関連するメソッドを起動させるとともに、該イベントに関する必要な情報を該メソッドに受け渡し、また該メソッドを実行する。いくつかの入力フィールドを備えるユーザ・インターフェース・マークアップ・オブジェクトの前記の例では、イベントの発火は、ユーザの電話番号を適切な入力フィールドに入力することにより行われてもよい。該ビジネス・ロジック要素は、このマークアップ・オブジェクト・イベントを受信するとともに、その妥当性を検査し、そして該電話番号を表示に適するように整形する。
ビジネス要素をマークアップ・オブジェクトにバインディングする段階(530)では、ビジネス・ロジック要素(540)は、マークアップ・オブジェクト・アプリケーション・プログラム・インターフェース(Application Program Interface、API)或いはドキュメント・オブジェクト・モデル(Document Object Model、DOM)APIを介して、マークアップ・オブジェクト(510)にアクセス可能であり、また該マークアップ・オブジェクト(510)を変更可能である。一つの実施形態では、CRE(224)は、マークアップ・ドキュメント(550)をパースするとともに、DOM内に記憶させる。CRE(224)はまた、このDOMをビジネス・ロジック要素(540)により動作可能な一連のAPIとして公開する。ビジネス・ロジック要素(540)はこのDOM APIを動作させて、該DOM内に記憶されたマークアップ・ドキュメント(550)をプログラムで操作する。このマークアップ・オブジェクトAPI(531)を介したフィードバック機構は、「フォームの妥当性検査」段階、或いはマークアップ・オブジェクト(510)の変更に至る内部処理段階であってもよい。「フォームの妥当性検査」段階の例では、ユーザは該UIに3桁の電話番号を入力する。ビジネス・ロジック要素がこの3桁の電話番号が妥当でないと認識すると、入力を受け入れないとともに該UI内にエラーを表示する。該ビジネス・ロジック要素はまた、妥当な電話番号を要求する。
双方向バインディング機構(500)は、ビジネス・ロジック、表現、及びデータを明確に分離することを可能にする。ウェブ・ブラウザでのHTMLとJavaScriptの双方向モデルは、同様の構造を共有する。しかしながら、本発明は、オブジェクト指向バインディングを可能にするという点で、これら先行技術のモデルと異なる。マークアップ・ドキュメントはオブジェクト指向表現(マークアップ・オブジェクト)に変換され、またビジネス・ロジック要素もプログラム・オブジェクトとなる。オブジェクト指向バインディングは、その後、これらオブジェクト(すなわちマークアップ・オブジェクト及びプログラム・オブジェクト)間でバインディングを行う。先行技術の例では、ビジネス・ロジックは、スクリプトとして書かれている。該スクリプトはオブジェクト指向ではない。また、バインディングはHTMLオブジェクトに対するプログラム・メソッド間で行われる。本発明においては、このオブジェクト指向バインディングは、複雑なアプリケーションの開発を可能にするとともに、プログラム言語及び実行フォーマットの独立性を提供する。換言すると、ビジネス・ロジック・コードは任意のプログラム言語で書かれてよい。該プログラム言語としては、Java、JavaScript、C#、J#、VB、C+などが挙げられる。マークアップ・ドキュメントは任意のマークアップ言語で書かれてよい。該マークアップ言語としてはXML、テキスト、HTML及びその他が挙げられる。プログラム言語がオブジェクト指向でない場合は、ソース・コードが、汎用コンパイラによってオブジェクト指向実行コードにコンパイルされてもよい。いくつかのXML仕様(XUL(XML User Interface Lnaugage)、SVG(Scalable Vector Graphics)、XFromsなど)を用いてもよい。これらXML言語の組み合わせによって、全てのネットワーク・アプリケーションの全ての機能をサポートする機能性に富んだ環境が作られる。これらネットワーク・アプリケーションとしては、通常のWindows グラフィカル・ユーザ・インターフェース、フォーム、2Dグラフィックス、及びアニメーションなどが挙げられる。
図7に、マークアップ・ビジネス・ロジック・バインディング機構(500)のコード例(600)を示す。マークアップ・ドキュメント(610)はXMLを用いて書かれている。マークアップ・ドキュメント(610)はクライアントサイド・ロジック・オブジェクト「bean1」(621)、親ボタン「parentBtn」(632)、子ボタン「childBtn」(635)、データ・オブジェクト「companyInfo」(641)を定義する。クライアントサイド・ロジック・オブジェクト「bean1」(621)はクライアントサイド・プログラム・オブジェクトを定義する。該クライアントサイド・プログラム・オブジェクトのソース・コードは「com.nexaweb.clientbean.DemoBean」である。該ソース・コードは、ビジネス・ロジック要素(650)とこのマークアップ・ドキュメントを効果的に関連付ける。ビジネス・ロジック要素(650)のためのソース・コードはJavaプログラム言語を用いて書かれているとともに、Javaクラスを3つの異なるメソッド(「init」(660)「doClick」(670)「doOver」(680))で定義する。マークアップ・オブジェクトをビジネス・ロジック要素にバインディングする段階(520)は、ビジネス・ロジック要素(650)の3つのメソッド(660)、(670)、(680)を、3つのマークアップ・オブジェクト(621)、(632)、(635)により発火されるイベントのためのイベント・ハンドラとして用いることにより、実現される。メソッド(660)は、マークアップ・オブジェクト(621)のためのイベント「onload」を処理する。メソッド(670)は、親ボタン(633)のためのイベント「oncommand」を処理する。メソッド(680)は、子ボタン(635)のためのイベント「onmouseover」を処理する。これらのイベントが起こると常に、CREは、該ビジネス・ロジック要素内の対応するメソッドを動作させて、これを処理する。該ビジネス・ロジック要素をマークアップ・オブジェクトにバインディングする段階(530)の例を、ビジネス・ロジック要素(650)内の、該3つのメソッド(660)、(670)、(680)の実施例として示す。例えば、CREにより公開されるDOM APIを用いて、「doClick」メソッド(670)はイベント情報を検査するとともに、イベント・ソース(ユーザがクリックしたマークアップ・オブジェクトでなければならない)を検索し、そしてこのマークアップ・オブジェクトの属性「text」を処理結果として設定する。例えば、親ボタン・オブジェクト(632)をクリックすると、テキスト「You clicked button: parentBtn」がUIスクリーン(633)に表示される(図7A参照)。同様に、子ボタン・オブジェクト(635)をクリックすると、テキスト「You clicked butoon:childBtn」がUIスクリーン(636)に表示される(図7B参照)。
図8に、本発明がどのようにしてオブジェクト指向マークアップ・オブジェクト継承を実現するかを示す。この処理は、マークアップ・ドキュメントの作成及び管理を大幅に簡略化するとともに、マークアップ・ドキュメントの自由度を向上させる。親マークアップ・オブジェクト(710)は、ユーザ・インターフェース定義(720)、オブジェクト固有データ定義(730)、及びオブジェクト動作(或いはイベント・ハンドラ)定義(740)を含む。子マークアップ・ドキュメント(750)はユーザ・インターフェース定義(760)、オブジェクト固有データ定義(770)、及びオブジェクト動作(或いはイベント・ハンドラ)定義(780)を含む。子マークアップ・オブジェクト(750)は、親マークアップ・オブジェクトから、これらUIの全てと、データ、動作定義(760)、(770)、(780)それぞれを継承する。若しくは、子マークアップ・オブジェクト(750)は対応する親定義を上書きして新たな定義を追加してもよい。このオブジェクト指向アプローチは、オブジェクト属性の継承並びに変更を可能にするだけでなく、全く異なるオブジェクト動作を可能にする。これは、親オブジェクトのイベント・ハンドラ定義を子固有イベント・ハンドラに置換することにより行われる。図7のコード例に戻る。「childBtn」(635)は「parentBtn」(632)から、全ての定義(UI,データ、及び動作)を継承する。しかしながら、マークアップ・オブジェクト固有データは変更される。すなわち、「id」が「parentBtn」から「chileBtn」に変更される。同様に該ユーザ・インターフェース定義が変更される。すなわち属性「text」の値が変更されて、「You clicked button: parentBtn」に替わって「You clicked button: childBtn」が表示される。「childBtn」は「parentBtn」からオブジェクト動作を継承する。また、イベント「oncommand」は、子マークアップ・オブジェクトのためのメソッド「bean1.doClick ()」(670)を動作させる。子マークアップ・オブジェクト(750)もまた、親マークアップ・オブジェクト(710)の動作定義を変更する。該変更は、イベント「onmouseover」に対するメソッド「bean1.doOver ()」(680)をバインディングすることにより行われる。また該バインディングにより、イベント「onmouseover」は親マークアップ・オブジェクトのためのメソッド「bean1.doOver ()」(680)を動作させる。
アプリケーション・プログラムは通常、多ギガバイトファイルである。このような容量の大きいファイルをメモリにロードすると、長時間の遅滞を招くとともに、ハードウェア要素に多大な負担をかける。これは高速のCPU、大きなメモリ、大きなストレージ、及び高速のネットワークが必要となるからである。これら全てはコストがかかるのに加えて、性能の問題がある。本発明はこれら問題を、アプリケーション・コードを独立した小さなモジュールに分離することにより解決する。独立した小さなモジュールそれぞれは、別個にダウンロード並びに実行可能である。図9を参照する。アプリケーション・コード(400)はN個のモジュール(モジュール1(410)、モジュール2(450)、モジュール3(480)、...モジュールN(図示せず))を備える。各モジュールは、1つ若しくはそれ以上のマークアップ・ドキュメントを備えるとともに、選択的に1つ若しくはそれ以上のビジネス・ロジック要素を備える。図9の例においては、モジュール1(410)はマークアップ・ドキュメント(420)とビジネス・ロジック要素A(430)及びビジネス・ロジック要素B(440)を備える。マークアップ・ドキュメント(420)は2つのマークアップ・オブジェクト(すなわちユーザ・インターフェース(UI)(422)及びデータ・ファイル(424))を定義する。モジュール2(450)はビジネス・ロジック要素C(470)及びマークアップ・ドキュメント(460)を備える。マークアップ・ドキュメント(460)は、ユーザ・インターフェース(462)及びデータ・ファイル(464)を定義する。モジュール3(480)は、ビジネス・ロジック要素A(430)、ビジネス・ロジック要素E(494)、及びマークアップ・ドキュメント(490)を備える。マークアップ・ドキュメント(490)は、ユーザ・インターフェース(492)及びデータ・ファイル(493)を定義する。複数の異なるモジュールがビジネス・ロジック要素を共有してもよい。例えば、モジュール3(480)は、モジュール1(410)と同じビジネス・ロジック要素A(430)を用いる。この場合、図3のシステム(200)は、サーバサイド・キャッシング(216)に加えて、クライアント・サイド・キャッシング(226)を用いる。これにより、同一のモジュール或いは要素を2度以上ロードすることを防止する。以上のように、アプリケーション・コード(400)全体が、多数のXMLドキュメント及び多数のビジネス・ロジック要素からなるが、各モジュールは1つのXMLドキュメントと、数個のコンパイルされたビジネス・ロジック要素しか必要としない。したがって、各モジュールには小さな領域しか必要としない。各モジュールが小さな領域しか必要としないことで、アプリケーション・コードを高速でダウンロードすることが可能となる。更に、一度モジュールがクライアント・マシンにダウンロードされると、該モジュールは該クライアント・キャッシングに記憶されるので、以降新たなダウンロードなしに再利用可能である。サーバはまた、既にクライアント・マシンにダウンロードされるとともにクライアント・キャッシュに記憶されていたモジュールの自動更新を行う。
図10を参照する。クライアント・マシンを介してアプリケーションを動作する段階(800)は、以下の段階からなる。ユーザがネットワーク・アプリケーションを使おうとすると、ユーザはCREを開始して、クライアント・プログラムを開始するという要求を入力する(802)。CREは、要求を受信して(804)、初期モジュールが、ローカル・クライアント・キャッシュ内で利用可能であるか否かをチェックする(806)。モジュールがローカル・キャッシュ内で利用可能である場合(807)は、CREはサーバ(SRE)に要求を送信して、特定のモジュールをダウンロードさせる(808)。サーバは、CREに対する特定のモジュールを記述するマークアップ・ドキュメントを伝達する(810)。CREはこのマークアップ・ドキュメントがキャッシュされる必要があるか否かを問い合わせる(812)。この問い合わせは、ドキュメント・プロパティ或いはコンフィギュレーション情報をチェックすることにより行われる。このマークアップ・ドキュメントがキャッシュされる必要がある場合(813)は、CREはこれをローカル・クライアント・キャッシュ内にキャッシュ(814)した後、次の質問に進む(815)。同様に、マークアップ・ドキュメントがローカル・クライアント・キャッシュ内にキャッシュされる必要がない場合(811)も、CREは次の質問に進む(815)。モジュールがローカル・キャッシュ内で利用可能である場合(809)も、CREは、ダウンロードする段階を省略して、次の質問に進む(815)。次に、CREはモジュール・プロパティ或いはコンフィギュレーション情報をチェックして、このモジュールがビジネス・ロジック要素を必要とするか否かを確認する(816)。ビジネス・ロジック要素が必要でない場合(815)は、CREはユーザにモジュールを表示して(818)、ユーザ入力を待つ(820)。モジュールがビジネス・ロジック要素を必要とする場合(817)は、段階(840)が行われる。段階(840)では、CREは、ビジネス・ロジック要素がローカル・キャッシュ内で利用可能であるか否かをチェックする(824)。ビジネス・ロジック要素が、ローカル・キャッシュ内で利用可能である場合(821)は、ビジネス・ロジック要素がローカル・キャッシュからアクティブ・メモリにロードされる(826)。ビジネス・ロジック要素がローカル・キャッシュ内で利用可能でない場合(823)は、CREはサーバに要求を送信し、ビジネス・ロジック要素をダウンロードさせる(828)。サーバはこのビジネス・ロジック要素が予めこの特定のクライアント・マシンの実行フォーマットに合わせてコンパイルされているか否かをチェックする(830)。既にコンパイルされている場合(831)は、サーバはサーバ・キャッシュからクライアント・キャッシュに実行コードをダウンロードする。次に、CREはクライアント・マシン・キャッシュ内に実行コードを記憶させる(836)とともに、該実行コードをアクティブ・メモリ内にロードする(826)。ビジネス・ロジック要素が予め特定のクライアント・マシンの実行フォーマットに合わせてコンパイルされていない場合(829)は、サーバはまず該実行フォーマットを、該特定のクライアント・マシン実行エンジンにより実行可能なコードにコンパイルするとともに、該実行フォーマットをサーバ・キャッシュ内に記憶させる(832)。次に、サーバは、サーバ・キャッシュからクライアント・キャッシュに、実行コードをダウンロードする(834)。該クライアント・キャッシュにおいて、CREが該実行コードをクライアント・キャッシュにキャッシュ(836)した後、該実行コードをアクティブ・メモリにロードする(826)。最後に、マークアップ・ドキュメント及びビジネス・ロジック要素(837)がアクティブ・メモリ内に存在しており、ユーザからの入力を待つ(820)。特定のモジュールに関連するビジネス・ロジック要素が1つより多い場合は、段階(840)は個別のビジネス・ロジック要素それぞれについて繰り返される(841)。段階(800)が繰り返されて、次のモジュール及びこれに関連するビジネス・ロジック要素がダウンロードされる。一度CREがマークアップ言語ドキュメントを受信すると、該CREは直ちに該ドキュメントを処理するとともに、関連するビジネス・ロジックを実行し、そして結果をユーザに表示する。このようにモジュール・タイプにしたがってネットワーク・アプリケーションをダウンロード及び実行する利点は、処理速度が速いことと、低い帯域幅しか必要としないことにある。予めダウンロードされたモジュール及び関連するビジネス・ロジックを、クライアントサイド・キャッシュ及びサーバ・キャッシュ内に記憶させて、クライアントサイド・キャッシュとサーバ・キャッシュを同期化することにより、クライアント・マシンがネットワーク・アプリケーションをオフラインで実行することが可能となる。該実行はネットワーク接続が利用できない場合でも可能である。
一度適切なモジュールがクライアント・マシンのアクティブ・メモリ内に導入されると、ユーザは、クライアント・イベントを介して、アプリケーションと直接にやり取りを行う。クライアント・イベントとしては、スクリーン・フィールドにテキストを入力する、マウスをテキスト上或いはスクリーン・ボタン上で動かす、マウスをクリックする、スクリーン内のボタンをハイライトする、ドラッグ・アンド・ドロップ、ウィンドウを隠す、新規データが利用可能などを挙げることができる。図11は、システムがどのようにしてクライアント・イベントを取り扱うか(900)を表す。クライアント・イベントが実行されると(902)CREは、このイベントを傾聴しているリスナがあるか否かをチェックする(904)。このイベントを傾聴しているリスナがない場合(907)は、CREは新たなクライアント・イベントを待つ(910)。このイベントを傾聴しているリスナがある場合(905)は、CREは該リスナがクライアント・サイドのビジネス・ロジック要素であるのか、サーバサイド・イベント・ハンドラであるのかを決定する(906)。該リスナがクライアントサイド・ビジネス・ロジック要素である場合(911)は、CREはこのクライアントサイド・ビジネス・ロジック要素のインスタンスが生成されているか否か、すなわち該ビジネス・ロジック要素がメモリ内で作り出されるとともに初期化されているか否かをチェックする。クライア(912)ントサイド・ビジネス要素のインスタンスが生成されていない場合(915)は、CREは該ビジネス要素をキャッシュからロードして、このインスタンスを生成する(922)。クライアントサイド・ビジネス要素のインスタンスが生成されている場合は、CREは該インスタンスを配置するとともに、登録されたリスナ・メソッドを動作させる(926)。該メソッドはこのイベントを取り扱う。CREはクライアントサイド・ビジネス要素リスナ・メソッドにしたがってイベントを処理するとともに、結果を出す(928)。次に、CREは、該結果がマークアップ・ドキュメントであるのか、或いはAPIを介しての直接のクライアントDOM操作であるのかをチェックする(930)。該結果がマークアップ・ドキュメントである場合(933)は、CREはマークアップ・ドキュメントを処理(918)するとともに、結果を表示する(920)。該結果がAPIを介しての直接のクライアントDOM操作である場合(931)は、CREはAPIコールを実行(932)するとともに、結果を表示する(920)。DOMの変更は、アプリケーション状態の変更につながる。該変化は、ユーザ・インターフェースを介して入力された変更であっても、内部でのデータの変更であってもよい。システムはその後、新たなクライアント・イベントを待つ(910)。クライアントサイド・リスニング要素としては例えば、クライアントサイド・ビジネス・ロジック要素、マークアップ・ドキュメントで定義されたマクロ・ステートメント、ローカルURLの呼び出しが挙げられる。サーバサイド・イベント・ハンドラとしては例えば、Java server page(Javaサーバ・ページ)、ウェブ・サービス要求、servelet、Active Server Pageが挙げられる。一つの例では、アプリケーションの状態は、XMLドキュメント・オブジェクト・モデル(Document Object Model、DOM)で維持される。このDOMはCRE及びサーバによってクライアント・サイドに維持される。ユーザがアプリケーションとやり取りをすると、CREは、ユーザの入力にしたがってクライアント・サイドDOMを更新する。アプリケーションのサーバサイド・ビジネス・ロジックが、アプリケーションの状態の変更(例えばウィンドウを隠す)を命令すると、サーバは自動的にサーバサイドDOMを更新する。クライアント・サイドDOM或いはサーバサイドDOMのいずれかが更新されるといつも、CRE或いはサーバのいずれかが対応する相手にメッセージを送信して、そのDOMをそれぞれ同期化する。ネットワークの接続が切断されても、ビジネス・ロジック・コード及びマークアップ・ドキュメントがクライアント・サイドにキャッシュされているため、アプリケーションは利用可能なままとなる。また、アプリケーションの状態もクライアント・サイドで利用可能である。アプリケーションの状態の変更は、DOM内に維持される。ネットワーク接続が利用可能になると、クライアント・ランタイム及びサーバ・ランタイムは自動的にDOMを同期化する。
他の実施形態もまた以下の請求の範囲内にあるものとする。例えば、一度に1つのモジュールをダウンロードするかわりに、サーバはモジュールの群を一まとめにするか、或いは全てのモジュールを一まとめにするかして、1つの配備モジュールにパッケージして、この配備モジュールをクライアント・マシンにダウンロードしてもよい。これは特に、オフラインでのコンピュータの利用において有用である。オフラインでの利用では、要求された全てのオフラインでのコンピュータ利用の機能性及びデータが1つの配備モジュールにパッケージ可能であるとともに、直ちにクライアント・マシンにダウンロード可能である。このようなダウンロードの後は、更なるモジュール或いはデータが要求されるまでは、該配備モジュールは、接続なしにクライアント・マシン上で動作可能となる。
本発明のいくつかの実施形態を説明してきた。しかしながら、本発明の本質及び範囲を離れることなく、様々な変更が可能であることが理解されるであろう。したがって、他の実施形態も以下の請求の範囲内にある。
アプリケーションの書き込み、コンパイル及び実行の従来の処理のブロック線図である。 ネットワーク・ベースの処理システムの例である。 単純なネットワーク・ベースの処理システムのソフトウェア並びにハードウェア要素のブロック線図である。 図3のアプリケーション・サーバのサーバ・コンパイラの概略的な線図である。 図4の汎用Javaバイトコード・コンパイラの詳細なブロック線図である。 図4の汎用XMLコンパイラの詳細なブロック線図である。 本発明に係るオブジェクト指向アプリケーションのブロック線図である。 本発明のマークアップ・ビジネス・ロジック・バインディング機構の概略的な線図である。 マークアップ・ビジネス・ロジック・バインディング機構のコード例である。 図7の例のスクリーン・ショットである。 図7の例の他のスクリーン・ショットである。 オブジェクト指向マークアップ・オブジェクト宣言及び具体化の概略的な線図である。 本発明に係るネットワーク・ベースのアプリケーションのモジュール構造の概略的な線図である。 本発明に係るネットワーク・ベースのアプリケーションの配備、コンパイル並びに実行のプロセスのフロー線図である。 本発明の、イベント取扱い処理のフロー線図である。

Claims (90)

  1. 複数の入力ファイルを受信するとともに、該複数の入力ファイルのうち任意の入力ファイルを出力ファイルに変換する汎用コンパイラであって、
    前記複数の入力ファイルがアプリケーションのソース・コードを備え、
    該ソース・コードは、複数の異なるプログラム言語でそれぞれ書かれ、
    前記出力ファイルは前記アプリケーションの実行コードを備え、
    該実行コードが実行エンジンにより実行可能であることを特徴とする汎用コンパイラ。
  2. 複数の特定のプログラム言語コンパイラを備え、
    前記複数の特定のプログラム言語コンパイラそれぞれが、前記複数の入力ファイルから1つの入力ファイルを受信し、
    前記複数の入力ファイルは、前記アプリケーションの前記ソース・コードを備え、
    該ソース・コードは特定のプログラム言語で書かれ、
    更に、前記複数の特定のプログラム言語コンパイラそれぞれが、前記1つの入力ファイルを前記アプリケーションの特定の実行コードに変換し、
    該特定の実行コードが特定の実行エンジンにより実行可能とされることを特徴とする請求項1記載の汎用コンパイラ。
  3. 制御ロジックを更に備え、
    該制御ロジックは、前記複数の特定のプログラム言語コンパイラから1つの特定のプログラム言語コンパイラを選択することを特徴とする請求項2記載の汎用コンパイラ。
  4. 前記プログラム言語が、Java、JavaScript、C#、C+、C++、Visual Basic、J#、ActionScript、XSL、XQuery及びXPathからなる群から選択されることを特徴とする請求項1記載の汎用コンパイラ。
  5. 前記実行コードが、Java仮想マシン・バイトコードを備え、
    前記実行エンジンが、Java仮想マシンを備えることを特徴とする請求項1記載の汎用コンピュータ。
  6. 前記実行コードが、.Net Common Language Runtime(CLR)バイトコードを備え、
    前記実行エンジンが、.Net CLRエンジンを備えることを特徴とする請求項1記載の汎用コンパイラ。
  7. 前記実行コードがFlashプレイヤ・バイトコードを備え、
    前記実行エンジンが、Flashプレイヤを備えることを特徴とする請求項1記載の汎用コンパイラ。
  8. 複数の入力ファイルを受信するとともに、前記複数の入力ファイルのうち任意の入力ファイルを複数の出力ファイルに変換するコンパイラ・システムであって、
    前記複数の入力ファイルが、アプリケーションのソース・コードを備え、
    該ソース・コードは、複数の異なるプログラム言語でそれぞれ書かれ、
    前記複数の出力ファイルは、前記アプリケーションの複数の実行コードをそれぞれ備え、
    前記複数の実行コードが複数の実行エンジンそれぞれにより実行可能であることを特徴とするコンパイラ・システム。
  9. 複数の汎用コンパイラを備え、
    各汎用コンパイラは、複数の特定のプログラム言語コンパイラを備え、
    前記複数の特定のプログラム言語コンパイラが、前記複数の入力ファイルから1つの入力ファイルを受信し、
    該複数の入力ファイルは前記アプリケーションの前記ソース・コードを備え、
    該ソース・コードは、特定のプログラム言語で書かれ、
    前記複数の特定のプログラム言語コンパイラは、前記入力ファイルを前記アプリケーションの特定の実行コードに変換し、
    前記特定の実行コードが特定の実行エンジンにより実行可能であることを特徴とする請求項8記載のコンパイラ・システム。
  10. 第1制御ロジックを更に備え、
    該第1制御ロジックが、前記複数の汎用プログラム言語コンパイラから、1つの汎用プログラム言語コンパイラを選択することを特徴とする請求項9記載のコンパイラ・システム。
  11. 第2制御ロジックを更に備え、
    該第2制御ロジックが、前記複数の実行コードをキャッシュすることを特徴とする請求項9記載のコンパイラ・システム。
  12. 前記プログラム言語が、Java、JavaScript、C#、C+、C++、Visual Basic、J#、ActionScript、XSL、XQuery及びXPathからなる群から選択されることを特徴とする請求項8記載のコンパイラ・システム。
  13. 前記実行コードが、Java仮想マシン・バイトコード、.Net CLRバイトコード、Flashプレイヤ・バイトコード、Palm OSバイトコード、Symbian OSバイトコード及びQualcomm Brewバイトコードからなる群から選択され、
    前記対応する実行エンジンそれぞれが、Java仮想マシン、.Net CLRエンジン、Flashプレイヤ、Palm OS、Symbian OS、Qualcomm Brewエンジンからなる群から選択されることを特徴とする請求項8記載のコンパイラ・システム。
  14. 分散処理を実行するコンピュータ・システムであって、
    該コンピュータ・システムは、
    汎用コンパイラを備えるサーバを備え、
    該汎用コンパイラは、複数の入力ファイルを受信するとともに前記複数の入力ファイルのうち任意の入力ファイルを1つの出力ファイルに変換し、
    前記複数の入力ファイルは、アプリケーションのソース・コードを備え、
    該ソース・コードは、複数のプログラム言語でそれぞれ書かれ、
    前記出力ファイルは、前記アプリケーションの実行コードを備え、
    更に、少なくとも1つのクライアント・マシンを備え、
    該クライアント・マシンは、ネットワークを介して前記サーバと接続するとともに実行エンジンを備え、
    該実行エンジンが、前記出力ファイルを前記ネットワーク上で受信するとともに前記実行コードを実行することを特徴とするコンピュータ・システム。
  15. 分散処理を実行するコンピュータ・システムであって、
    該コンピュータ・システムは、
    コンパイラ・システムを備えるサーバを備え、
    該コンパイラ・システムは、複数の入力ファイルを受信するとともに、前記複数の入力ファイルのうち任意の入力ファイルを複数の出力ファイルに変換し、
    前記複数の入力ファイルは、アプリケーションのソース・コードを備え、
    該ソース・コードはそれぞれ複数の異なるプログラム言語で書かれ、
    前記複数の出力ファイルは、複数の対応する前記アプリケーションの実行コードをそれぞれ備え、
    更に、複数のクライアント・マシンを備え、
    前記複数のクライアント・マシンのそれぞれが、前記サーバにネットワークを介して接続し、
    前記複数のクライアント・マシンのそれぞれが、実行エンジンを備え、
    該実行エンジンが、前記出力ファイルのうち1つを受信するとともに、対応する実行コードを実行することを特徴とする分散処理を実行するコンピュータ・システム。
  16. 複数の入力ファイルを受信するとともに、該複数の入力ファイルのうち任意の入力ファイルを1つの出力ファイルに変換する汎用XMLコンパイラであって、
    前記複数の入力ファイルは、複数のマークアップ・ドキュメントを備え、
    該マークアップ・ドキュメントは、複数の異なるXML言語で書かれ、
    前記出力ファイルは実行コードを備え、
    該実行コードが特定の実行エンジンにより実行可能であることを特徴とする汎用XMLコンパイラ。
  17. 前記XML言語が、XML、XUL、SVG、Xforms、XAML、HTML、XHTML、HTMLに関連する言語及びこれらの組み合わせからなる群から選択されることを特徴とする請求項16記載の汎用コンパイラ。
  18. 前記実行コードが、XML言語フォーマットを備え、
    前記特定の実行エンジンが、XML実行エンジンを備えることを特徴とする請求項16記載の汎用コンパイラ。
  19. 前記実行コードがバイナリ・フォーマットを備え、
    前記特定の実行エンジンが、前記バイナリ・フォーマットを実行するエンジンを備えることを特徴とする請求項16記載の汎用コンパイラ。
  20. 前記バイナリ・フォーマットが、Java仮想マシン・バイトコード、.Net CLRバイトコード、Flashプレイヤ・バイトコード、Palm OSバイトコード、Symbian OSバイトコード及びQualcomm Brewバイトコードからなる群から選択されることを特徴とする請求項19記載の汎用コンパイラ。
  21. 前記特定の実行エンジンが、Java仮想マシン、.Net CLR、Palm OS 、Flashプレイヤ、Symbian OS、Qualcomm Brewからなる群から選択されることを特徴とする請求項20記載の汎用コンパイラ。
  22. ネットワーク・コンピュータ・システム内においてアプリケーションを配備する方法であって、
    前記ネットワーク・コンピュータ・システムは、1つのサーバと、1若しくはそれ以上のクライアント・マシンを備え、
    該クライアント・マシンのそれぞれが、ネットワーク接続を介して、前記サーバに接続するとともに実行エンジンを備え、
    前記方法は、
    前記クライアント・マシンのうち1つによる要求を前記サーバに送信し、前記アプリケーションの1若しくはそれ以上のファイルをダウンロードする段階と、
    前記サーバにより前記要求を受信するとともに前記クライアント・マシンの実行エンジンを特徴付ける段階と、
    前記アプリケーション・コードの前記1若しくはそれ以上のファイルの1若しくはそれ以上の実行コードがそれぞれ、サーバ・ストレージ内で既に利用可能であるか否か検査する段階を備え、
    前記1若しくはそれ以上の実行コードが前記クライアント・マシンの実行エンジンにより実行可能であり、
    前記1若しくはそれ以上の実行コードが利用可能であるならば、前記1若しくはそれ以上の実行コードを前記クライアント・マシンにダウンロードする段階を備えることを特徴とする方法。
  23. クライアント・マシン内のストレージへ前記ダウンロードされた1若しくはそれ以上の実行コードをキャッシュする段階を更に備えることを特徴とする請求項22記載の方法。
  24. 前記1若しくはそれ以上の実行コードを前記クライアント・マシン・ストレージからダウンロードする段階を更に備えることを特徴とする請求項23記載の方法。
  25. 前記1若しくはそれ以上の実行コードが前記サーバ・ストレージ内で利用可能でない場合、前記アプリケーションの前記1若しくはそれ以上のファイルを前記1若しくはそれ以上の実行コードにそれぞれコンパイルする段階と、
    その後、前記1若しくはそれ以上の実行コードを前記クライアント・マシンへダウンロードする段階を備えることを特徴とする請求項22記載の方法。
  26. 汎用コンパイラにより1つのアプリケーションの1つのソース・コードをコンパイルする方法であって、
    該方法は、
    複数の入力ファイルを提供する段階を備え、
    該複数の入力ファイルは、前記ソース・コードを備え、
    該ソース・コードは、それぞれ複数の異なるプログラム言語で書かれ、
    更に、前記複数の入力ファイルを実行コードにコンパイルする段階を備え、
    該実行コードが1つの実行エンジンにより実行可能であることを特徴とする方法。
  27. 前記プログラム言語が、Java、JavaScript、C#、C+、C++、Visual Basic、J#、ActionScript、XSL、XQuery及びXPathからなる群から選択されることを特徴とする請求項26記載の方法。
  28. 前記実行コードが、Javaバイトコードを備え、
    前記実行エンジンが、Java仮想マシンを備えることを特徴とする請求項26記載の方法。
  29. 前記実行コードが、.Net CLRバイトコードを備え、
    前記実行エンジンが、.Net CLRエンジンを備えることを特徴とする請求項26記載の方法。
  30. 前記実行コードがFlashプレイヤ・バイトコードを備え、
    前記実行エンジンが、Flashプレイヤを備えることを特徴とする請求項26記載の方法。
  31. 前記汎用コンパイラが、複数の特定のプログラム言語コンパイラを備え、
    前記複数の特定のプログラム言語コンパイラそれぞれが、1つの入力ファイルを受信し、
    該入力ファイルが、1つの特定のプログラム言語で書かれ、
    前記複数の特定のプログラム言語コンパイラそれぞれが、前記入力ファイルを1つの特定の前記アプリケーションの実行コードに変換し、
    前記特定の実行コードが1つの特定の実行エンジンにより実行可能であることを特徴とする請求項26記載の方法。
  32. 前記汎用コンパイラが更に、制御ロジックを備え、
    該制御ロジックは、前記複数の特定のプログラム言語コンパイラから1つの特定のプログラム言語コンパイラを選択することを特徴とする請求項31記載の方法。
  33. コンパイラ・システムにより、アプリケーションのソース・コードをコンパイルする方法であって、
    該方法は、
    複数の入力ファイルを提供する段階を備え、
    該入力ファイルは、前記ソース・コードを備え、
    該ソース・コードは複数の異なるプログラム言語でそれぞれ書かれ、
    更に、前記複数の入力ファイルを複数の出力ファイルにコンパイルする段階を備え、
    前記複数の出力ファイルは、前記ソース・コードの複数の実行コードをそれぞれ備え、
    前記実行コードは複数の対応する実行エンジンそれぞれにより実行可能であることを特徴とする方法。
  34. 前記プログラム言語が、Java、JavaScript、C#、C+、C++、Visual Basic、J#、ActionScript、XSL、XQuery及びXPathからなる群から選択されることを特徴とする請求項33記載の方法。
  35. 前記実行コードが、Java仮想マシン・バイトコード、.Net CLRバイトコード、Palm OSバイトコード、Flashプレイヤ・バイトコード、Symbian OSバイトコード及びQualcomm Brewバイトコードからなる群から選択され、
    前記対応する実行エンジンが、Java仮想マシン、.Net CLR、Palm OS、Flashプレイヤ、Symbian OS、Qualcomm Brewからなる群から選択されることを特徴とする請求項33記載の方法。
  36. 少なくとも1つのマークアップ・ドキュメントと、
    該少なくとも1つのマークアップ・ドキュメントに関連する少なくとも1つのビジネス・ロジック要素と、
    前記少なくとも1つのマークアップ・ドキュメントを前記少なくとも1つのビジネス・ロジック要素にバインディングする或いはその逆を行うオブジェクト指向バインディング機構からなることを特徴とするコンピュータ・アプリケーション・プログラム。
  37. クライアント・ランタイム環境(CRE)が前記少なくとも1つのマークアップ・ドキュメントを受信するとともに1つのオブジェクト指向表現へ変換することを特徴とする請求項36記載のコンピュータ・アプリケーション・プログラム。
  38. 前記オブジェクト指向表現が、1若しくはそれ以上のマークアップ・オブジェクト、1若しくはそれ以上のユーザ・インターフェース及び1若しくはそれ以上のデータ・セットを備えることを特徴とする請求項37記載のコンピュータ・アプリケーション・プログラム。
  39. 前記少なくとも1つのビジネス・ロジック要素が、1つのマークアップ・オブジェクト・イベントに対するイベント・ハンドラとして用いられる1若しくはそれ以上の手段を備えることを特徴とする請求項38記載のコンピュータ・アプリケーション・プログラム。
  40. 前記オブジェクト指向バインディング機構が、マークアップ・オブジェクト・イベントを発火させることにより、前記1若しくはそれ以上のマークアップ・オブジェクトによって、前記1若しくはそれ以上の手段を起動することを備えることを特徴とする請求項38記載のコンピュータ・アプリケーション・プログラム。
  41. 前記オブジェクト指向バインディング機構が、更に、前記少なくとも1つのビジネス・ロジック要素によって、アプリケーション・プログラム・インターフェース(API)を介して前記1若しくはそれ以上のマークアップ・オブジェクトにアクセスするとともに変更することを備えることを特徴とする請求項40記載のコンピュータ・アプリケーション・プログラム。
  42. 前記APIが、マークアップ・オブジェクトAPIとドキュメント・オブジェクト・モデル(DOM)APIからなる群から選択されることを特徴とする請求項41記載のコンピュータ・アプリケーション・プログラム。
  43. 前記1若しくはそれ以上のマークアップ・ドキュメントが、親マークアップ・オブジェクトと子マークアップ・オブジェクトを備え、
    該子マークアップ・オブジェクトが1若しくはそれ以上のマークアップ・オブジェクトプロパティを備え、
    該マークアップ・オブジェクト・プロパティが、前記親マークアップ・オブジェクトから継承されることを特徴とする請求項38記載のコンピュータ・アプリケーション・プログラム。
  44. 前記1若しくはそれ以上のマークアップ・オブジェクト・プロパティが、ユーザ・インターフェース定義、データ・セット定義及びイベント・ハンドラ定義からなる群から選択されることを特徴とする請求項43記載のコンピュータ・アプリケーション・プログラム。
  45. 前記親マークアップ・オブジェクトが、1若しくはそれ以上のユーザ・インターフェース定義、1若しくはそれ以上のデータ定義及び1若しくはそれ以上のイベント・ハンドラを備え、
    前記子マークアップ・オブジェクトが前記1若しくはそれ以上のユーザ・インターフェース定義、前記1若しくはそれ以上のデータ定義及び前記1若しくはそれ以上のイベント・ハンドラを前記親マークアップ・ドキュメントから継承することを特徴とする請求項44記載のコンピュータ・アプリケーション・プログラム。
  46. 前記1若しくはそれ以上のマークアップ・オブジェクトが、親マークアップ・オブジェクトと子マークアップ・オブジェクトを備え、
    前記子マークアップ・オブジェクトが、前記親マークアップ・オブジェクトの1若しくはそれ以上のマークアップ・オブジェクト・プロパティを上書きし、
    該上書きされたマークアップ・オブジェクト・プロパティを、前記子マークアップ・オブジェクトの1若しくはそれ以上のマークアップ・オブジェクト・プロパティと置換することを特徴とする請求項43記載のコンピュータ・アプリケーション・プログラム。
  47. 前記少なくとも1つのマークアップ・ドキュメントが、マークアップ言語で書かれ、
    該マークアップ言語は、XML、XUL、SVG、Xforms、XAML、HTML、XHTML、HTMLに関連する言語、テキスト及びこれらの組み合わせからなる群から選択されることを特徴とする請求項36記載のコンピュータ・アプリケーション・プログラム。
  48. 前記少なくとも1つのビジネス・ロジック要素が、プログラム言語で書かれ、
    該プログラム言語が、Java、JavaScript、J#、C#、C+、C++、Visual Basic、ActionScript、XSL、XQuery及びXPathからなる群から選択されることを特徴とする請求項36記載のコンピュータ・アプリケーション・プログラム。
  49. コンピュータ・アプリケーション・プログラムを開発する方法であって、
    少なくとも1つのマークアップ・ドキュメントを提供する段階と、
    該少なくとも1つのマークアップ・ドキュメントに関連する少なくとも1つのビジネス・ロジック要素を提供する段階と、
    オブジェクト指向バインディング機構を提供する段階を備え、
    該オブジェクト指向バインディング機構が前記少なくとも1つのマークアップ・ドキュメントを前記少なくとも1つのビジネス・ロジック要素にバインディングをし、またその逆を行うことを特徴とする方法。
  50. 前記少なくとも1つのマークアップ・ドキュメントを受信する段階と、
    該少なくとも1つのマークアップ・ドキュメントをクライアント・ランタイム環境(CRE)によりオブジェクト指向表現に変換する段階を更に備えることを特徴とする請求項49記載の方法。
  51. 前記オブジェクト指向表現が、1若しくはそれ以上のマークアップ・オブジェクト、1若しくはそれ以上のユーザ・インターフェース及び1若しくはそれ以上のデータ・セットを備えることを特徴とする請求項50記載の方法。
  52. 前記少なくとも1つのビジネス・ロジック要素が、1若しくはそれ以上の手段を備え、
    該手段が、マークアップ・オブジェクト・イベントに対するイベント・ハンドラとして用いられることを特徴とする請求項51記載の方法。
  53. 前記オブジェクト指向バインディング機構が、マークアップ・オブジェクト・イベントを発火させることにより、前記1若しくはそれ以上のマークアップ・オブジェクトによって、前記1若しくはそれ以上の手段を起動することを備えることを特徴とする請求項52記載の方法。
  54. 前記オブジェクト指向バインディング機構が、更に、前記少なくとも1つのビジネス・ロジック要素によって、アプリケーション・プログラム・インターフェース(API)を介して前記1若しくはそれ以上のマークアップ・オブジェクトにアクセスするとともに変更することを備えることを特徴とする請求項53記載の方法。
  55. 前記APIが、マークアップ・オブジェクトAPIとドキュメント・オブジェクト・モデル(DOM)APIからなる群から選択されることを特徴とする請求項54記載の方法。
  56. 前記1若しくはそれ以上のマークアップ・ドキュメントが、親マークアップ・オブジェクトと子マークアップ・オブジェクトを備え、
    該子マークアップ・オブジェクトが1若しくはそれ以上のマークアップ・オブジェクトプロパティを備え、
    該マークアップ・オブジェクト・プロパティが、前記親マークアップ・オブジェクトから継承されることを特徴とする請求項51記載の方法。
  57. 前記1若しくはそれ以上のマークアップ・オブジェクト・プロパティが、ユーザ・インターフェース、データ・セット定義及びイベント・ハンドラ定義からなる群から選択されることを特徴とする請求項56記載の方法。
  58. 前記親マークアップ・オブジェクトが、1若しくはそれ以上のユーザ・インターフェース定義、1若しくはそれ以上のデータ定義及び1若しくはそれ以上のイベント・ハンドラを備え、
    前記子マークアップ・オブジェクトが前記1若しくはそれ以上のユーザ・インターフェース定義、前記1若しくはそれ以上のデータ定義及び前記1若しくはそれ以上のイベント・ハンドラを前記親マークアップ・ドキュメントから継承することを特徴とする請求項57記載の方法。
  59. 前記1若しくはそれ以上のマークアップ・オブジェクトが、親マークアップ・オブジェクトと子マークアップ・オブジェクトを備え、
    前記子マークアップ・オブジェクトが、前記親マークアップ・オブジェクトの1若しくはそれ以上のマークアップ・オブジェクト・プロパティを上書きし、
    該上書きされたマークアップ・オブジェクト・プロパティを、前記子マークアップ・オブジェクトの1若しくはそれ以上のマークアップ・オブジェクト・プロパティと置換することを特徴とする請求項51記載の方法。
  60. 前記少なくとも1つのマークアップ・ドキュメントが、マークアップ言語で書かれ、
    該マークアップ言語は、XML、XUL、SVG、Xforms、XAML、HTML、XHTML、HTMLに関連する言語、テキスト及びこれらの組み合わせからなる群から選択されることを特徴とする請求項49記載の方法。
  61. 前記少なくとも1つのビジネス・ロジック要素が、プログラム言語で書かれ、
    該プログラム言語が、Java、JavaScript、J#、C#、C+、C++、Visual Basic、ActionScript、XSL、XQuery及びXPathからなる群から選択されることを特徴とする請求項49記載の方法。
  62. 1若しくはそれ以上のモジュールを備えるネットワーク・アプリケーション・プログラムであって、
    各モジュールが、少なくとも1つのマークアップ・ドキュメント、該マークアップ・ドキュメントに関連する少なくとも1つのビジネス・ロジック及びオブジェクト指向バインディング機構を備え、
    該オブジェクト指向バインディング機構が、前記少なくとも1つのマークアップ・ドキュメントを前記少なくとも1つのビジネス・ロジック要素にバインディングし、またその逆を行うことを特徴とするネットワーク・アプリケーション・プログラム。
  63. サーバ・ランタイム環境(SRE)とネットワーク・アプリケーション・プログラムを備えるサーバと、
    1若しくはそれ以上のクライアント・マシンであって、各クライアント・マシンがクライアント・ランタイム環境(CRE)を備えるとともに、ネットワーク接続を介して前記サーバに接続可能なクライアント・マシンを備え、
    前記SREが前記ネットワーク・アプリケーション・プログラムを前記1若しくはそれ以上のクライアント・マシンに前記ネットワークを介して配備し、
    該配備が、
    前記ネットワーク・アプリケーションを1若しくはそれ以上のモジュールに分割する段階であって、該各モジュールが少なくとも1つのマークアップ・ドキュメントを備えるようにする段階と、
    前記1若しくはそれ以上のモジュールそれぞれを別個に前記1若しくはそれ以上のクライアント・マシンにダウンロードする段階からなることを特徴とするネットワーク・コンピュータ・システム。
  64. 更に、前記少なくとも1つのマークアップ・ドキュメントに関連する少なくとも1つのビジネス・ロジックと、
    オブジェクト指向バインディング機構を備え、
    該オブジェクト指向バインディング機構が、前記少なくとも1つのマークアップ・ドキュメントを前記少なくとも1つのビジネス・ロジック要素にバインディングするとともにその逆を行うことが可能であることを特徴とする請求項63記載のネットワーク・コンピュータ・システム。
  65. 前記CREが更に、ストレージを備え、
    該ストレージが前記ダウンロードされた1若しくはそれ以上のモジュールをキャッシュすることを特徴とする請求項63記載のネットワーク・コンピュータ・システム。
  66. 前記CREが前記ネットワーク・アプリケーション・プログラムの前記ダウンロードされた1若しくはそれ以上のモジュールそれぞれを互いに独立に実行することを特徴とする請求項63記載のネットワーク・コンピュータ・システム。
  67. 前記CREが前記ネットワーク・アプリケーション・プログラムの前記ダウンロードされた1若しくはそれ以上のモジュールをオフラインで実行することを特徴とする請求項63記載のネットワーク・コンピュータ・システム。
  68. 前記サーバが更に、コンパイラ・システムを備え、
    該コンパイラ・システムが、複数の入力ファイルを受信するとともに、該複数の入力ファイルのうち任意の入力ファイルを複数の出力ファイルにそれぞれ変換し、
    前記複数の入力ファイルが前記ネットワーク・アプリケーションを備え、
    該ネットワーク・アプリケーションは、複数のそれぞれ異なるプログラム言語で書かれ、
    前記複数の出力ファイルは、前記ネットワーク・アプリケーションの複数のそれぞれ対応する実行コードを備えることを特徴とする請求項63記載のネットワーク・コンピュータ・システム。
  69. 前記1若しくはそれ以上のクライアント・マシンのそれぞれが、1つの実行エンジンを備え、
    該実行エンジンが、前記出力ファイルのうち1つを受信するとともに前記対応する実行コードを実行することを特徴とする請求項68記載のネットワーク・コンピュータ・システム。
  70. 前記ネットワーク接続が、低い帯域幅を備えることを特徴とする請求項63記載のネットワーク・コンピュータ・システム。
  71. ネットワーク・コンピュータ・システム内で処理を実行する方法であって、
    該ネットワーク・コンピュータ・システムは、サーバと1若しくはそれ以上のクライアント・マシンを備え、
    該クライアント・マシンは、ネットワーク接続を介して、前記サーバと接続し、
    前記方法は、
    サーバ・ストレージ内に格納されたネットワーク・アプリケーションを1若しくはそれ以上のモジュールに分割し、該モジュールそれぞれが少なくとも1つのマークアップ・ドキュメントを備える段階と、
    前記1若しくはそれ以上のモジュールそれぞれを別個に前記1若しくはそれ以上のクライアント・マシンに前記ネットワーク接続を介してダウンロードする段階を備えることを特徴とする方法。
  72. 各モジュールが更に少なくとも1つのビジネス・ロジック要素を備え、
    該ビジネス・ロジック要素は前記少なくとも1つのマークアップ・ドキュメントと関連し、
    各モジュールは更に、オブジェクト指向バインディング機構を備え、
    該オブジェクト指向バインディング機構は、前記少なくとも1つのマークアップ・ドキュメントを前記少なくとも1つのビジネス・ロジック要素にバインディングするとともにその逆を行うことを特徴とする請求項71記載の方法。
  73. クライアント・マシン・ストレージ内にダウンロードされた1若しくはそれ以上のモジュールをキャッシュする段階を更に備えることを特徴とする請求項71記載の方法。
  74. 更に、前記1若しくはそれ以上のクライアント・マシンにより、互いに独立に前記ネットワーク・アプリケーション・プログラムの前記ダウンロードされた1若しくはそれ以上のモジュールを実行する段階を備えることを特徴とする請求項71記載の方法。
  75. 更に、オフラインで、前記1若しくはそれ以上のクライアント・マシンにより前記ネットワーク・アプリケーション・プログラムの前記ダウンロードされた1若しくはそれ以上のモジュールを実行する段階を備えることを特徴とする請求項71記載の方法。
  76. 前記サーバが更に、コンパイラ・システムを備え、
    該コンパイラ・システムが、複数の入力ファイルを受信するとともに、前記複数の入力ファイルのうち任意のファイルを複数の出力ファイルにそれぞれ変換し、
    前記複数の入力ファイルが、前記ネットワーク・アプリケーションを備え、
    該ネットワーク・アプリケーションが、複数のそれぞれ異なるプログラム言語で書かれ、
    前記複数の出力ファイルが前記ネットワーク・アプリケーションの複数の対応する実行コードをそれぞれ備えることを特徴とする請求項71記載の方法。
  77. 前記1若しくはそれ以上のクライアント・マシンそれぞれが、実行エンジンを備え、
    該実行エンジンは、前記出力ファイルのうち1つを受信するとともに、前記ネットワーク・アプリケーションの前記対応する実行コードを実行することを特徴とする請求項76記載の方法。
  78. 前記ネットワーク接続が、低い帯域幅を備えることを特徴とする請求項71記載の方法。
  79. ネットワーク・コンピュータ・システム内で処理を実行する方法であって、
    該ネットワーク・コンピュータ・システムは、サーバと1若しくはそれ以上のクライアント・マシンを備え、
    該クライアント・マシンは、ネットワーク接続を介して、前記サーバと接続し、
    前記方法は、
    サーバ・ストレージ内に格納されたネットワーク・アプリケーションを1若しくはそれ以上のモジュールに分割し、該モジュールそれぞれが少なくとも1つのマークアップ・ドキュメントを備える段階と、
    ユーザによる要求を、前記1若しくはそれ以上のクライアント・マシンのうち1つを介して配置し、前記1若しくはそれ以上のモジュールのうち1つをダウンロードする段階と、
    前記クライアント・マシンのCREにより、前記1つのモジュールが前記クライアント・マシンのストレージ内で利用可能であるか否かをチェックする段階と、
    もし利用可能であるならば、前記モジュールをダウンロード並びに実行する段階を備えることを特徴とする方法。
  80. 前記モジュールが更に少なくとも1つのビジネス・ロジックを備え、
    該ビジネス・ロジックは、前記少なくとも1つのマークアップ・ドキュメントに関連し、
    更に、前記モジュールは、1つのオブジェクト指向バインディング機構を備え、
    該オブジェクト指向バインディング機構は、前記少なくとも1つのマークアップ・ドキュメントを前記少なくとも1つのビジネス・ロジック要素にバインディングするとともにその逆を行うことを特徴とする請求項79記載の方法。
  81. 前記クライアント・マシンのストレージ内で前記モジュールが利用可能でないならば、前記サーバへ要求を送信し、前記モジュールをダウンロードする段階と、
    前記サーバにより前記要求を受信するとともに、前記クライアント・マシンの実行エンジンを特徴付ける段階と、
    前記クライアント・マシンにより実行可能な前記モジュールの実行コード・ファイルが既に前記サーバ・ストレージ内で利用可能か否かチェックする段階と、
    もし前記実行コード・ファイルが利用可能であるならば、前記実行コード・ファイルを前記クライアント・マシンにダウンロードする段階を備えることを特徴とする請求項79記載の方法。
  82. クライアント・マシン・ストレージ内の前記ダウンロードされた実行コード・ファイルをキャッシュする段階を更に備えることを特徴とする請求項81記載の方法。
  83. 更に前記クライアント・マシンにより前記モジュールを実行する段階を備えることを特徴とする請求項81記載の方法。
  84. 前記実行コード・ファイルが前記サーバ・ストレージ内で利用可能でないならば、前記モジュールを前記実行コードにコンパイルする段階と、
    前記実行コード・ファイルを前記クライアント・マシンにダウンロードする段階を備えることを特徴とする請求項81記載の方法。
  85. コンピュータ・アプリケーション・プログラム内で、クライアント・イベントを取扱う方法であって、
    前記コンピュータ・アプリケーション・プログラムは、クライアント・サイド要素を備え、
    該クライアント・サイド要素はクライアント・マシン内で動作し、
    前記コンピュータ・アプリケーション・プログラムは、更に、サーバ・サイド要素を備え、
    該サーバ・サイド要素はサーバ内で動作し、
    前記クライアント・マシンは、ネットワーク接続を介して、前記サーバに接続し、
    前記方法は、
    前記イベントを傾聴するリスナの有無をチェックするとともに、該リスナが前記クライアント・サイド要素或いはサーバ・サイド要素のいずれに存在するかを決定する段階と、
    前記リスナが、前記クライアント・サイド要素に存在するならば、前記リスナを具体化するとともに登録されたリスナ手段を起動し、前記イベントを処理し、これにより結果を作成する段階と、
    前記結果がマークアップ・ドキュメントであるか、直接的なクライアント・ドキュメント・オブジェクト・モデル(DOM)アプリケーション・プログラム・インターフェース(API)操作であるかをチェックする段階と、
    前記結果が、マークアップ・ドキュメントであるならば、前記マークアップ・ドキュメントを表示する段階を備えることを特徴とする方法。
  86. 前記結果が直接のクライアントDOM API操作であるならば、更に、APIコールを実行するとともに前記結果を表示する段階を備えることを特徴とする請求項85記載の方法。
  87. 前記リスナが、前記サーバ・サイド要素に存在するならば、
    前記イベントを前記サーバに送信し、前記イベントを処理する段階と、
    サーバ・サイド・ハンドラを動作させ、前記イベントを処理し、これによりサーバ結果を作成する段階と、
    前記サーバ結果を前記クライアント・マシンに送信する段階と、
    前記サーバ結果を表示する段階を備えることを特徴とする請求項85記載の方法。
  88. 1つのマークアップ・ドキュメントを1若しくはそれ以上のビジネス・ロジック・オブジェクトにバインディングする方法であって、
    マークアップ言語を用いて、前記マークアップ・ドキュメントをコード化する段階と、
    オブジェクト指向プログラム言語を用いて、1若しくはそれ以上のビジネス・ロジック・オブジェクトをコード化する段階と、
    前記マークアップ・ドキュメントを前記1若しくはそれ以上のビジネス・ロジック・オブジェクトと関連付ける段階と、
    前記マークアップ・ドキュメントのオブジェクト指向表現を構築し、これにより1若しくはそれ以上のマークアップ・オブジェクトを作成する段階と、
    前記オブジェクト指向表現により1若しくはそれ以上のマークアップ・オブジェクト・イベントを発火し、これにより、前記1若しくはそれ以上のビジネス・ロジック・オブジェクトを動作させ、前記イベントを処理する段階と、
    前記1若しくはそれ以上のビジネス・ロジック・オブジェクトにより前記マークアップ・オブジェクトを操作する段階からなることを特徴とする方法。
  89. 前記1若しくはそれ以上のビジネス・ロジック・オブジェクトがマークアップ・オブジェクトAPIを介して前記マークアップ・オブジェクトを操作することを特徴とする請求項88記載の方法。
  90. 前記1若しくはそれ以上のビジネス・ロジック・オブジェクトがドキュメント・オブジェクト・モデル(DOM)APIを介して、前記マークアップ・オブジェクトを操作する段階を備えることを特徴とする請求項88記載の方法。
JP2006500912A 2003-01-10 2004-01-09 ネットワーク・ベースの処理のためのシステムおよび方法 Pending JP2007524875A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US43939403P 2003-01-10 2003-01-10
US10/754,782 US7707563B2 (en) 2003-01-10 2004-01-09 System and method for network-based computing
PCT/US2004/000720 WO2004063900A2 (en) 2003-01-10 2004-01-09 System and method for network-based computing

Publications (1)

Publication Number Publication Date
JP2007524875A true JP2007524875A (ja) 2007-08-30

Family

ID=32718086

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006500912A Pending JP2007524875A (ja) 2003-01-10 2004-01-09 ネットワーク・ベースの処理のためのシステムおよび方法

Country Status (4)

Country Link
US (2) US7707563B2 (ja)
EP (1) EP1588230A4 (ja)
JP (1) JP2007524875A (ja)
WO (1) WO2004063900A2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009512032A (ja) * 2005-10-14 2009-03-19 リサーチ イン モーション リミテッド 図形表示言語およびネイティブuiオブジェクトを用いる表示
JP2011501325A (ja) * 2007-10-26 2011-01-06 クゥアルコム・インコーポレイテッド サーバ−ベースのコードコンパイル
JP2013101655A (ja) * 2006-07-12 2013-05-23 Qualcomm Inc Sigcompudvmパフォーマンスの最適化のための方法および装置
US9075913B2 (en) 2012-02-27 2015-07-07 Qualcomm Incorporated Validation of applications for graphics processing unit
KR101907422B1 (ko) 2012-02-10 2018-10-12 한국전자통신연구원 네트워크 애플리케이션 통합 개발장치, 그 통합 개발방법 및 그것을 이용하는 서버

Families Citing this family (127)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6836883B1 (en) * 2000-06-21 2004-12-28 Microsoft Corporation Method and system for compiling multiple languages
EP1174791B1 (en) 2000-07-10 2017-09-27 Microsoft Technology Licensing, LLC Unified data type system and method
US20080313282A1 (en) 2002-09-10 2008-12-18 Warila Bruce W User interface, operating system and architecture
US20050038868A1 (en) * 2003-05-19 2005-02-17 Spicer Jeffrey J. Web form host
US7237194B2 (en) * 2003-11-18 2007-06-26 Microsoft Corporation System and method for generating optimized binary representation of an object tree
US20070039007A1 (en) * 2004-05-18 2007-02-15 Spicer Jeffrey J Virtual mind
US7543273B2 (en) * 2004-05-21 2009-06-02 Bea Systems, Inc. Systems and methods for dynamic control of cache and pool sizes using a batch scheduler
US7756910B2 (en) * 2004-05-21 2010-07-13 Bea Systems, Inc. Systems and methods for cache and pool initialization on demand
US8239749B2 (en) * 2004-06-25 2012-08-07 Apple Inc. Procedurally expressing graphic objects for web pages
US20060031760A1 (en) * 2004-08-05 2006-02-09 Microsoft Corporation Adaptive document layout server/client system and process
US20060130051A1 (en) * 2004-12-14 2006-06-15 International Business Machines Corporation Extensible framework for handling submitted form instance data
US8627344B2 (en) * 2004-12-15 2014-01-07 Siebel Systems, Inc. Methods and apparatuses for user interface management
JP2006178912A (ja) * 2004-12-24 2006-07-06 Fujitsu Ltd 情報処理方法及びプログラム
US9535679B2 (en) * 2004-12-28 2017-01-03 International Business Machines Corporation Dynamically optimizing applications within a deployment server
US7707547B2 (en) * 2005-03-11 2010-04-27 Aptana, Inc. System and method for creating target byte code
US8271964B2 (en) * 2005-05-16 2012-09-18 Microsoft Corporation Extensible software development services
US20070006238A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Managing application states in an interactive media environment
US20070006078A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Declaratively responding to state changes in an interactive multimedia environment
US7941522B2 (en) * 2005-07-01 2011-05-10 Microsoft Corporation Application security in an interactive media environment
US8799757B2 (en) * 2005-07-01 2014-08-05 Microsoft Corporation Synchronization aspects of interactive multimedia presentation management
US8020084B2 (en) * 2005-07-01 2011-09-13 Microsoft Corporation Synchronization aspects of interactive multimedia presentation management
US20070006079A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation State-based timing for interactive multimedia presentations
US20070006062A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Synchronization aspects of interactive multimedia presentation management
US20070006065A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Conditional event timing for interactive multimedia presentations
US8656268B2 (en) * 2005-07-01 2014-02-18 Microsoft Corporation Queueing events in an interactive media environment
US8108787B2 (en) * 2005-07-01 2012-01-31 Microsoft Corporation Distributing input events to multiple applications in an interactive media environment
US8305398B2 (en) * 2005-07-01 2012-11-06 Microsoft Corporation Rendering and compositing multiple applications in an interactive media environment
TWI263908B (en) * 2005-07-12 2006-10-11 Inventec Corp Update system and method
US20070016592A1 (en) * 2005-07-12 2007-01-18 International Business Machines Corporation Enabling real time decoration for customized topology displays
US7966608B2 (en) * 2005-10-26 2011-06-21 Hewlett-Packard Development Company, L.P. Method and apparatus for providing a compiler interface
US8201189B2 (en) * 2005-12-30 2012-06-12 Sap Ag System and method for filtering components
US8843918B2 (en) * 2005-12-30 2014-09-23 Sap Ag System and method for deployable templates
US20070257715A1 (en) * 2005-12-30 2007-11-08 Semerdzhiev Krasimir P System and method for abstract configuration
US8838750B2 (en) * 2005-12-30 2014-09-16 Sap Ag System and method for system information centralization
US20070174420A1 (en) * 2006-01-24 2007-07-26 International Business Machines Corporation Caching of web service requests
US20070240040A1 (en) * 2006-04-05 2007-10-11 Christopher Peters Non-compiled portable algorithm
EP1845444B1 (en) * 2006-04-13 2010-05-19 Microsoft Corporation Virtual execution system for ressource-constrained devices
KR101058481B1 (ko) 2006-05-16 2011-08-24 리서치 인 모션 리미티드 애플리케이션의 사용자 인터페이스를 스킨화하는 시스템 및방법
US7886284B2 (en) * 2006-09-05 2011-02-08 International Business Machines Corporation Using a backend simulator to test and develop xforms templates before linking the xforms templates to backend data processing systems
US8863083B2 (en) * 2006-10-10 2014-10-14 Sap Ag Presenting user interfaces based on messages
GB2444305B (en) * 2007-01-26 2010-12-22 Key Criteria Connect Ltd Method of identifying devices in mobile and desktop environments
GB2445991B (en) * 2007-01-26 2009-04-01 Key Criteria Connect Ltd Method of loading software in mobile and desktop environments
US7761484B2 (en) * 2007-02-09 2010-07-20 Microsoft Corporation Complete mapping between the XML infoset and dynamic language data expressions
US8196092B2 (en) * 2007-06-14 2012-06-05 Verizon Patent And Licensing Inc. XSL dialog modules
US20090063423A1 (en) * 2007-06-19 2009-03-05 Jackson Bruce Kelly User interfaces for service object located in a distributed system
US9727397B2 (en) * 2007-07-23 2017-08-08 Paypal, Inc. Container-less JSP template
KR20100068473A (ko) * 2007-09-28 2010-06-23 엑세리온 악티에볼라그 네트워크 오퍼레이팅 시스템
US8914774B1 (en) 2007-11-15 2014-12-16 Appcelerator, Inc. System and method for tagging code to determine where the code runs
US8954989B1 (en) 2007-11-19 2015-02-10 Appcelerator, Inc. Flexible, event-driven JavaScript server architecture
US8260845B1 (en) 2007-11-21 2012-09-04 Appcelerator, Inc. System and method for auto-generating JavaScript proxies and meta-proxies
US8719451B1 (en) 2007-11-23 2014-05-06 Appcelerator, Inc. System and method for on-the-fly, post-processing document object model manipulation
US8566807B1 (en) 2007-11-23 2013-10-22 Appcelerator, Inc. System and method for accessibility of document object model and JavaScript by other platforms
US8756579B1 (en) 2007-12-03 2014-06-17 Appcelerator, Inc. Client-side and server-side unified validation
US8819539B1 (en) 2007-12-03 2014-08-26 Appcelerator, Inc. On-the-fly rewriting of uniform resource locators in a web-page
US8806431B1 (en) 2007-12-03 2014-08-12 Appecelerator, Inc. Aspect oriented programming
US8527860B1 (en) 2007-12-04 2013-09-03 Appcelerator, Inc. System and method for exposing the dynamic web server-side
US8938491B1 (en) 2007-12-04 2015-01-20 Appcelerator, Inc. System and method for secure binding of client calls and server functions
US8639743B1 (en) 2007-12-05 2014-01-28 Appcelerator, Inc. System and method for on-the-fly rewriting of JavaScript
US8285813B1 (en) 2007-12-05 2012-10-09 Appcelerator, Inc. System and method for emulating different user agents on a server
US8335982B1 (en) 2007-12-05 2012-12-18 Appcelerator, Inc. System and method for binding a document object model through JavaScript callbacks
US8402435B1 (en) * 2007-12-07 2013-03-19 Adobe Systems Incorporated Systems and methods for organizing source code
US8434076B2 (en) * 2007-12-12 2013-04-30 Oracle International Corporation Efficient compilation and execution of imperative-query languages
US9141377B2 (en) * 2008-02-19 2015-09-22 International Business Machines Corporation Visualization of code units across disparate systems
US8863115B2 (en) * 2008-03-20 2014-10-14 Sap Ag Execution of program code having language-level integration of program models
US8533673B2 (en) * 2008-03-20 2013-09-10 Sap Ag Language-level integration of programming models
US8533672B2 (en) * 2008-03-20 2013-09-10 Sap Ag Extending the functionality of a host programming language
US9454390B2 (en) * 2008-04-04 2016-09-27 Intuit Inc. Executable code generated from common source code
US8291079B1 (en) 2008-06-04 2012-10-16 Appcelerator, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8880678B1 (en) 2008-06-05 2014-11-04 Appcelerator, Inc. System and method for managing and monitoring a web application using multiple cloud providers
US8018197B2 (en) * 2008-06-18 2011-09-13 Freescale Semiconductor, Inc. Voltage reference device and methods thereof
US20090320097A1 (en) * 2008-06-18 2009-12-24 Jackson Bruce Kelly Method for carrying out a distributed search
US8060603B2 (en) 2008-06-18 2011-11-15 Qualcomm Incorporated Persistent personal messaging in a distributed system
US20100023955A1 (en) * 2008-07-28 2010-01-28 Marcottage Method and system and apparatus for dynamic software environment
US7596620B1 (en) 2008-11-04 2009-09-29 Aptana, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US9082409B2 (en) * 2008-08-28 2015-07-14 Avaya Inc. Binary-caching for XML documents with embedded executable code
US8539464B2 (en) * 2008-10-30 2013-09-17 International Business Machines Corporation Distributed just-in-time compilation
US8752016B2 (en) * 2008-12-15 2014-06-10 Apple Inc. Converting JavaScript into a device-independent representation
WO2010084206A1 (en) * 2009-01-26 2010-07-29 Fontself Sa A system and method for creating, managing, sharing and displaying personalized fonts on a client-server architecture
US9354629B2 (en) * 2009-02-19 2016-05-31 Fisher-Rosemount Systems, Inc. Methods and apparatus to configure a process control system using an electronic description language script
US8667483B2 (en) * 2009-03-25 2014-03-04 Microsoft Corporation Device dependent on-demand compiling and deployment of mobile applications
US20100293499A1 (en) * 2009-05-14 2010-11-18 Microsoft Corporation Rendering to a device desktop of an adaptive input device
US20100299626A1 (en) * 2009-05-20 2010-11-25 Microsoft Corporation Systems and Methods of Providing Rich User Interface and Animation to Auxiliary Display Devices
US10209968B2 (en) * 2009-05-29 2019-02-19 Adobe Inc. Application compiling
US8677329B2 (en) * 2009-06-03 2014-03-18 Apple Inc. Methods and apparatuses for a compiler server
US9117071B2 (en) 2009-06-03 2015-08-25 Apple Inc. Methods and apparatuses for secure compilation
US8615750B1 (en) * 2009-06-12 2013-12-24 Adobe Systems Incorporated Optimizing application compiling
CA2698066A1 (en) * 2009-07-31 2011-01-31 Nitobi Software Inc. System and method for remotely compiling multi-platform native applications for mobile devices
US10176270B2 (en) * 2009-12-24 2019-01-08 International Business Machines Corporation Performance of template based javascript widgets
US20110258534A1 (en) * 2010-04-16 2011-10-20 Microsoft Corporation Declarative definition of complex user interface state changes
US20110271248A1 (en) * 2010-04-29 2011-11-03 Microsoft Corporation Converting controls into source code
WO2012027907A1 (en) * 2010-09-03 2012-03-08 Siemens Aktiengesellschaft Method for parallelizing automatic control programs and compiler
US8307277B2 (en) 2010-09-10 2012-11-06 Facebook, Inc. Efficient event delegation in browser scripts
US9026905B2 (en) * 2010-12-17 2015-05-05 Facebook, Inc. Customization of mobile applications using web-based technology
DE112011104795T5 (de) 2011-01-27 2013-10-31 Hewlett-Packard Development Company, L.P. Computer-Vorrichtung zur Verbindung an eine tragbare Vorrichtung
US9706006B2 (en) * 2011-07-19 2017-07-11 Infosys Limited System and method of context aware adaption of content for a mobile device
US9489184B2 (en) 2011-12-30 2016-11-08 Oracle International Corporation Adaptive selection of programming language versions for compilation of software programs
US8910115B2 (en) * 2012-04-02 2014-12-09 Kony Solutions, Inc. Systems and methods for application development
US9547533B2 (en) * 2012-10-15 2017-01-17 Optum Soft, Inc. Efficient reliable distributed flow-controlled event propagation
US9075833B2 (en) * 2013-01-21 2015-07-07 International Business Machines Corporation Generating XML schema from JSON data
US9395960B2 (en) * 2013-02-19 2016-07-19 PLUMgrid, Inc. Method and system for data plane abstraction to enable a dynamic creation of network applications
US9641590B2 (en) * 2014-08-27 2017-05-02 Google Inc. Resuming session states
US9830307B1 (en) * 2014-12-11 2017-11-28 Amazon Technologies, Inc. Ahead of time compilation of content pages
CA2875850C (en) 2014-12-23 2022-07-05 Steve Cooper Version synchronization of dependent components
EP3241310B1 (en) * 2015-01-02 2019-07-31 Systech Corporation Control infrastructure
US10567517B2 (en) * 2015-06-05 2020-02-18 Apple Inc. Web resource load blocking API
US10120661B2 (en) * 2015-07-16 2018-11-06 Sugarcrm Inc. Multi-flavored software execution from a singular code base
US10061629B2 (en) 2015-07-22 2018-08-28 Optumsoft, Inc. Compact binary event log generation
CN105068855B (zh) * 2015-08-19 2021-06-18 北京奇虎科技有限公司 一种编译安卓包开发文件的方法、服务器和系统
US10140105B2 (en) * 2016-03-10 2018-11-27 Wowza Media Systems, LLC Converting source code
US10419568B2 (en) * 2016-04-01 2019-09-17 Microsoft Technology Licensing, Llc Manipulation of browser DOM on server
ES2822997T3 (es) * 2016-04-07 2021-05-05 Contactoffice Group Método para satisfacer una solicitud criptográfica que requiere un valor de una clave privada
US10977017B2 (en) * 2016-04-23 2021-04-13 International Business Machines Corporation Warning data management for distributed application development
US10831637B2 (en) 2016-04-23 2020-11-10 International Business Machines Corporation Warning data management with respect to an execution phase
US10671038B2 (en) 2016-07-15 2020-06-02 Fisher-Rosemount Systems, Inc. Architecture-independent process control
CN108259332B (zh) * 2016-12-28 2021-04-02 航天信息股份有限公司 一种基于fsmp的报文传输的方法和系统
US10417036B2 (en) * 2017-02-24 2019-09-17 Oracle International Corporation Evaluation techniques for fast access to structured, semi-structured and unstructured data using a virtual machine that provides support for dynamic code generation
TWI648608B (zh) * 2017-03-20 2019-01-21 台達電子工業股份有限公司 空調設備的遠端智能有限狀態機控制系統
US10817492B2 (en) * 2017-05-05 2020-10-27 Servicenow, Inc. Application extension
CN107193625A (zh) * 2017-07-26 2017-09-22 郑州云海信息技术有限公司 一种脚本文件的处理方法及装置
US11360976B2 (en) 2017-08-31 2022-06-14 Oracle International Corporation Deployment of javascript and typescript stored procedures and user-defined functions into database management systems
EP3470103A1 (en) 2017-10-10 2019-04-17 Air Liquide Medical Systems Elbow connector for respiratory mask with a mesh structure for venting gas expired by the patient
US11216255B1 (en) * 2017-12-30 2022-01-04 ezbds, LLC Open compiler system for the construction of safe and correct computational systems
US11531947B2 (en) * 2018-10-19 2022-12-20 Oracle International Corporation System and method for software development including column-based process editor
CN112199219A (zh) * 2020-11-17 2021-01-08 南开大学 一种跨语言作业远程调用方法
CN113342356B (zh) * 2021-05-18 2023-03-28 浪潮软件股份有限公司 一种客户端框架运行及管理配置方法
US11461080B1 (en) 2021-06-07 2022-10-04 Snowflake Inc. Inline compilation of user defined functions
CN113703772A (zh) * 2021-08-23 2021-11-26 北京计算机技术及应用研究所 基于ice的异构平台高效智能计算应用架构及其构建方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04243429A (ja) * 1991-01-17 1992-08-31 Nec Corp コンパイラ
JPH05346858A (ja) * 1992-06-12 1993-12-27 Sony Corp プログラム編集方法
JPH07121379A (ja) * 1993-10-28 1995-05-12 Nec Software Ltd 複数言語混在コンパイラ
JPH10333917A (ja) * 1997-05-28 1998-12-18 Nec Software Ltd 分散コンパイル方式
JPH11328138A (ja) * 1998-05-20 1999-11-30 Hitachi Ltd 分散型コンピュータシステム
JPH11353189A (ja) * 1998-04-30 1999-12-24 Fuondotto Comu Japan Kk 手続き命令言語を使用したタグベ―スの表示言語をインプリメントするための方法及び装置
WO2000075777A2 (en) * 1999-06-07 2000-12-14 Microsoft Corporation Inferring operand types within an intermediate language
JP2002024032A (ja) * 2000-06-21 2002-01-25 Microsoft Corp 複数言語のコンパイル方法及びシステム
JP2002182915A (ja) * 2000-12-19 2002-06-28 Tokio Marine & Fire Insurance Co Ltd ソース・プログラム保管方法及びシステム、ソース・プログラム復元方法及びシステム、並びにコンパイル方法及び装置
WO2002063471A2 (en) * 2001-02-02 2002-08-15 Opentv, Inc. A method and apparatus for the compilation of an interpretative language for interactive television

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4667290A (en) * 1984-09-10 1987-05-19 501 Philon, Inc. Compilers using a universal intermediate language
IL100986A (en) * 1991-02-27 1997-01-10 Digital Equipment Corp Method for compiling code
US5812850A (en) * 1995-11-13 1998-09-22 Object Technology Licensing Corp. Object-oriented symbolic debugger using a compiler driven database and state modeling to control program execution
US5848274A (en) * 1996-02-29 1998-12-08 Supercede, Inc. Incremental byte code compilation system
US6003007A (en) * 1996-03-28 1999-12-14 Dirienzo; Andrew L. Attachment integrated claims system and operating method therefor
US5943424A (en) * 1996-06-17 1999-08-24 Hewlett-Packard Company System, method and article of manufacture for processing a plurality of transactions from a single initiation point on a multichannel, extensible, flexible architecture
US6003038A (en) * 1997-03-31 1999-12-14 Sun Microsystems, Inc. Object-oriented processor architecture and operating method
US6341372B1 (en) * 1997-05-01 2002-01-22 William E. Datig Universal machine translator of arbitrary languages
US6029000A (en) * 1997-12-22 2000-02-22 Texas Instruments Incorporated Mobile communication system with cross compiler and cross linker
US8006177B1 (en) * 1998-10-16 2011-08-23 Open Invention Network, Llc Documents for commerce in trading partner networks and interface definitions based on the documents
US6226675B1 (en) * 1998-10-16 2001-05-01 Commerce One, Inc. Participant server which process documents for commerce in trading partner networks
US6842894B1 (en) * 1999-04-05 2005-01-11 Gateway, Inc. Dynamic Compiling
US6526570B1 (en) * 1999-04-23 2003-02-25 Sun Microsystems, Inc. File portability techniques
US6286134B1 (en) * 1999-04-23 2001-09-04 Sun Microsystems, Inc. Instruction selection in a multi-platform environment
US6244545B1 (en) * 1999-06-18 2001-06-12 Lockheed Martin Corporation Snap-on wire guide
US6389590B1 (en) * 1999-06-22 2002-05-14 Microsoft Corporation Indefinite-size variables within an intermediate language
US6615235B1 (en) * 1999-07-22 2003-09-02 International Business Machines Corporation Method and apparatus for cache coordination for multiple address spaces
US6209124B1 (en) * 1999-08-30 2001-03-27 Touchnet Information Systems, Inc. Method of markup language accessing of host systems and data using a constructed intermediary
US6640244B1 (en) * 1999-08-31 2003-10-28 Accenture Llp Request batcher in a transaction services patterns environment
US6601234B1 (en) * 1999-08-31 2003-07-29 Accenture Llp Attribute dictionary in a business logic services environment
US6640238B1 (en) * 1999-08-31 2003-10-28 Accenture Llp Activity component in a presentation services patterns environment
US6550057B1 (en) * 1999-08-31 2003-04-15 Accenture Llp Piecemeal retrieval in an information services patterns environment
US6842906B1 (en) * 1999-08-31 2005-01-11 Accenture Llp System and method for a refreshable proxy pool in a communication services patterns environment
US6539396B1 (en) * 1999-08-31 2003-03-25 Accenture Llp Multi-object identifier system and method for information service pattern environment
US7246146B1 (en) * 1999-11-18 2007-07-17 International Business Machines Corporation Legacy host system hot link modeling and navigation
JP4042280B2 (ja) * 1999-12-21 2008-02-06 富士ゼロックス株式会社 実行プログラムの生成方法及び実行プログラム生成装置、実行プログラムの実行方法、並びに、コンピュータ可読プログラム記憶媒体
US6643652B2 (en) * 2000-01-14 2003-11-04 Saba Software, Inc. Method and apparatus for managing data exchange among systems in a network
US6968503B1 (en) * 2000-03-09 2005-11-22 Quovadx, Inc. XML user interface for a workflow server
US6950848B1 (en) * 2000-05-05 2005-09-27 Yousefi Zadeh Homayoun Database load balancing for multi-tier computer systems
US6898618B1 (en) * 2000-05-09 2005-05-24 Sun Microsystems, Inc. Client-specified display services in a distributed computing environment
IE20010467A1 (en) * 2000-05-16 2001-11-28 Garrett O'carroll A document processing system and method
US6629313B1 (en) * 2000-06-29 2003-09-30 Microsoft Corporation In-line database access statements without a pre-compiler
US6766511B1 (en) * 2000-07-10 2004-07-20 International Business Machines Corporation Apparatus and method for performing symbolic resolution of modules using static representations of a trace
US6988263B1 (en) * 2000-07-10 2006-01-17 International Business Machines Corporation Apparatus and method for cataloging symbolic data for use in performance analysis of computer programs
US6651248B1 (en) * 2000-09-01 2003-11-18 International Business Machines Corporation Method and apparatus for efficient interface method dispatch
US6971084B2 (en) * 2001-03-02 2005-11-29 National Instruments Corporation System and method for synchronizing execution of a batch of threads
US7111282B2 (en) * 2001-06-12 2006-09-19 Hewlett-Packard Development Company, L.P. Instrumenting a software program and collecting data from the instrumented software program by type
US6918107B2 (en) * 2001-07-02 2005-07-12 Bea Systems, Inc. Programming language extensions for processing data representation language objects and related applications
US6981250B1 (en) * 2001-07-05 2005-12-27 Microsoft Corporation System and methods for providing versioning of software components in a computer programming language
US7117504B2 (en) * 2001-07-10 2006-10-03 Microsoft Corporation Application program interface that enables communication for a network software platform
US7165239B2 (en) * 2001-07-10 2007-01-16 Microsoft Corporation Application program interface for network software platform
US7093243B2 (en) * 2002-10-09 2006-08-15 International Business Machines Corporation Software mechanism for efficient compiling and loading of java server pages (JSPs)
AU2003295762A1 (en) * 2002-11-19 2004-06-15 Nexaweb Technologies, Inc. System and method for stateful web-based computing
US7614052B2 (en) * 2004-01-09 2009-11-03 Nexaweb Technologies Inc. System and method for developing and deploying computer applications over a network

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04243429A (ja) * 1991-01-17 1992-08-31 Nec Corp コンパイラ
JPH05346858A (ja) * 1992-06-12 1993-12-27 Sony Corp プログラム編集方法
JPH07121379A (ja) * 1993-10-28 1995-05-12 Nec Software Ltd 複数言語混在コンパイラ
JPH10333917A (ja) * 1997-05-28 1998-12-18 Nec Software Ltd 分散コンパイル方式
JPH11353189A (ja) * 1998-04-30 1999-12-24 Fuondotto Comu Japan Kk 手続き命令言語を使用したタグベ―スの表示言語をインプリメントするための方法及び装置
JPH11328138A (ja) * 1998-05-20 1999-11-30 Hitachi Ltd 分散型コンピュータシステム
WO2000075777A2 (en) * 1999-06-07 2000-12-14 Microsoft Corporation Inferring operand types within an intermediate language
JP2002024032A (ja) * 2000-06-21 2002-01-25 Microsoft Corp 複数言語のコンパイル方法及びシステム
JP2002182915A (ja) * 2000-12-19 2002-06-28 Tokio Marine & Fire Insurance Co Ltd ソース・プログラム保管方法及びシステム、ソース・プログラム復元方法及びシステム、並びにコンパイル方法及び装置
WO2002063471A2 (en) * 2001-02-02 2002-08-15 Opentv, Inc. A method and apparatus for the compilation of an interpretative language for interactive television

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009512032A (ja) * 2005-10-14 2009-03-19 リサーチ イン モーション リミテッド 図形表示言語およびネイティブuiオブジェクトを用いる表示
JP2013101655A (ja) * 2006-07-12 2013-05-23 Qualcomm Inc Sigcompudvmパフォーマンスの最適化のための方法および装置
JP2011501325A (ja) * 2007-10-26 2011-01-06 クゥアルコム・インコーポレイテッド サーバ−ベースのコードコンパイル
KR101907422B1 (ko) 2012-02-10 2018-10-12 한국전자통신연구원 네트워크 애플리케이션 통합 개발장치, 그 통합 개발방법 및 그것을 이용하는 서버
US9075913B2 (en) 2012-02-27 2015-07-07 Qualcomm Incorporated Validation of applications for graphics processing unit

Also Published As

Publication number Publication date
US20040143823A1 (en) 2004-07-22
WO2004063900A3 (en) 2007-05-31
US7707563B2 (en) 2010-04-27
US20090007160A1 (en) 2009-01-01
WO2004063900A2 (en) 2004-07-29
EP1588230A2 (en) 2005-10-26
EP1588230A4 (en) 2008-05-07

Similar Documents

Publication Publication Date Title
US7707563B2 (en) System and method for network-based computing
US10839141B2 (en) System and method for provisioning a mobile software application to a mobile device
US7321918B2 (en) Server-side control objects for processing client-side user interface elements
US7917888B2 (en) System and method for building multi-modal and multi-channel applications
US8578333B2 (en) Method and system for client-side user interface enhancement to enable application integration and portalisation
US8832181B2 (en) Development and deployment of mobile and desktop applications within a flexible markup-based distributed architecture
US20060031833A1 (en) Methods and apparatus for a web application processing system
WO2005074490A2 (en) System and method for developing and deploying computer applications over a network
US20040268249A1 (en) Document transformation
CN101876998B (zh) 一种实现数据编辑的方法和系统
US20060041890A1 (en) Portal runtime framework
WO2005114389A1 (en) Portal runtime framework
Moroney Beginning Web Development, Silverlight, and ASP. NET AJAX: From Novice to Professional
Cut-Hennies et al. Department of MSc. IT Project Report Computer 2002 Science

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090710

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100224

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100517

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100524

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100621

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100628

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101007