JPH08263447A - 分散型コンピュータシステム及びその動作方法 - Google Patents
分散型コンピュータシステム及びその動作方法Info
- Publication number
- JPH08263447A JPH08263447A JP7349164A JP34916495A JPH08263447A JP H08263447 A JPH08263447 A JP H08263447A JP 7349164 A JP7349164 A JP 7349164A JP 34916495 A JP34916495 A JP 34916495A JP H08263447 A JPH08263447 A JP H08263447A
- Authority
- JP
- Japan
- Prior art keywords
- computer
- viewer
- program
- stack
- data type
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44589—Program code verification, e.g. Java bytecode verification, proof-carrying code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Information Transfer Between Computers (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
を自動的にダウンロードするとともにロードしたプログ
ラムの保全性をベリファイするコンピュータを含む分散
型コンピュータシステム及びその動作方法を提供するこ
と。 【解決手段】 本発明は、他のサーバなどに格納され
ているデータ(オブジェクト)をネットワークを介して
ロードして参照するとき、そのオブジェクトに対応する
ビューワを自動的にサーチし、他のサーバなどで適切な
ビューワが見つかった場合、そのビューワを起動する前
に、保全性を確認するためベリフィケーションを行うこ
とを主な特徴とする。本発明は、特にバイトコード言語
で書かれたプログラムに対するデータタイプとスタック
の使用に関するベリフィケーションに重点を置いてい
る。
Description
本マシン命令セットを用いる複数のコンピュータプラッ
トフォーム上のコンピュータソフトウェアの利用法に関
する。特に、ネットワークサーバまたは他のソースから
得られるコンピュータソフトウェアの保全性をベリファ
イ(検証)する方法に関する。
型的な従来のネットワーク化されたコンピュータシステ
ム100に於いて、第1コンピュータ102は、第2コ
ンピュータ104にあるコンピュータプログラム103
をダウンロードすることができる。この例では、第1ユ
ーザノード102は、典型的には、中央演算装置(CP
U)106、ユーザインタフェース108、プログラム
実行用の主メモリ110(例えばRAM)、オペレーテ
ィングシステム113、文献及び他のデータを格納する
ための補助記憶装置112(例えばハードディスク)、
及びコンピュータネットワーク120(例えばインター
ネット、ローカルエリアネットワークまたはワイドエリ
アネットワーク)に接続するためのモデムなどのコミニ
ュケーションインタフェース114を有するユーザワー
クステーションである。コンピュータ102及び104
は、“ネットワーク上のノード”または“ネットワーク
ノード”と呼ばれることもある。
ーバであるのが一般的だが、第2ユーザワークステーシ
ョンであっても良く、通常、第1コンピュータと基本的
に同じコンピュータ要素を含んでいる。
ピュータ104からコンピュータプログラム103のコ
ピーをダウンロードした後に、第1コンピュータ102
のユーザが、ダウンロードされたプログラム103の保
全性をベリファイするのを支援するための標準的なツー
ルは実質的にない。特に、第1コンピュータのユーザ
が、ダウンロードされたプログラムのソースコードを調
べない限り、従来技術のツールを用いて、ダウンロード
されたプログラム103がスタックに対しアンダーフロ
ーやオーバフローとならないか、或いはダウンロードさ
れたプログラム103がユーザコンピュータのファイル
や他のリソースに悪影響を与えないかどうかを判断する
ことは実質的に不可能である。
のコンピュータソフトウェアのダウンロードに関する別
の問題は、個別の基本マシン命令セットを用いているコ
ンピュータプラットフォーム間のコンピュータソフトウ
ェアの転送の問題である。従来も、プラットフォームに
依存しないコンピュータプログラムやプラットフォーム
に依存しないコンピュータプログラミング言語の例はい
くつかある。従来技術に欠けているのは、ネットワーク
サーバまたは他のソースから得られる、プラットフォー
ムに依存しないコンピュータソフトウェアの保全性を、
そのソフトウェアを受け取った人がベリファイするのを
可能にする信頼の置ける自動ソフトウェアベリフィケー
ション(verification)ツールである。
ドするオブジェクトまたはファイルをユーザが選択した
後に、そのオブジェクトまたはファイルに関連するソフ
トウェアを自動的にダウンロードするための方法に関す
る。例えば、“ワールドワイドウェブ(World Wide We
b:WWW)”として知られている、インターネットで
広く用いられている機能があるが、このWWW上で、あ
る文献を検索しているとき、その文献のあるページに、
他の文献またはオブジェクトへのリファレンス(参照)
が含まれていることがある。ユーザは、所与のオブジェ
クトを選択することによって、関連するハイパーリンク
を介し、それらの文献またはオブジェクトにアクセスす
ることができる。そのような選択は、通常、ユーザがワ
ークステーションノードのグラフィカルユーザインタフ
ェースを使い、ポインタデバイスを用いてハイパーリン
クを表すグラフィックイメージを指定し、ポインタデバ
イス上のボタンを押すことによって行われる。ハイパー
リンクの選択に応答して、ユーザのウェブアクセスプロ
グラムは、参照したい文献またはオブジェクトが格納さ
れているサーバ(その時見ている文献またはオブジェク
ト内のハイパーリンクに組み込まれているデータによっ
て示されている)への接続を開き、それらの文献または
オブジェクトをダウンロードする。しかしながら、ダウ
ンロードされる文献またはオブジェクトのデータタイプ
が、ユーザのウェブアクセスプログラムにとって既知で
ない場合、ユーザはダウンロードした文献を見ることが
できないか、或いは見ることはできても用いることがで
きない。
ばしば文献またはオブジェクトを検索してきたサーバ
や、或いは他のサーバのプログラムライブラリを調べ
て、ダウンロードした文献またはオブジェクトに対応す
るビューワ(viewer)をマニュアルで見つけようと試み
るかもしれない。ユーザのコンピュータプラットフォー
ムとコンパチビリティ(compatibility)のあるビュー
ワが見つかると、ユーザはそのビューワをダウンロード
し、それを起動(実行)して、前にダウンロードしたオ
ブジェクトを見ようとするだろう。しかしながら、出所
のはっきりしないビューワを実行することには、かなり
大きなリスクがある。例えば、ダウンロードしたビュー
ワプログラムが“ウィルス”に感染しており、ユーザの
コンピュータの保全性を損なうかもしれない。或いは、
ユーザの期待に反して、ダウンロードしたプログラム自
身がリソースへのアクセス及び/またはユーザコンピュ
ータのデータの破壊を行う可能性もある。本発明は、文
献乃至オブジェクトに対応するビューワを自動的にダウ
ンロードするとともに、ダウンロードしたビューワを起
動する前に、そのプログラムの保全性を自動的にベリフ
ァイすることによってこのような問題を解消するもので
ある。
明の主な目的は、参照しようとする、他のコンピュータ
(サーバなど)に含まれる文献またはオブジェクトに対
応するビューワを自動的にダウンロードするとともに、
ダウンロードしたビューワを起動する前に、そのプログ
ラムの保全性を自動的にベリファイするコンピュータを
含む分散型コンピュータシステム及びその動作方法を提
供することである。
ュータノードからオブジェクト及びオブジェクトビュー
ワを検索(即ちダウンロード)したり、オブジェクトを
見るべく、格納したオブジェクトビューワを起動したり
するための“クラスローダ(class loader)”に関す
る。ユーザが、例えばWWWのハイパーリンク機能を用
いることによって見たいオブジェクトを選択すると、従
来と同様に、参照されるオブジェクト(被参照オブジェ
クトとよぶこともある)のダウンロードが開始される。
しかしながら、本発明のクラスローダは、オブジェクト
のダウンロードプロセス開始時に受け取るデータタイプ
情報を用いて、参照するオブジェクトに対応するビュー
ワが、ユーザワークステーションに於いて入手可能かど
うかをまず調べる。
に於いて得られない場合、クラスローダは、オブジェク
トをダウンロードしているサーバ、或いはユーザのワー
クステーションが認識している他の適切なサーバから適
切なビューワを自動的に見つける。クラスローダは、見
つけたビューワをダウンロードした後、このビューワを
起動する前に、その保全性をベリファイするためプログ
ラムベリフィケーションプロシージャを呼び出す。いっ
たんベリファイされると、ビューワはユーザのローカル
ビューワライブラリに加えられ、被参照オブジェクトの
ダウンロードは終了し、ダウンロードしたオブジェクト
を見るためのビューワの起動がイネーブルされる。
見つけた唯一のビューワがベリフィケーションプロシー
ジャを通過できない場合は、参照しようとしていたオブ
ジェクトのダウンロードはアボートされる。
依存したバイトコードセットを用いたバイトコード言語
(“OAK言語(OAK language)”として商品化さ
れている)で書かれたコンピュータプログラムの保全性
をベリファイする。この言語で使用可能なソースコード
のバイトコードは、(A)処理可能なデータタイプにつ
いて制約があるスタックデータ消費型バイトコードであ
る、(B)スタックデータは使用しないが、データタイ
プが既知であるデータをスタックに加えたり、データタ
イプに関係なくスタックからデータを取り出したりする
ことによってスタックに影響を与える、或いは(C)ス
タックデータの使用も、スタックへのデータの付加もし
ないのいずれかである。
を実行する前に、データタイプがマッチしていないデー
タを処理しようとする命令がないかどうか、あるいはそ
の指定されたプログラム内のバイトコード命令の実行に
よってオペランドスタックのアンダーフローやオーバフ
ローが生じないかどうかをチェックし、そのようなプロ
グラムを使用するのを避けるための方法及びベリファイ
ヤが提供される。
イヤは、指定されたバイトコードプログラムを実行する
とき、プログラムオペランドスタック内に格納されるデ
ータを示すスタック情報を一時的に格納するための仮想
スタック(virtual stack)を含んでいる。このベリフ
ァイヤは、プログラムの各ポイントに於いてオペランド
スタックに格納されるであろうデータの数、順番、及び
データタイプを示すように仮想オペランドスタックを更
新しながらプログラムの各バイトコード命令を順次処理
していくことによって、指定されたプログラムを処理す
る。このベリファイヤは、仮想スタックの情報と、各バ
イトコード命令のデータタイプに関する制約とを比べ
て、プログラムを実行したときオペランドスタックにバ
イトコード命令のデータタイプに関する制約に適合しな
いデータが含まれるようなことがないかどうか判定する
とともに、指定されたプログラム内のバイトコード命令
によってオペランドスタックのアンダーフローやオーバ
フローが生じるようなことはないかどうかチェックす
る。
かく分析しなくていいように、またバイトコード命令を
何度もベリファイしなくていいように、指定されたプロ
グラム内に於いて別個の2以上のバイトコードの実行の
直後に実行され得る全てのポイント(多重エントリポイ
ントと呼ぶ)がリストアップされる。一般に、そのよう
な先行する2以上の別個のバイトコードの少なくとも一
つは、ジャンプ/分岐バイトコードである。指定された
プログラムの処理時、ベリファイヤは、各多重エントリ
ポイントの直前(即ち、先行するバイトコード命令の一
つの後)の仮想オペランドスタックの“スナップショッ
ト”をとり、このスナップショットを、同じ多重エント
リポイントに対する他の先行するバイトコード命令の各
々を処理した後の仮想スタックステータスと比較して、
仮想スタックステータスが同一でない場合はプログラム
フォールト(program fault)を生成する。
に説明する。これらの例は添付の図面に図示されてい
る。本発明を好適実施例に基づいて説明するが、理解さ
れるように、それらは本発明をそれらの実施例に限定す
ることを意図するものではない。本発明は、特許請求の
範囲によって画定される本発明の精神及び範囲に含まれ
るべき変形変更及び等価物を含むものである。
00を参照されたい。第1コンピュータノード202
は、例えばインターネットのようなコンピュータコミュ
ニケーションネットワーク216を介して第2コンピュ
ータノード204とつながっている。第1コンピュータ
ノード202は、中央演算装置(CPU)206、ユー
ザインタフェース208、主メモリ(RAM)210、
補助記憶装置(ディスク記憶装置)212、及び第1コ
ンピュータノード202をコンピュータコミュニケーシ
ョンネットワーク216につなげるためのモデムその他
のコミュニケーションインタフェース214を含んでい
る。ディスク記憶装置212は、データファイルその他
の情報と共に、CPU206によって実行されるプログ
ラムを格納する。
は、ファイルや他の情報のサーバとして構成されている
ものとする)は、CPU218、ユーザインタフェース
220、主メモリ(RAM)222、補助記憶装置(デ
ィスク記憶装置)224、及びコンピュータコミュニケ
ーションネットワーク216と第2コンピュータノード
とを接続するためのモデムその他のコミュニケーション
インタフェース226を含んでいる。ディスク記憶装置
224は、ファイル及び/またはオブジェクトディレク
トリ228(ディスクディレクトリまたはカタログと呼
ばれることもある)を含んでいる。ディスクディレクト
リ228は、補助記憶装置224内に格納されている情
報、即ち、CPU218によって実行されたり他のコン
ピュータノードに配布されたりするプログラム234、
ビューワライブラリ232、及びオブジェクト230の
位置を示す。
ンピュータノード204は、それぞれが異なるコンピュ
ータプラットフォーム及びオペレーティングシステム2
36、237を用い、これらの2つのコンピュータノー
ドの一方で実行されるオブジェクトコードプログラム
が、他方のコンピュータでは実行できないことがあって
もよい。例えば、サーバノード204をUnixオペレ
ーティングシステムを用いたサン・マイクロシステムズ
社のコンピュータとし、ユーザワークステーションノー
ド202を80486マイクロプロセッサとマイクロソ
フト社のDOSオペレーティングシステムを用いたIB
M互換機とすることもできる。更に、同じネットワーク
に接続され、同じサーバ204を利用する他のユーザワ
ークステーションに於いて、様々なコンピュータプラッ
トフォーム及びオペレーティングシステムを用いてもよ
い。
有するネットワークでソフトウェアを配布するためのサ
ーバ204は、各コンピュータプラットフォーム(例え
ば、Unix、ウィンドウズ、DOS、マッキントッシ
ュなど)に対して個別のソフトウェアライブラリ(例え
ば個別のビューワライブラリ232)を有していた。そ
の結果、様々なシステムのユーザの要望に応えるため、
サーバは同じコンピュータプログラムの様々なバージョ
ン(例えば238、239)と、複数のオブジェクトビ
ューワ(例えば241、243)の両方を、各コンピュ
ータプラットフォームタイプに対し一つずつ格納する必
要があった。しかしながら、本発明を用いると、一種類
のバイトコードバージョンのプログラムを配布すること
によって、多様なユーザをサポートすることができる。
タシステム250を示す。第1コンピュータノード25
2は、例えばインターネットのようなコンピュータコミ
ュニケーションネットワーク266を介して第2コンピ
ュータノード254につながっている。ここでもまた、
従来と同様に、第1コンピュータノード252と第2コ
ンピュータノード254が、別個のコンピュータプラッ
トフォーム及びオペレーティングシステム255、25
6を用い、一方のコンピュータで実行されるオブジェク
トコードプログラムが他方のコンピュータで実行できな
くても良い。例えば、図2を参照して上述したように、
サーバノード254がUnixオペレーティングシステ
ムを用いたサンマイクロシステムズ社のコンピュータ
で、ユーザワークステーションノード252が8048
6マイクロプロセッサとマイクロソフト社のDOSオペ
レーティングシステムを用いたIBM互換機であっても
よい。第1コンピュータノード252は、CPU25
7、ユーザインタフェース258、主メモリ(RAM)
260、補助記憶装置(ディスク記憶装置)262、及
びコンピュータコミュニケーションネットワーク266
に第1コンピュータノード252を接続するためのモデ
ムその他のコミュニケーションインタフェース264を
含んでいる。ディスク記憶装置262は、CPU257
によって実行されるプログラムを格納する。これらのプ
ログラムの少なくとも一つは実行可能形式のバイトコー
ドプログラム267である。説明のため、第1コンピュ
ータノード252が、第2コンピュータノード254か
らコンピュータコミュニケーションネットワーク266
を介してバイトコードプログラム267を受け取ること
とする。その詳細について、クラスローダと共に以下に
説明する。
はOAKアプリケーションとして書かれており、コンパ
イルまたはインタープリットされて、一連の実行可能な
命令になる。OAK命令セットの全ソースコードバイト
コード命令(source code bytecode instructions)の
リストを表1に示す。OAK命令セットは、データタイ
プに依存する(即ちデータタイプが特定されている)バ
イトコード命令によって特徴付けられる。詳述すると、
OAK命令セットでは、異なるデータタイプに対する同
じ基本操作に別個の操作コード(opcode)を付すことに
よって、それらを区別している。その結果、同じ基本機
能(例えば2つの数字の加算)を実行するために、それ
ぞれ対応する特定のデータタイプのデータだけを処理す
る複数のバイトコードが命令セット内に含まれている。
更に、OAK命令セットに含まれていない命令について
も注意されたい。例えば、OAK言語命令セットには
“計算されたgoto(computed goto)”命令はな
く、オブジェクトリファレンスを変更したり、新たなオ
ブジェクトリファレンスを生成する命令もない(既存の
オブジェクトリファレンスのコピー命令は除く)。OA
K命令セットに関するこれらの2つの制約は、他の制約
とともに、OAK命令セットに含まれるデータタイプが
特定された命令と同じようにデータを用いるバイトコー
ドプログラムであれば、ユーザのコンピュータシステム
の保全性を損なうことはないということを保証するのに
役立っている。
は、整数、倍長整数(long integer)、ショートインテ
ジャ(16ビット信号の整数)、単精度浮動小数点数、
倍精度浮動小数点数、バイト、キャラクタ、及びオブジ
ェクトポインタ(本明細書中では、オブジェクトリファ
レンスと呼ぶこともある)がある。各“オブジェクトリ
ファレンス”データタイプはデータタイプの一部として
オブジェクトクラス仕様(object class specificatio
n)を含むことができるため、“オブジェクトリファレ
ンス”データタイプに含まれるデータのサブタイプの数
には実質的に制限がない。更に、プログラム内で用いら
れる定数もデータタイプを有しており、好適実施例で使
用される定数のデータタイプには、上述したデータタイ
プに加えて、class、fieldref、methodref、string、及
びAscizが含まれる。それらは全て特定の目的を持った
2バイト以上の定数データを表す。
中には、スタック操作機能を有するものがいくつかあ
る。スタック操作機能には(A)スタック上の1または
複数のワードを複製して、それらをスタック内の特定の
位置に配置し、それによってデータタイプが既知のより
多くのスタックアイテム(stack item)を生成する機
能、(B)1または複数のアイテムをスタックから消去
する機能などが含まれる。他の少数のデータタイプに依
存しないバイトコードには、スタック上のワードを全く
用いずスタックを変化させなかったり、あるいは、スタ
ック上にあるワードを使用することはないがスタックに
ワードを加えたりするものがある。これらのバイトコー
ドは、それらが実効される前のスタックの内容について
データタイプに関する制約はないが、スタック内のアイ
テムのデータタイプに関してスタックの内容を変化させ
る。ただし、その変化のさせかたは全く予測可能であ
る。従って、スタック内の全てのオペランドのデータタ
イプ及びその数は、100%の精度で常に予測(即ち計
算)可能である。
ファイルまたは他の情報サーバとして構成されているも
のとする)は、CPU268、ユーザインタフェース2
70、主メモリ(RAM)272、補助記憶装置(ディ
スク記憶装置)274、及びコンピュータコミュニケー
ションネットワーク266に第2コンピュータノードを
接続するためのモデムその他のコミュニケーションイン
タフェース276を含んでいる。ディスク記憶装置27
4は、ディスクディレクトリ280、第1オブジェクト
283を含むオブジェクト282、ビューワライブラリ
284、及びCPU268によって実行されたり、及び
/または他のコンピュータノードに配布されたりするプ
ログラム286(それらのうちの少なくとも一つはコン
ピュータノード252に転送されるバイトコードプログ
ラム267である)を含んでいる。
ータノード252の補助記憶装置262内には、他のコ
ンピュータノードからオブジェクトビューワやオブジェ
クトを検索(即ちダウンロード)し、格納したオブジェ
クトビューワを呼び出してオブジェクトを見るためのク
ラスローダプログラム296が格納されている。また、
クラスローダ296は、ダウンロードされたオブジェク
トビューワがユーザによって起動される前に、そのビュ
ーワを(エンドユーザワークステーションノードに於い
て)自動的にベリファイし、その保全性をチェックす
る。
ビューワを用いることによって“見る”ことが可能な
“オブジェクト”は、(A)JPEG、GIF、MPE
G、あるいはMPEG2データといった特定のタイプま
たはフォーマットのデータを含むファイルその他のデー
タ構造の、メソッド(method)またはソフトウェアが組
み込まれていないデータオンリー型オブジェクト(data
-only type of object)、あるいは(B)1または複数
のメソッドが組み込まれており、オプションとしてデー
タも含み得るファイルその他のデータ構造の、メソッド
格納型オブジェクト(method-storing object)のいず
れかである。例えばJPEGやGIFのようなイメージ
データタイプを格納しているデータオンリー型オブジェ
クトを見るため、あるいは、例えばMPEGやMPEG
2のようなビデオプログラムデータタイプを格納してい
るデータオンリー型オブジェクトを見るためには、特定
のビューワが必要であろう。他の例として、データの図
表を見るためのビューワや、(解読のキーがユーザに既
知の場合)暗号化されたデータを見るためのデータ解読
ソフトウェアが含まれたビューワなどがあり得る。
いたメソッド格納型オブジェクトに対して特定のビュー
ワが必要となることがある。例えば、様々なメソッド格
納型オブジェクトの様々なタイプの内部プログラムが、
特定の記述言語を用いていたり、ユーティリティプログ
ラムの様々なライブラリの使用を仮定していたりするこ
とによって、特定のビューワが必要となることがある。
ある)”は、指定されたオブジェクト内のデータ及び/
または命令のデコードを行う。また、一般に特定のデー
タタイプまたはクラスのオブジェクトを使用可能にする
ために必要とされている計算及び処理を全て実行する。
本発明では、そのようなオブジェクトビューワは、ソー
スコードバイトコード言語(source code bytecode lan
guage)で書かれたバイトコードプログラムであり、各
オブジェクトビューワの保全性は、バイトコードプログ
ラムベリファイヤ240を実行することによって、エン
ドユーザにより個別にベリファイすることができる。バ
イトコードプログラムのベリフィケーションについて、
以下により詳細に説明する。
発明によるプラットフォームに依存しないオブジェクト
ビューワを含むことができるとともに、プラットフォー
ムに依存し、本発明によるバイトコードプログラムベリ
ファイヤ240及びクラスローダ296を用いてベリフ
ァイすることのできない他のオブジェクトビューワも含
むことができるという点に注意されたい。このようなハ
イブリッドシステムでは、本発明による自動ビューワ保
全性ベリフィケーションは、バイトコードビューワプロ
グラムに対しては利点があるが、他のビューワプログラ
ムに対しては利点がない。
からのオブジェクトビューワ及びオブジェクトのロード
及びベリフィケーション用実行可能プログラムである。
例えば、インターネットのWWW上である文献を検索す
るとき、その文献のあるページに他の文献またはオブジ
ェクトへのリファレンスが含まれていることがある。ユ
ーザは、そのような他の文献またはオブジェクトに、関
連するハイパーリンクを介して所与のオブジェクトを選
択することによってアクセスすることができる。そのよ
うな選択操作は、通常、ワークステーションノード上の
グラフィカルユーザインタフェースを利用して、ポイン
タデバイスを用いてハイパーリンク選択を表すグラフィ
ックイメージを指し示し、ポインタデバイス上のボタン
を押すことによって、ユーザにより為される。
文献またはオブジェクトにリファレンスが含まれている
他の文献またはオブジェクトの中には、データタイプが
ユーザのワークステーションに既知でないものもあるだ
ろう。本発明のクラスローダは“既知でない”データタ
イプに対応するビューワを見つけると共に、ダウンロー
ドされたバイトコードプログラムがユーザによって実行
される前に、それらの保全性をベリファイするのに用い
られる。
がある。第1に、クラスローダはダウンロードされたオ
ブジェクト(及びそれらの関連するバイトコードプログ
ラム)のデータタイプをチェックし、ユーザワークステ
ーションが、その固有の記憶装置262に格納されてい
る“ビューワライブラリ”298内に、対応するビュー
ワを有しているかどうかを調べる。第2に、適切なビュ
ーワを見つけることができなかった場合、クラスローダ
は、ソースサーバと、認識している他のサーバとに対し
てサーチルーチンを実行し、適切なビューワを見つけて
ダウンロードすることを試みる。ビューワを見つけるこ
とができなかった場合は、ダウンロードされているオブ
ジェクト及び/またはバイトコードプログラムを、適切
なビューワがないという理由でリジェクトする。最後
に、リモートソースに適切なビューワが見つかった場
合、クラスローダは、バイトコードベリファイヤ240
を起動し、バイトコードプログラムインタープリタ24
2によってビューワが実行される前に、またはバイトコ
ードプログラムコンパイラ244によってコンパイルさ
れる前に、ダウンロードされたビューワをチェックす
る。ベリフィケーション後、ダウンロードされたビュー
ワは、ユーザのローカルビューワライブラリ298内に
格納される。
プログラム296の動きが、関連するオブジェクトを介
したバイトコードプログラムの検索に対し詳細に記載さ
れている。付録1は、クラスローダプログラムを表す疑
似コード(pseudocode)のリストである。付録1で用い
られている疑似コードは、本質的には、従来の汎用コン
ピュータ言語を用いたコンピュータ言語と同等である。
本願中で用いられている疑似コードは、本発明を説明す
る目的で作られたものであり、本分野で標準的な知識を
有するコンピュータプログラマであれば容易に理解する
ことができるように意図して書き下してある。
ステーション252は、ダウンロードされるオブジェク
ト283が格納されているサーバ254への接続を開
き、ダウンロードプロセスを開始する(304)。クラ
スローダ296は、オブジェクトのハイパーリンク選択
により、オブジェクトバイトコードプログラムの転送を
開始し、サーバ254は参照されるオブジェクトに対す
る“ハンドル(handle)”を、ユーザワークステーショ
ン252に転送する(306)。ハンドルは、参照され
るオブジェクト本体に先だって検索される。また、ハン
ドルには、オブジェクトのデータタイプ(オブジェクト
クラスと呼ぶこともある)を含む、被参照オブジェクト
の属性に関する情報が含まれる。
ジェクトに関連するデータタイプが、ユーザシステムに
既知であるかどうかが判定される(308)。詳述する
と、クラスローダは、ユーザワークステーション252
の補助記憶装置262内にあるビューワライブラリ29
8をサーチして、特定のデータタイプを有するこのオブ
ジェクトに対する適切なビューワが、アクセス可能かど
うかチェックする。ビューワライブラリ298には、そ
の時々に於いてユーザワークステーションによってアク
セス可能な全てのデータタイプのビューワと、それらの
メモリ内の位置とを示すリストが含まれている。このよ
うにして、クラスローダは、参照されるオブジェクト本
体を実際にダウンロードする前に、最初のハンドシェイ
クプロセスに於いてダウンロードされるオブジェクトを
前処理し、そのオブジェクトとユーザワークステーショ
ンプラットフォームのコンパチビリティをチェックす
る。適切なビューワが見つかった場合、クラスローダは
被参照オブジェクトのダウンロードを完了する(31
0)。
98内に見つからなかった場合(即ち、選択されたオブ
ジェクトのデータタイプがユーザワークステーション2
52に既知でないことを意味する)、クラスローダは適
切なビューワのサーチを行う。通常、ビューワのサーチ
を試みる最初の場所は、選択されたオブジェクトが格納
されているのと同じサーバである。従って、クラスロー
ダは、被参照オブジェクトが格納されているのと同じサ
ーバに対して第2の接続を開き(312)、指示されて
いるデータタイプに対応するビューワをリクエストする
(314)。このサーバが適切なビューワを含んでいる
場合、そのビューワはユーザワークステーションにダウ
ンロードされる(315)。
ウンロードされたビューワがバイトコードプログラムの
場合(316)、クラスローダは、バイトコードプログ
ラムベリファイヤ240を呼び出して、そのビューワプ
ログラムのベリフィケーションを開始する(317)。
バイトコードプログラムベリファイヤ240は実行可能
プログラムであり、CPU257によってバイトコード
プログラムが実行される前に、指定されたバイトコード
(ソース)プログラムを、スタック操作の適正さや、オ
ペランドデータタイプコンパチビリティについてベリフ
ァイする。バイトコードベリファイヤプログラム240
の動作については、後により詳細に説明する。ベリフィ
ケーション結果が正常の場合(318)、サーバサーチ
ャ(server searcher)はベリファイされたオブジェク
トビューワをビューワライブラリ298内に格納し、新
たなデータタイプビューワが使用可能になったことが反
映されるようにライブラリ内のディレクトリを更新する
(319)。ベリフィケーションが正常でなかった場
合、ダウンロードされたビューワは削除される(32
0)。
可能で、かつベリファイ可能なオブジェクトビューワと
ベリファイ不能なオブジェクトビューワの両方を使用す
ることができるものもある。このような実施例では、オ
ブジェクトビューワのダウンロード(315)の後、ダ
ウンロードされたオブジェクトビューワがバイトコード
プログラムでない場合(316)、そのオブジェクトビ
ューワをアクセプトするか否かに対し判定がなされる
(321)。例えば、そのオブジェクトビューワをアク
セプトするかどうかユーザに質問してもよく、あるいは
そのようなオブジェクトビューワをアクセプトするかど
うかを予め決めてコンフィギュレーションファイル(co
nfiguration file)に含ませておいてもよい。ベリファ
イ不能なオブジェクトビューワがアクセプトされる場
合、そのオブジェクトビューワはビューワライブラリ内
に格納される(319)。アクセプトされない場合、ダ
ウンロードされたビューワは削除される(320)。
なビューワを格納しておらず、ステップ308及び31
4で、選択されたオブジェクトに対し用いるのに適切な
ビューワが見つからなかった場合、クラスローダは、ユ
ーザワークステーションに認識されている他のサーバま
たはリモートユーザワークステーション(例えば認識さ
れているサーバのリスト327)を含むように探索範囲
を広げる。再度図3を参照されたい。図3に示されてい
る第2サーバ324は、ビューワライブラリ326を有
する補助記憶装置(ディスク記憶装置)325を含んで
いる。適切なビューワが第2サーバ324のビューワラ
イブラリ326内で見つかった場合、クラスローダは、
上述したステップ315〜321に従って、そのビュー
ワプログラムをダウンロードしベリファイする。クラス
ローダはこのプロセスを繰り返し、全ての認識されてい
るリソースについて調べ尽くすか、または適切なビュー
ワを見つけてベリファイするまで、順次サーバをチェッ
クする。最終的に、適切なビューワを見つけることがで
きなかった場合、被参照オブジェクトのダウンロードは
アボートされ、被参照オブジェクトに対応するビューワ
が見つからなかったことをユーザに通知するべく、ユー
ザメッセージが生成される(328)。
ーワが予めユーザワークステーション上のビューワライ
ブラリ298に格納されていた場合(308)、或いは
適切なオブジェクトビューワのダウンロード、ベリフィ
ケーション、及びユーザビューワライブラリへの組み込
みが成功した場合、選択されたオブジェクトのロードが
完了する(310)。ダウンロードされたオブジェクト
に1または複数のバイトコードプログラムが組み込まれ
ている場合、従ってメソッド格納型オブジェクトである
場合(330)、ダウンロードされたオブジェクト内の
バイトコードプログラムは、これらの組み込みプログラ
ムに関し、バイトコードベリファイヤを実行することに
よりベリファイされる(332)。組み込みプログラム
の処理が終了し、ベリファイヤが“成功”リターンコー
ドを生成する場合(334)、ダウンロードされたオブ
ジェクトは対応するオブジェクトビューワによって見る
ことができる(335)。ベリファイヤの要求に従わな
いプログラムを検出することによって、ベリファイヤが
組み込みプログラムの処理をアボートした場合(33
4)、ダウンロードされたオブジェクトは削除され(3
36)、適切なユーザメッセージが生成される。
みバイトコードプログラムが含まれていない場合(33
0)、ステップ332乃至334はスキップされ、オブ
ジェクトは適切なビューワによって見ることができる
(335)。
ように、第1コンピュータノード252は、その補助記
憶装置262内に、指定されたバイトコードプログラム
の保全性をベリファイするためのバイトコードベリファ
イヤプログラム240と、指定されたバイトコードプロ
グラムを実行するためのバイトコードインタープリタ2
42を格納している。別の手段として、または追加し
て、第1コンピュータノード252は、ベリファイされ
たバイトコードプログラムをオブジェクトコードプログ
ラムに変換し、インタープリタ242より効率的にバイ
トコードプログラムを実効するバイトコードコンパイラ
244を格納していてもよい。
能プログラムであり、バイトコードプログラムがバイト
コードインタープリタ242の制御下でCPU257に
よって実行される前に(またはバイトコードプログラム
がコンパイラ244によってコンパイルされる前に)、
指定されたバイトコード(ソース)プログラムに於ける
スタック操作の適正さや、オペランドデータタイプコン
パチビリティをベリファイする。各バイトコードプログ
ラム267(ダウンロードされたオブジェクトベリファ
イヤを含む)は、対応するベリフィケーションステータ
ス302を有しており、この値はプログラムが他の場所
からダウンロードされたとき、最初“偽(False)”に
セットされる。プログラムに対するベリフィケーション
ステータス302は、プログラムがベリファイされ、ベ
リファイヤ240によって行われるデータタイプテスト
及びスタックの使用に関するテストの全てに適合したと
きのみバイトコードベリファイヤ240によって“真
(True)”にセットされる。
イヤ240の処理について、特定のバイトコードプログ
ラム340に関連して説明する。ベリファイヤ240
は、ベリフィケーションプロセスに於いて必要とする情
報を格納するため、いくつかの一時的なデータ構造(te
mporary data structure)を使用する。特に、ベリファ
イヤ240は、スタックカウンタ342、仮想スタック
344、仮想ローカル変数アレイ345、及びスタック
スナップショット格納構造346を使用する。
操作を追跡し、その時々の仮想スタック344のエント
リ数が反映されるように、ベリファイヤ240によって
更新される。
イトコードプログラム340によってオペランドスタッ
ク内に格納される各データに関するデータタイプ情報を
格納する。好適実施例では、仮想スタック344は正規
のスタックと同様に用いられるが、実際のデータ及び定
数を記憶するのではなく、プログラムを実際に実行した
ときオペランドスタック内に格納される各データに対応
するデータタイプを示す値を格納する点が異なる。従っ
て、例えば、もし実際に実行したとき、スタックに3つ
の値: HandleToObjectA 5 1 が格納されるとすると、対応する仮想スタックエントリ
は、 R I I となる。ここで、仮想スタック内の“R”は、オブジェ
クトリファレンスを示し、仮想スタック内の各“I”
は、整数を示す。更に、この例では、スタックカウンタ
342は、仮想スタック344に格納されている3つの
値に対応して、値3を格納する。
想スタックマーカ値(例えば、整数(I)、倍長整数
(L)、単精度浮動小数点数(F)、倍精度浮動小数点
数(D)、バイト(B)、ショート(S)、オブジェク
トリファレンス(R))が割り当てられる。オブジェク
トリファレンスに対するマーカ値には、しばしばオブジ
ェクトクラス値が含まれる(例えば、R:point、
ここで“point”はオブジェクトクラスである)。
タック344と同じ基本機能を果たす。即ち、仮想ロー
カル変数アレイ345は、指定されたバイトコードプロ
グラムが使用するローカル変数に対するデータタイプ情
報を格納するのに用いられる。データは、しばしばプロ
グラムによってローカル変数とオペランドスタックとの
間で転送されるため、そのようなデータ転送を実行する
か、あるいはそのようなデータ転送はしないがローカル
変数を使用するようなバイトコード命令についてチェッ
クすることにより、各バイトコード命令によってアクセ
スされるローカル変数が、これらのバイトコード命令に
関するデータタイプの制約に適合するということを保証
することができる。
からのデータのポップ(pop)をリクエストする各デー
タバイト命令を処理するとともに、同数のデータタイプ
値を仮想スタック344からポップする。続いて、ベリ
ファイヤは仮想スタック344から“ポップされた”デ
ータタイプ値と、バイトコード命令のデータタイプに関
する要求とを比較する。同様に、スタックにデータをプ
ッシュするようにリクエストする各バイトコード命令に
対し、ベリファイヤは、対応するデータタイプ値を仮想
スタックにプッシュする。
ンの一側面によると、オペランドスタックステータス
(operand stack status)に於けるオペランドの数とデ
ータタイプが、ある特定の命令が実行されるとき常に同
一となるかという点についてベリフィケーションがなさ
れる。ある特定のバイトコード命令が2以上の異なる命
令の直後に処理され得る場合、これらの異なる先行命令
の各々を処理した直後の仮想スタックステータスを比較
する必要がある。通常、これらの異なる先行命令の内の
少なくとも一つは、条件付きまたは無条件ジャンプまた
は分岐命令である。上述したような“スタックの一致
(stack consistency)”を要求する結果として、各プ
ログラムループ(program loop)によって、オペランド
スタック内に格納されるオペランド数の正味の増加や減
少が起こるようなことはなくなる。
は、スタックカウンタ342及び仮想スタック344の
“スナップショット”を格納するのに用いられ、プログ
ラムの様々な点に於ける仮想スタックステータスを効果
的に比較することを可能としている。格納されるスタッ
クスナップショットの各々は、例えば: SC、DT
1、DT2、DT3、...、DTnのような形であ
り、ここでSCはスタックカウンタの値、DT1は仮想
オペランドスタック内の最初のデータタイプ値、DT2
は仮想オペランドスタック内の2番目のデータタイプ値
であり、DTnまで同様である。DTnは仮想オペラン
ドスタック内の、全アイテム中最後のアイテムに対する
データタイプ値である。
は、ディレクトリ部348とスナップショット部350
の2つに分かれる。ディレクトリ部348はターゲット
命令識別子(例えば、各ターゲット命令の絶対または相
対アドレス)を格納するのに用いられ、スナップショッ
ト部350は、これらのターゲット命令識別子(target
instruction identifier)に関連する仮想スタック3
44のスナップショットを格納するのに用いられる。
“ターゲット”命令は、ジャンプまたは分岐命令の行き
先となり得るバイトコード命令として定義される。例え
ば、条件付き分岐命令は、条件(満たされることも満た
されないこともある)と、条件が成立したとき、処理が
“ジャンプ”すべきプログラム内の場所(ターゲット)
を示す分岐先支持部とを含む。条件付きジャンプ命令を
評価する際、ベリファイヤ240は、スタックスナップ
ショット格納構造346を用いて、ジャンプする直前
の、ターゲット命令識別子をディレクトリ部348内に
格納するとともに、仮想スタック344のステータスを
スナップショット部350内に格納する。スタックスナ
ップショット格納構造346の動作については、バイト
コードベリファイヤプログラムの動作と共に、後により
詳細に説明する。
340は、データタイプに依存する複数の命令を含んで
おり、それらの命令の各々は、本発明のベリファイヤ2
40によって評価される。バイトコードプログラム35
0は、スタック操作に関する命令352(スタックへの
整数のプッシュ)及び354(スタックからの整数のポ
ップ)、前方ジャンプ356とその関連するターゲット
364、後方ジャンプ366とその関連するターゲット
362、及びDOループ358とその終わり(end)3
60(DOループのタイプによって、条件付きまたは無
条件分岐命令であってもよい)を含んでいる。本発明の
好適実施例のベリファイヤ240は、スタック操作及び
データタイプコンパチビリティをベリファイするだけな
ので、このバイトコードベリファイヤの動作は、これら
の代表的な命令セットを用いることによって説明するこ
とができる。
バイトコードベリファイヤプログラム240の動作につ
いて以下に詳細に説明する。付録2は、ベリファイヤプ
ログラムを疑似コードで表したものである。付録2の疑
似コードは、本質的には、従来の汎用コンピュータ言語
を用いたコンピュータ言語と同等である。この疑似コー
ドは、本発明の説明のためにのみ作られたものであっ
て、本分野の通常の知識を有するコンピュータプログラ
マであれば容易に理解されるように意図して書かれてい
る。
されたバイトコードプログラムは、処理のためバイトコ
ードベリファイヤ240にロードされる(400)。ベ
リファイヤ240は、オペランド及びローカル変数のデ
ータタイプ情報を格納するため、メモリ内にアレイ状に
位置を指定することによって、仮想スタック344及び
仮想ローカル変数アレイ345を生成する(402)。
同様に、ベリファイヤは、スナップショット情報を格納
するため、メモリ内にアレイ上に位置を指定することに
よってスタックスナップショット格納構造を生成する
(404)。最後に、ベリファイヤは、仮想スタックの
エントリ数を追跡するためのスタックカウンタ342と
して働くレジスタを指定する(406)。
及びループ命令に関連するターゲット情報を抽出するべ
く、バイトコードプログラム内に形成されたものであ
る。第1パスに於いて、ベリファイヤ300は全ての命
令を順次処理していき(ステップ408、410、41
2)、命令が条件付きまたは無条件ジャンプ命令の場合
(ステップ414)、かつそのジャンプに対するターゲ
ット位置がまだディレクトリ348内に記憶されていな
い場合(ステップ418)、ターゲット位置を示す情報
をスタックスナップショット格納構造346のディレク
トリ部348に格納する(ステップ416)。例えば、
ターゲット命令の絶対または相対アドレスを、ディレク
トリ部348の次に使用可能なスロットに格納しても良
い。他のタイプのバイトコード命令は、この第1パスで
は無視される。
了した後、ディレクトリ部348をソートして、リスト
アップされたターゲット位置をアドレス順に並び替える
ことが好ましい(420)。
のため、スタックスナップショット格納構造346は、
既にベリフィケーションの第1パスがバイトコードプロ
グラム350内に示されているバイトコード命令に基づ
いて終了したように、ディレクトリ部348内に情報が
格納され、ロードされている。即ち、ディレクトリ部に
は、バイトコードプログラム内にある条件付き及び無条
件ジャンプ命令の全てのターゲットのアドレスがロード
されている。
オペランドスタック及びデータタイプの使用が適切かど
うかをベリファイするため、バイトコードプログラムの
第2のパスが開始される。バイトコードプログラムの最
初の命令が選択されると(430)、ベリファイヤは、
選択された命令に対するアドレスが、上述した第1パス
に於いて既にスタックスナップショット格納構造346
のディレクトリ部348内に格納されているかどうかチ
ェックする(432)。
348内にある場合(即ち、選択された命令が条件付き
または無条件ジャンプのターゲットであることを意味し
ている)、ベリファイヤは関連するスタックスナップシ
ョットがスタックスナップショット格納構造346のス
ナップショット部350内に格納されているかどうかを
チェックする(434)。スタックスナップショットが
格納されていない場合(即ち、命令が後方ジャンプのタ
ーゲットであることを意味する)、スタックカウンタ及
び仮想スタックの内容が、スタックスナップショット格
納構造346内に格納される(436)。スナップショ
ットは、処理中の命令を実行する直前の仮想スタックの
ステータスに関する情報を含み、それにはスタックにプ
ッシュされている各データに対するデータタイプ値も含
まれる。ベリファイヤは、その後ベリフィケーションプ
ロセスを続け、後に述べるように、ステップ450から
は個々の命令に対し解析を開始する。
いる命令に対し格納されている場合(このターゲット命
令に関連するジャンプ命令が既に処理されているという
ことを意味する)、ベリファイヤは、スタックスナップ
ショット格納構造346のスナップショット部350内
に格納されている、この命令に対する仮想スタックスナ
ップショット情報と、仮想スタックのそのときの状態と
を比較する(438)。比較の結果、仮想スタックの状
態とスナップショットとがマッチしないことが示された
場合(スタックステータスミスマッチ)、スタックステ
ータスミスマッチが発生したバイトコードプログラム内
の場所を示すエラーメッセージまたは信号が生成される
(440)。好適実施例では、仮想スタックとスナップ
ショットが同数または同タイプのエントリを含んでいな
い場合にミスマッチが発生する。ベリファイヤは、その
後、そのプログラムが“偽(False)”であることを示
すようにベリフィケーションステータス245をセット
し、ベリフィケーションプロセスをアボートする(44
2)。プログラムが“偽”であることを示すようにベリ
フィケーションステータス245をセットすることによ
り、バイトコードインタープリタ242によるプログラ
ムの実行が阻止される(図3)。
いるスタックスナップショットと、その時の仮想スタッ
クの状態とがマッチする場合(438)、ベリファイヤ
はベリフィケーションプロセスを続け、後に述べるよう
にステップ450から個々の命令に対して分析を開始す
る。
スナップショット格納構造346のディレクトリ部34
8内に見つからない場合、またはスタックステータスミ
スマッチが検出されない場合、ベリファイヤは、その命
令特有のスタック使用法及び機能に応じて、命令に対す
る一連のチェックのうち、いくつかを選択して実行す
る。
ックは、オペランドスタックからデータをポップさせる
命令に関する。選択されている命令によってデータがス
タックからポップされる場合(450)、スタックカウ
ンタが調べられ、命令のデータポップ要求を満足する十
分なデータがスタック内にあるかどうかが判定される
(452)。
なデータを持っていない場合(452)、これはスタッ
クアンダーフローと呼ばれ、スタックアンダーフローが
検出されたプログラム内の場所を示すエラー信号または
メッセージが生成される(454)。更にベリファイヤ
はプログラムが“偽”であることを示すようにベリフィ
ケーションステータス245をセットし、ベリフィケー
ションプロセスをアボートする(456)。
い場合、ベリファイヤは、予め仮想スタック内に格納さ
れているデータタイプコード情報と、(もしあれば)選
択されている命令のデータタイプ要求とを比較する。例
えば、分析されるている命令の操作コード(opcode)が
スタックからポップされた値の整数型の加算(integer
add)を要求する場合、ベリファイヤは、ポップされて
いる仮想スタックのアイテムのオペランド情報を比較し
て、それが適切なデータタイプであること、即ち整数で
あることを確認する。比較がマッチする結果となった場
合、ベリファイヤは、ポップされているエントリに関連
する情報を仮想スタックから削除し、仮想スタック34
4からポップされたエントリ数が反映されるようにスタ
ックカウンタ342を更新する。
ントリのオペランド情報と、選択されている命令のデー
タタイプ要求との間でミスマッチが検出された場合(4
58)は、ミスマッチがバイトコードプログラム内のど
こで発生したかを示すメッセージが生成される(46
2)。更に、ベリファイヤは、プログラムが“偽”であ
ることを示すようにベリフィケーションステータス24
5をセットし、ベリフィケーションプロセスをアボート
する(456)。これで、ポップベリフィケーションプ
ロセスが終了する。
る命令がデータをスタックにプッシュしようとする場合
(470)、スタックカウンタが調べられ、その命令が
プッシュしようとするデータを格納するための十分な余
地がスタックにあるかどうかが判定される(472)。
オペランドスタックに、その命令がプッシュしようとす
るデータを格納するための十分な余地がない場合(47
2)、これはスタックオーバフローと呼ばれ、スタック
オーバフローが検出されたプログラム内の場所を示すエ
ラー信号またはメッセージが生成される(474)。更
に、ベリファイヤは、プログラムが“偽”であることを
示すようにベリフィケーションステータス245をセッ
トし、ベリフィケーションプロセスをアボートする(4
76)。
場合、ベリファイヤは、選択されている命令によってス
タックにプッシュされる各データに対し、(実際にプロ
グラムが実行される際に)オペランドスタックにプッシ
ュされるデータ(オペランド)のタイプを示すエントリ
を仮想スタックに加える(478)。この情報は、本発
明の好適実施例のバイトコードプログラムで用いられて
いる、データタイプが特定された操作コードから導かれ
る。また、ベリファイヤは、スタックカウンタ342を
更新して、仮想スタックに追加された1または複数のエ
ントリが反映されるようにする。これでスタックプッシ
ュベリフィケーションプロセスが終了する。
令により、通常の逐次的ステップを飛び越すような、条
件付きまたは無条件の前方ジャンプまたは分岐が発生す
る場合(480)、ベリファイヤは、まずそのジャンプ
命令のターゲット位置に対するスナップショットがスタ
ックスナップショット格納構造346内に格納されてい
るかどうかをチェックする。スタックスナップショット
が格納されていない場合、(そのジャンプに関連する仮
想スタックの更新がなされた後の)仮想スタック状態
が、スタックスナップショット格納構造346内の、そ
のターゲットプログラム位置に関連する位置に格納され
る(484)。このジャンプに関連するスタックポップ
操作は、既に実行されているステップ460に於いて仮
想スタック内に反映されていることに注意されたい(図
8参照)。
る場合(このターゲットに関連する他のエントリポイン
ト(entry point)が既に処理されていることを示
す)、ベリファイヤは、スタックスナップショット格納
構造346のスナップショット部350内に格納されて
いる仮想スタックスナップショット情報と、仮想スタッ
クのその時の状態とを比較する。比較の結果、スナップ
ショットと仮想スタックの状態とがマッチしていないこ
とが示された場合(スタックステータスミスマッチ)、
スタックステータスミスマッチが発生したバイトコード
プログラム内の場所を示すエラーメッセージが生成され
る(488)。好適実施例では、スナップショットとそ
の時の仮想スタックが、同数または同タイプのエントリ
を含んでいないときミスマッチが発生する。更に、その
時の仮想スタック内の1以上のデータタイプ値が、スナ
ップショット内の対応するデータタイプ値に一致しない
ときにもミスマッチが発生する。ベリファイヤは、その
後プログラムが“偽”であることを示すようにベリフィ
ケーションステータス245をセットし、ベリフィケー
ションプロセスをアボートする(490)。ステップ4
86でスタックステータスマッチングが検出された場
合、ベリファイヤはステップ500へと処理を継続する
(図11)。
令によってプログラムの後方に向かう条件付きまたは無
条件ジャンプまたは分岐が発生する場合(ステップ50
0)、ベリファイヤは、スタックスナップショット格納
構造346のスナップショット部350内に格納されて
いる、その後方ジャンプのターゲットに関連する仮想ス
タックスナップショット情報(ステップ436で格納し
た)と、仮想スタックのその時の状態とを比較する。比
較の結果、スナップショットとその時のステータスがマ
ッチしないことが示された場合(スタックステータスミ
スマッチ)、スタックステータスミスマッチが発生した
バイトコードプログラム内の場所を示すエラーメッセー
ジが生成される(504)。好適実施例では、ミスマッ
チは、その時の仮想スタックとスナップショットが同数
または同タイプのエントリを含んでいないか、あるいは
仮想スタック内のデータタイプエントリのどれかが、ス
ナップショット内の対応するデータタイプエントリとマ
ッチしない場合に発生する。ベリファイヤは、その後プ
ログラムが“偽”であることを示すようにベリフィケー
ションステータス245をセットし、ベリフィケーショ
ンプロセスをアボートする(506)。
が検出されるか(ステップ502)、または命令が後方
ジャンプでない場合(ステップ500)、ベリファイヤ
はステップ510へと処理を継続する。
データを読み出す場合(510)、ベリファイヤは対応
する仮想ローカル変数内に予め格納されているデータタ
イプコード情報と、(もしあれば)選択されている命令
のデータタイプ要求とを比較する。仮想ローカル変数に
格納されているデータタイプ情報と選択されている命令
のデータタイプ要求との間にミスマッチが検出された場
合(512)、ミスマッチが発生したバイトコードプロ
グラム内の場所を示すメッセージが生成される(51
4)。その後、ベリファイヤはプログラムが“偽”であ
ることを示すようにベリフィケーションステータス24
5をセットし、ベリフィケーションプロセスをアボート
する(516)。
からデータを読み出さない場合(510)、またはステ
ップ512に於けるデータタイプの比較がマッチする結
果となった場合、ベリファイヤは、選択されている命令
の処理を更にステップ520へと継続する。
令によってデータがローカル変数に格納される場合(5
20)、対応する仮想ローカル変数が調べられ、その仮
想ローカル変数がデータタイプ値を格納しているかどう
かが判定される(522)。その仮想ローカル変数がデ
ータタイプ値を格納している場合(即ちそのデータは以
前にそのローカル変数内に格納されたことを意味す
る)、ベリファイヤは、その仮想ローカル変数内にある
データタイプ情報と、選択されているバイトコード命令
に関するデータタイプとを比較する(524)。仮想ロ
ーカル変数内に格納されているデータタイプ情報と、選
択されている命令によって要求されているデータタイプ
との間にミスマッチが検出されると(524)、ミスマ
ッチが発生したバイトコードプログラム内の場所を示す
メッセージが生成される(526)。その後、ベリファ
イヤはプログラムが“偽”であることを示すようにベリ
フィケーションステータス245をセットし、ベリフィ
ケーションプロセスをアボートする(528)。
ータを格納しない場合(520)、選択されている命令
に対する処理は終了する。選択されている命令によって
データがローカル変数内に格納されるが、その仮想ロー
カル変数がデータタイプ値を格納していない場合(即
ち、そのローカル変数にデータを格納するような命令が
ベリファイヤによってまだ処理されていないことを示
す)、選択されているバイトコード命令に関連するデー
タタイプが、その仮想ローカル変数に格納される(ステ
ップ530)。
中のバイトコードプログラム340の最後の命令である
かどうかをチェックする(540)。処理すべき命令が
まだ残っている場合、ベリファイヤは次の命令をロード
し(542)、ベリフィケーションプロセスをステップ
432から繰り返す。それ以上処理する命令がない場合
は、ベリファイヤはプログラムが“真”であることを示
すようにベリフィケーションステータス245をセット
し(544)、ベリフィケーションプロセスの終了を伝
える。
トコードインタープリタ242の動作について説明す
る。付録3は、バイトコードインタープリタを疑似コー
ドで表したものである。
られた場合、即ち、実行すべきプログラムとして選択さ
れた後(560)、バイトコードプログラムインタープ
リタ242は、指定されたバイトコードプログラムの保
全性をベリファイするべく、バイトコードベリファイヤ
240を呼び出す(562)。バイトコードベリファイ
ヤについては既に上述した。
(verification failure)”をリターンしてきた場合
(564)、指定されたバイトコードプログラムのイン
タープリタによって実行されることなくアボートされる
(566)。
ン成功”をリターンしてきた場合(564)、指定され
たバイトコードプログラムはリソースユーティリティプ
ログラムにリンクされ(568)、更に、そのプログラ
ムによって参照される他のプログラム、関数、及びオブ
ジェクトにもリンクされる。そのようなリンク過程は多
くのプログラムインタープリタに於ける従来の前処理
(pre-execution)過程と同様である。その後リンクさ
れたバイトコードプログラムはインタープリタによって
インタープリットされ実行される(570)。本発明の
バイトコードインタープリタは、プログラムの実行中、
オペランドスタックオーバフロー及びアンダーフローの
チェックをしない。また、オペランドスタック内に格納
されているデータに対するデータタイプのチェックもし
ない。このような従来インタープリット過程で行われて
いたスタックオーバフロー/アンダーフロー、及びデー
タタイプのチェックは、本発明では省略することができ
る。これは、ベリファイヤによって、このようなエラー
がプログラム実行中に発生しないことが既にベリファイ
されているためである。
度も繰り返し実行される命令ループ(instruction loo
p)を有するバイトコードプログラムの実行に対し、特
に効果的である。なぜなら、本発明では、そのような各
命令ループ内の各バイトコードに対して、オペランドス
タックチェック命令は一度だけしか行われないからであ
る。対照的に、従来のインタープリタによるプログラム
の実行に於いては、インタープリタは、オーバフロー
(即ち、スタックが格納できるより多くのデータがスタ
ックに加えられる)やアンダーフロー(即ち、スタック
が空の時にスタックからデータをポップしようとする)
が生じていないかどうか、オペランドスタックを連続的
にモニタする必要がある。そのようなスタックモニタリ
ングは、通常、スタックのステータスを変化させる全て
の命令(即ち、ほとんど全ての命令)に対して実行しな
ければならない。多くのプログラムで、インタープリタ
によって実行されるスタックモニタリング命令は、イン
タープリットされるコンピュータプログラムの実行時間
の約80%に達する。その結果、本発明のインタープリ
タは、しばしば、同じコンピュータ上で実行される従来
のプログラムインタープリタの2倍から5倍の速さでプ
ログラムを実行する。
の説明は、例示を目的としたものであり、本発明を網羅
的に記載することを意図したものでも、本発明を開示し
た形態そのものに限定することを意図したものでもな
く、上述したことから多くの変形変更が可能であること
は明らかであろう。上記の実施例は、本発明の原理とそ
の実際的な応用が最も良く説明されるように選択及び記
述したものであり、それによって当業者が本発明を最も
良く利用して、特定の使用に合うように様々な改良を加
えた変形実施態様が可能なようにしたものである。本発
明の範囲は、特許請求の範囲によって画定される。
のコンピュータを示している。
のコンピュータを示しており、それらのコンピュータの
うち少なくとも一つは、様々な実行可能形式のソースプ
ログラムの複数のコピーを格納するための補助記憶装置
(ディスク記憶装置)を含んでいる。
のコンピュータを示しており、それらのコンピュータの
うち少なくとも一つは、本発明によるバイトコードプロ
グラムベリファイヤとクラスローダを含んでいる。
トサーバ内にあるビューワとバイトコードプログラムに
アクセスするためのロードプロセスのフローチャートで
ある。
のベリフィケーションに於いてバイトコードベリファイ
ヤによって維持されるデータ構造を示している。
ードプログラムベリフィケーションプロセスのフローチ
ャートの一部である。
ードプログラムベリフィケーションプロセスのフローチ
ャートの一部である。
ードプログラムベリフィケーションプロセスのフローチ
ャートの一部である。
ードプログラムベリフィケーションプロセスのフローチ
ャートの一部である。
トコードプログラムベリフィケーションプロセスのフロ
ーチャートの一部である。
トコードプログラムベリフィケーションプロセスのフロ
ーチャートの一部である。
トコードプログラムベリフィケーションプロセスのフロ
ーチャートの一部である。
トコードプログラムインタープリットプロセスのフロー
チャートである。
ションノード) 204 第2コンピュータノード(サーバノード) 206 CPU 208 ユーザインタフェース 210 主メモリ(RAM) 212 補助記憶装置(ディスク記憶装置) 214 コミュニケーションインタフェース(モデム) 216 コンピュータコミュニケーションネットワーク 218 CPU 220 ユーザインタフェース 222 主メモリ(RAM) 224 補助記憶装置(ディスク記憶装置) 226 コミュニケーションインタフェース(モデム) 228 ディスクディレクトリ 230 オブジェクト 232 ビューワライブラリ 234 プログラム 236 オペレーティングシステム 237 オペレーティングシステム 238 プログラム 239 プログラム 240 バイトコードプログラムベリファイヤ 241 ビューワ 242 バイトコードプログラムインタープリタ 243 ビューワ 244 バイトコードプログラムコンパイラ 245 ベリフィケーションステータス 250 本発明による分散型コンピュータシステム 252 第1コンピュータノード(ユーザワークステー
ションノード) 254 第2コンピュータノード(サーバノード) 255 オペレーティングシステム 256 オペレーティングシステム 257 CPU 258 ユーザインタフェース 260 主メモリ(RAM) 262 補助記憶装置(ディスク記憶装置) 264 コミュニケーションインタフェース(モデム) 266 コンピュータコミュニケーションネットワーク
(インターネット) 267 バイトコードプログラム 268 CPU 270 ユーザインタフェース 272 主メモリ(RAM) 274 補助記憶装置(ディスク記憶装置) 276 コミュニケーションインタフェース(モデム) 280 ディスクディレクトリ 282 オブジェクト 283 オブジェクト 284 ビューワライブラリ 286 プログラム 296 クラスローダプログラム 298 ビューワライブラリ 302 ベリフィケーションステータス 324 第2サーバ 325 補助記憶装置(ディスク記憶装置) 327 認識されているサーバのリスト 326 ビューワライブラリ 340 バイトコードプログラム 342 スタックカウンタ 344 仮想スタック 345 仮想ローカル変数アレイ 346 スタックスナップショット格納構造 348 ディレクトリ部 350 スナップショット部 352 バイトコード命令 354 バイトコード命令 356 バイトコード命令 358 バイトコード命令 360 バイトコード命令 362 バイトコード命令 364 バイトコード命令 366 バイトコード命令 368 バイトコード命令
Claims (4)
- 【請求項1】 複数の個別のコンピュータを有する分
散型コンピュータシステムの動作方法であって、 (a)第1コンピュータに、各々関連するデータタイプ
のオブジェクトを見るための複数のビューワプログラム
を格納する過程と、 (b)前記第1コンピュータに於いて、第2コンピュー
タ内に格納されているオブジェクトへのリファレンスを
選択する過程と、 (c)前記第1コンピュータに於いて、前記リファレン
スの選択に応じて、前記第1コンピュータと前記第2コ
ンピュータとの間に第1接続リンクを確立し、前記オブ
ジェクトに関連するデータタイプ情報の検索を含む、前
記第2コンピュータからの前記オブジェクトの検索を開
始する過程と、 (d)前記第1コンピュータに於いて、前記第1コンピ
ュータに格納された前記ビューワプログラムの中に、前
記検索されたデータタイプに対応するビューワプログラ
ムが含まれているかどうか判定する過程と、 (e)前記過程(d)での判定結果が否定の場合、前記
検索されたデータタイプに対応するビューワプログラム
が、前記第1コンピュータを含む他のコンピュータのセ
ット内に格納されているかどうか判定する過程と、 (f)前記過程(e)での判定結果が肯定の場合、(f
1)前記第2データタイプに対応する前記ビューワプロ
グラムのコピーを前記第1コンピュータにロードする過
程と、(f2)前記コピーされたビューワプログラムに
対しベリフィケーションプロシージャを実行して、前記
コピーされたビューワプログラムが予め定められたオペ
ランドスタック使用基準に合うかどうか判定する過程
と、(f3)前記過程(f2)での判定結果が肯定の場
合、前記第2オブジェクトを見ることができるように前
記コピーされたビューワプログラムを実行する過程とを
含むことを特徴とする方法。 - 【請求項2】 前記過程(e)が、 前記検索されたデータタイプに対応するビューワプログ
ラムが前記第2コンピュータに格納されているかどうか
最初に判定し、前記判定の結果が否定の場合、前記第2
データタイプに対応するビューワプログラムが予め定め
られた他のコンピュータのセットの何れかの中に格納さ
れているかどうか判定し、前記第2の判定結果が肯定の
場合、前記過程(f1)乃至(f3)を実行する過程を
含んでいることを特徴とする請求項1に記載の方法。 - 【請求項3】 複数の個別のコンピュータを有する分
散型コンピュータシステムであって、 第1コンピュータと第2コンピュータを含み、 前記第1コンピュータが、オブジェクト及びビューワプ
ログラム格納用第1メモリを有し、格納されている前記
オブジェクトの各々は関連するデータタイプ情報を含
み、 前記第2コンピュータが、 ビューワプログラム格納用第2メモリと、 前記第1コンピュータの前記第1メモリ内に格納されて
いる前記オブジェクトの一つへのリファレンスを、前記
第2コンピュータのユーザが選択することができるよう
にするためのユーザインタフェース制御プログラムと、 前記オブジェクトリファレンスの選択に応じて、前記第
2コンピュータと前記第1コンピュータとの間に第1接
続リンクを確立し、前記オブジェクトに関連するデータ
タイプ情報の検索を含む、前記第1コンピュータからの
前記オブジェクトの検索を開始するコンピュータ間リン
ク制御プログラムとを含み、 前記第1及び第2コンピュータに含まれる各ビューワプ
ログラムは、対応するデータタイプのオブジェクトを見
ることを可能とし、 前記ユーザインタフェース制御プログラムが、前記第2
コンピュータに含まれている前記ビューワプログラム
に、前記検索されたデータタイプに対応するビューワプ
ログラムが含まれているかどうか判定して、判定結果が
否定の場合、前記検索されたデータタイプに対応するビ
ューワプログラムを前記第1コンピュータを含む他のコ
ンピュータのセットの中から見つけようと試みるビュー
ワサーチ命令を含み、 前記コンピュータ間リンク制御プログラムが、前記ビュ
ーワサーチ命令が前記検索されたデータタイプに対応す
るビューワプログラムを前記他のコンピュータ内に見つ
けたとき、そのビューワプログラムのコピーを前記第2
コンピュータ内にロードするためのビューワダウンロー
ド命令を含んでいることを特徴とするシステム。 - 【請求項4】 前記第2コンピュータが、更に、 前記コピーされたビューワプログラムが、予め定められ
たオペランドスタック使用基準に合うかどうか判定する
ためのベリフィケーションプロシージャと、 前記ベリフィケーションプロシージャが前記コピーされ
たビューワプログラムが前記予め定められた基準に合う
と判定したとき、前記第2オブジェクトを見るための前
記コピーされたビューワプログラムの実行をイネーブル
するプログラムイネーブル命令とを含むことを特徴とす
る請求項3に記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/359,884 US5630066A (en) | 1994-12-20 | 1994-12-20 | System and method for locating object view and platform independent object |
US08/359,884 | 1994-12-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08263447A true JPH08263447A (ja) | 1996-10-11 |
JP3805417B2 JP3805417B2 (ja) | 2006-08-02 |
Family
ID=23415694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP34916495A Expired - Lifetime JP3805417B2 (ja) | 1994-12-20 | 1995-12-20 | アプリケーションプログラムの保全性をベリファイする方法及び装置 |
Country Status (4)
Country | Link |
---|---|
US (3) | US5630066A (ja) |
EP (2) | EP0718761B1 (ja) |
JP (1) | JP3805417B2 (ja) |
DE (2) | DE69532616T2 (ja) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10124324A (ja) * | 1996-10-01 | 1998-05-15 | Internatl Business Mach Corp <Ibm> | アプレットを非ipネットワーク上で実行する方法及びコンピュータ・ワークステーション |
WO1998029804A1 (fr) * | 1996-12-25 | 1998-07-09 | Smc Kabushiki Kaisha | Systeme automatique de commande |
JPH1188419A (ja) * | 1997-09-12 | 1999-03-30 | Tsushin Hoso Kiko | 動画情報配信システムおよび方法 |
JPH11232292A (ja) * | 1998-02-16 | 1999-08-27 | Kawasaki Steel Corp | 異機種分散データ検索方法および検索装置 |
JP2002509313A (ja) * | 1998-01-16 | 2002-03-26 | メディアドナ、インコーポレイテッド | ピアコンポーネントを認証するためのシステムおよび方法 |
JP2006512689A (ja) * | 2003-01-02 | 2006-04-13 | トムソン ライセンシング | 受信サービスに関して行われる限定的実行決定並びに当該サービス及び関連する製品に関する情報メッセージの生成のための装置並びに方法 |
JP2006178953A (ja) * | 2004-12-20 | 2006-07-06 | Microsoft Corp | ファイルのクロスアプリケーションコラボレーションおよびクロスバージョンコラボレーションを容易にするためにソフトウェアを制御する方法およびシステム |
JP2007506163A (ja) * | 2003-09-17 | 2007-03-15 | リサーチ イン モーション リミテッド | 拡張可能なプロビジョニングを伴う動的なコンテンツ処理システムおよび方法 |
US9141786B2 (en) | 1996-11-08 | 2015-09-22 | Finjan, Inc. | Malicious mobile code runtime monitoring system and methods |
US9219755B2 (en) | 1996-11-08 | 2015-12-22 | Finjan, Inc. | Malicious mobile code runtime monitoring system and methods |
US10552603B2 (en) | 2000-05-17 | 2020-02-04 | Finjan, Inc. | Malicious mobile code runtime monitoring system and methods |
Families Citing this family (192)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2118278C (en) * | 1993-12-21 | 1999-09-07 | J. David Garland | Multimedia system |
US5694546A (en) | 1994-05-31 | 1997-12-02 | Reisman; Richard R. | System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list |
US6769009B1 (en) | 1994-05-31 | 2004-07-27 | Richard R. Reisman | Method and system for selecting a personalized set of information channels |
US7467137B1 (en) | 1994-09-02 | 2008-12-16 | Wolfe Mark A | System and method for information retrieval employing a preloading procedure |
US5630066A (en) * | 1994-12-20 | 1997-05-13 | Sun Microsystems, Inc. | System and method for locating object view and platform independent object |
CA2168087A1 (en) * | 1995-02-13 | 1996-08-14 | James S. Coman | Operating system based remote communication system |
US6515968B1 (en) | 1995-03-17 | 2003-02-04 | Worldcom, Inc. | Integrated interface for real time web based viewing of telecommunications network call traffic |
US6240451B1 (en) * | 1995-05-25 | 2001-05-29 | Punch Networks Corporation | Method and apparatus for automatically disseminating information over a network |
US7302638B1 (en) | 1995-06-07 | 2007-11-27 | Wolfe Mark A | Efficiently displaying and researching information about the interrelationships between documents |
US6138140A (en) | 1995-07-14 | 2000-10-24 | Sony Corporation | Data processing method and device |
US6009464A (en) * | 1995-09-20 | 1999-12-28 | Sun Microsystems, Inc. | Method and apparatus for enabling application programs to communicate with network clients and servers |
US5855014A (en) * | 1995-11-03 | 1998-12-29 | Application Partners, Inc. | Getfield function for a relational workgroup platform using keyword and workflow databases |
US6088515A (en) * | 1995-11-13 | 2000-07-11 | Citrix Systems Inc | Method and apparatus for making a hypermedium interactive |
US5727147A (en) * | 1995-12-08 | 1998-03-10 | Sun Microsystems, Inc. | System and method for resolving symbolic references to externally located program files |
GB9603582D0 (en) | 1996-02-20 | 1996-04-17 | Hewlett Packard Co | Method of accessing service resource items that are for use in a telecommunications system |
US5956027A (en) * | 1995-12-12 | 1999-09-21 | At&T Corp | Method and apparatus for sharing a web page |
US5778231A (en) * | 1995-12-20 | 1998-07-07 | Sun Microsystems, Inc. | Compiler system and method for resolving symbolic references to externally located program files |
US7720672B1 (en) | 1995-12-29 | 2010-05-18 | Wyse Technology Inc. | Method and apparatus for display of windowing application programs on a terminal |
KR100584964B1 (ko) * | 1996-01-24 | 2006-05-29 | 선 마이크로시스템즈 인코퍼레이티드 | 스택 메모리 구조에서의 캐싱 장치 |
EP0976029A2 (en) * | 1996-01-24 | 2000-02-02 | Sun Microsystems, Inc. | A processor for executing instruction sets received from a network or from a local memory |
US5761421A (en) * | 1996-03-25 | 1998-06-02 | Sun Microsystems, Inc. | System and method for secure peer-to-peer communication between downloaded programs |
US6282652B1 (en) | 1998-02-26 | 2001-08-28 | Sun Microsystems, Inc. | System for separately designating security requirements for methods invoked on a computer |
US6578044B1 (en) | 1997-11-17 | 2003-06-10 | Sun Microsystems, Inc. | Method and system for typesafe attribute matching |
US6438614B2 (en) | 1998-02-26 | 2002-08-20 | Sun Microsystems, Inc. | Polymorphic token based control |
US6421704B1 (en) | 1998-03-20 | 2002-07-16 | Sun Microsystems, Inc. | Method, apparatus, and product for leasing of group membership in a distributed system |
US6185611B1 (en) | 1998-03-20 | 2001-02-06 | Sun Microsystem, Inc. | Dynamic lookup service in a distributed system |
US6226746B1 (en) | 1998-03-20 | 2001-05-01 | Sun Microsystems, Inc. | Stack-based system and method to combine security requirements of methods |
US6247026B1 (en) | 1996-10-11 | 2001-06-12 | Sun Microsystems, Inc. | Method, apparatus, and product for leasing of delegation certificates in a distributed system |
US6832223B1 (en) | 1996-04-23 | 2004-12-14 | Sun Microsystems, Inc. | Method and system for facilitating access to a lookup service |
US6393497B1 (en) | 1998-03-20 | 2002-05-21 | Sun Microsystems, Inc. | Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system |
US6138238A (en) | 1997-12-11 | 2000-10-24 | Sun Microsystems, Inc. | Stack-based access control using code and executor identifiers |
US6463446B1 (en) | 1998-02-26 | 2002-10-08 | Sun Microsystems, Inc. | Method and apparatus for transporting behavior in an event-based distributed system |
US6560656B1 (en) | 1998-02-26 | 2003-05-06 | Sun Microsystems, Inc. | Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system |
US6598094B1 (en) | 1998-03-20 | 2003-07-22 | Sun Microsystems, Inc. | Method and apparatus for determining status of remote objects in a distributed system |
US6466947B2 (en) | 1998-03-20 | 2002-10-15 | Sun Microsystems, Inc. | Apparatus and method for dynamically verifying information in a distributed system |
US6446070B1 (en) | 1998-02-26 | 2002-09-03 | Sun Microsystems, Inc. | Method and apparatus for dynamic distributed computing over a network |
US6237024B1 (en) | 1998-03-20 | 2001-05-22 | Sun Microsystem, Inc. | Method and apparatus for the suspension and continuation of remote processes |
US6487607B1 (en) | 1998-02-26 | 2002-11-26 | Sun Microsystems, Inc. | Methods and apparatus for remote method invocation |
US6938263B2 (en) | 1996-04-23 | 2005-08-30 | Sun Microsystems, Inc. | System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space |
US5928323A (en) * | 1996-05-30 | 1999-07-27 | Sun Microsystems, Inc. | Apparatus and method for dynamically generating information with server-side software objects |
US6272555B1 (en) * | 1996-07-01 | 2001-08-07 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system |
US5848246A (en) * | 1996-07-01 | 1998-12-08 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server session manager in an interprise computing framework system |
US6233620B1 (en) * | 1996-07-02 | 2001-05-15 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a presentation engine in an interprise computing framework system |
US5999972A (en) * | 1996-07-01 | 1999-12-07 | Sun Microsystems, Inc. | System, method and article of manufacture for a distributed computer system framework |
US6304893B1 (en) * | 1996-07-01 | 2001-10-16 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system |
US6434598B1 (en) * | 1996-07-01 | 2002-08-13 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system |
US6134600A (en) * | 1996-07-01 | 2000-10-17 | Sun Microsystems, Inc. | Method and apparatus for dynamic derivatives desktops |
US6260078B1 (en) * | 1996-07-03 | 2001-07-10 | Sun Microsystems, Inc. | Using a distributed object system to find and download java-based applications |
US5764908A (en) * | 1996-07-12 | 1998-06-09 | Sofmap Future Design, Inc. | Network system containing program modules residing in different computers and executing commands without return results to calling modules |
US6195678B1 (en) * | 1996-09-03 | 2001-02-27 | Fujitsu Limited | Remote resource management system for automatically downloading required files from application server depending on contents of selected files on requesting computer |
US6166734A (en) * | 1996-10-01 | 2000-12-26 | Diamond Multimedia Systems, Inc. | Portable interactive graphics display tablet and communications system |
US6052120A (en) * | 1996-10-01 | 2000-04-18 | Diamond Multimedia Systems, Inc. | Method of operating a portable interactive graphics display tablet and communications systems |
US6662205B1 (en) * | 1996-10-01 | 2003-12-09 | International Business Machines Corporation | Scaleable and extensible system management architecture with dataless endpoints |
US6728737B2 (en) | 1996-10-11 | 2004-04-27 | Sun Microsystems, Inc. | Method and system for leasing storage |
US5832529A (en) | 1996-10-11 | 1998-11-03 | Sun Microsystems, Inc. | Methods, apparatus, and product for distributed garbage collection |
US6237009B1 (en) | 1996-10-11 | 2001-05-22 | Sun Microsystems, Inc. | Lease renewal service |
IL119523A0 (en) * | 1996-10-30 | 1997-01-10 | Algotec Systems Ltd | Data distribution system |
US6078951A (en) * | 1996-11-27 | 2000-06-20 | Intel Corporation | Method and apparatus for automating a software delivery system by locating, downloading, installing, and upgrading of viewer software |
EP0848337A1 (en) * | 1996-12-12 | 1998-06-17 | SONY DEUTSCHLAND GmbH | Server with automatic document assembly |
DE69636869T2 (de) * | 1996-12-12 | 2007-11-15 | Sony Deutschland Gmbh | Server mit automatischer Menüladefunktion |
US5913033A (en) * | 1996-12-20 | 1999-06-15 | International Business Machines Corporation | Apparatus and method for retrieving information using standard objects |
US6175855B1 (en) * | 1996-12-20 | 2001-01-16 | Siemens Aktiengesellschaft | Method for instantiating a class having different versions |
EP0855821A1 (en) * | 1997-01-16 | 1998-07-29 | AT&T Corp. | Methods and apparatus for providing universal readability of electronic mail attachments |
WO1998033129A1 (en) * | 1997-01-28 | 1998-07-30 | Casio Computer Co., Ltd. | Data processing apparatus used for communication network |
US6182127B1 (en) * | 1997-02-12 | 2001-01-30 | Digital Paper, Llc | Network image view server using efficent client-server tilting and caching architecture |
WO1998037486A1 (en) * | 1997-02-18 | 1998-08-27 | International Business Machines Corporation | Method for lookup of packages and classes in java, and devices making use of this method |
US6496865B1 (en) * | 1997-03-12 | 2002-12-17 | Novell, Inc. | System and method for providing interpreter applications access to server resources in a distributed network |
US7447738B1 (en) * | 1997-03-14 | 2008-11-04 | International Business Machines Corporation | Component download selection mechanism for web browsers |
EP0970411B1 (en) * | 1997-03-27 | 2002-05-15 | BRITISH TELECOMMUNICATIONS public limited company | Copy protection of data |
CA2285027C (en) * | 1997-03-27 | 2009-01-06 | British Telecommunications Public Limited Company | Copy protection of data |
US6826759B2 (en) * | 1997-04-01 | 2004-11-30 | Sun Microsystems, Inc. | Method and apparatus for discovering and activating software components |
US6014688A (en) | 1997-04-25 | 2000-01-11 | Postx Corporation | E-mail program capable of transmitting, opening and presenting a container having digital content using embedded executable software |
US8626763B1 (en) | 1997-05-22 | 2014-01-07 | Google Inc. | Server-side suggestion of preload operations |
JP3229240B2 (ja) * | 1997-06-10 | 2001-11-19 | インターナショナル・ビジネス・マシーンズ・コーポレーション | メッセージ処理方法、メッセージ処理装置及びメッセージ処理を制御するプログラムを格納する記憶媒体 |
WO1999001802A2 (en) * | 1997-07-01 | 1999-01-14 | Sanga International, Inc. | Platform-independent universal data access system and method in a client-server environment |
US6065046A (en) * | 1997-07-29 | 2000-05-16 | Catharon Productions, Inc. | Computerized system and associated method of optimally controlled storage and transfer of computer programs on a computer network |
US6343308B1 (en) * | 1997-08-14 | 2002-01-29 | International Business Machines Corporation | Systems, methods and computer programs for mixing different versions of Java classes |
US6473407B1 (en) | 1997-09-05 | 2002-10-29 | Worldcom, Inc. | Integrated proxy interface for web based alarm management tools |
US6085035A (en) * | 1997-09-09 | 2000-07-04 | Sun Microsystems, Inc. | Method and apparatus for efficient operations on primary type values without static overloading |
US6763376B1 (en) * | 1997-09-26 | 2004-07-13 | Mci Communications Corporation | Integrated customer interface system for communications network management |
US6381644B2 (en) | 1997-09-26 | 2002-04-30 | Mci Worldcom, Inc. | Integrated proxy interface for web based telecommunications network management |
US7058600B1 (en) * | 1997-09-26 | 2006-06-06 | Mci, Inc. | Integrated proxy interface for web based data management reports |
US6714979B1 (en) | 1997-09-26 | 2004-03-30 | Worldcom, Inc. | Data warehousing infrastructure for web based reporting tool |
US6490620B1 (en) * | 1997-09-26 | 2002-12-03 | Worldcom, Inc. | Integrated proxy interface for web based broadband telecommunications management |
US7225249B1 (en) | 1997-09-26 | 2007-05-29 | Mci, Llc | Integrated systems for providing communications network management services and interactive generating invoice documents |
US6745229B1 (en) | 1997-09-26 | 2004-06-01 | Worldcom, Inc. | Web based integrated customer interface for invoice reporting |
US6035336A (en) * | 1997-10-17 | 2000-03-07 | International Business Machines Corporation | Audio ticker system and method for presenting push information including pre-recorded audio |
US6216152B1 (en) * | 1997-10-27 | 2001-04-10 | Sun Microsystems, Inc. | Method and apparatus for providing plug in media decoders |
US7257604B1 (en) | 1997-11-17 | 2007-08-14 | Wolfe Mark A | System and method for communicating information relating to a network resource |
EP1049975A1 (en) * | 1997-12-29 | 2000-11-08 | Postx Corporation | Method and apparatus capable of embedding, extracting and processing data within a file having an html format |
US6604127B2 (en) | 1998-03-20 | 2003-08-05 | Brian T. Murphy | Dynamic lookup service in distributed system |
JP2002505473A (ja) | 1998-02-26 | 2002-02-19 | サンマイクロシステムズ インコーポレーテッド | 決定性ハッシュでリモートメソッドを識別する方法とシステム |
WO1999044121A2 (en) * | 1998-02-26 | 1999-09-02 | Sun Microsystems, Inc. | Method and apparatus for dynamic distributed computing over a network |
US6493870B1 (en) * | 1998-03-20 | 2002-12-10 | Sun Microsystems, Inc. | Methods and apparatus for packaging a program for remote execution |
US6735625B1 (en) | 1998-05-29 | 2004-05-11 | Cisco Technology, Inc. | System and method for automatically determining whether a product is compatible with a physical device in a network |
US6092120A (en) * | 1998-06-26 | 2000-07-18 | Sun Microsystems, Inc. | Method and apparatus for timely delivery of a byte code and serialized objects stream |
US6496871B1 (en) | 1998-06-30 | 2002-12-17 | Nec Research Institute, Inc. | Distributed agent software system and method having enhanced process mobility and communication in a computer network |
JP3361996B2 (ja) * | 1998-07-09 | 2003-01-07 | 松下電送システム株式会社 | 通信装置およびデータダウンロード方法 |
US6421708B2 (en) * | 1998-07-31 | 2002-07-16 | Glenayre Electronics, Inc. | World wide web access for voice mail and page |
US6289362B1 (en) | 1998-09-01 | 2001-09-11 | Aidministrator Nederland B.V. | System and method for generating, transferring and using an annotated universal address |
US6295639B1 (en) * | 1998-09-01 | 2001-09-25 | Aidministrator Nederland B.V. | Securely accessing a file system of a remote server computer |
US6415316B1 (en) | 1998-09-01 | 2002-07-02 | Aidministrator Nederland B.V. | Method and apparatus for implementing a web page diary |
US6405224B1 (en) | 1998-09-01 | 2002-06-11 | Aidministrator Nederland B.V. | Method and apparatus for HTML control |
US7143421B2 (en) * | 1998-09-09 | 2006-11-28 | Microsoft Corporation | Highly componentized system architecture with a demand-loading namespace and programming model |
US8434099B2 (en) | 1998-09-09 | 2013-04-30 | Microsoft Corporation | Efficient linking and loading for late binding and platform retargeting |
WO2000017729A2 (en) * | 1998-09-21 | 2000-03-30 | Wyse Technology | Improved method and apparatus for display of windowing application programs on a terminal |
US6321287B1 (en) | 1998-10-19 | 2001-11-20 | Dell Usa, L.P. | Console redirection for a computer system |
US7380245B1 (en) * | 1998-11-23 | 2008-05-27 | Samsung Electronics Co., Ltd. | Technique for detecting corruption associated with a stack in a storage device |
US6289512B1 (en) | 1998-12-03 | 2001-09-11 | International Business Machines Corporation | Automatic program installation |
US6417873B1 (en) * | 1998-12-11 | 2002-07-09 | International Business Machines Corporation | Systems, methods and computer program products for identifying computer file characteristics that can hinder display via hand-held computing devices |
US6408334B1 (en) | 1999-01-13 | 2002-06-18 | Dell Usa, L.P. | Communications system for multiple computer system management circuits |
US7536683B2 (en) * | 1999-01-15 | 2009-05-19 | Adobe Systems Incorporated | Method of dynamically appending a library to an actively running program |
US6526571B1 (en) * | 1999-03-16 | 2003-02-25 | International Business Machines Corporation | Method for identifying calls in java packages whose targets are guaranteed to belong to the same package |
US6917958B1 (en) * | 1999-04-26 | 2005-07-12 | International Business Machines Corporation | Method and apparatus for dynamic distribution of system file and system registry changes in a distributed data processing system |
US6397385B1 (en) * | 1999-07-16 | 2002-05-28 | Excel Switching Corporation | Method and apparatus for in service software upgrade for expandable telecommunications system |
WO2001011462A2 (en) * | 1999-08-04 | 2001-02-15 | 724 Solutions Inc. | Dynamic client system |
WO2001011466A2 (en) * | 1999-08-11 | 2001-02-15 | Ethos Technologies, Inc. | Download manager |
DE19942647C2 (de) * | 1999-08-30 | 2002-10-24 | Datango Ag | Verfahren und Vorrichtung zur automatischen Wiedergabe elektronischer Datensätze |
GB9925510D0 (en) * | 1999-10-29 | 1999-12-29 | Ibm | Incorporating native code in java archive files |
GB2396091B (en) * | 1999-11-05 | 2004-08-11 | Superscape Group Plc | Method and apparatus for generating enhancable images |
US7158993B1 (en) | 1999-11-12 | 2007-01-02 | Sun Microsystems, Inc. | API representation enabling submerged hierarchy |
US6363523B1 (en) | 1999-11-12 | 2002-03-26 | Sun Microsystems, Inc. | Optimization of N-base typed arithmetic expressions |
US20020112078A1 (en) * | 1999-12-03 | 2002-08-15 | David Yach | Virtual machine web browser |
DE60023433T2 (de) * | 1999-12-23 | 2006-05-24 | Nortel Networks Ltd., St. Laurent | System und Verfahren zur dynamischen Modell-Ladung |
US6546554B1 (en) | 2000-01-21 | 2003-04-08 | Sun Microsystems, Inc. | Browser-independent and automatic apparatus and method for receiving, installing and launching applications from a browser on a client computer |
US6553405B1 (en) * | 2000-02-25 | 2003-04-22 | Telefonaktiebolaget Lm Ericsson (Publ) | Self-configurable distributed system |
US7089242B1 (en) * | 2000-02-29 | 2006-08-08 | International Business Machines Corporation | Method, system, program, and data structure for controlling access to sensitive functions |
AU2001249822A1 (en) * | 2000-04-05 | 2001-10-23 | Tranceive Technologies, Inc. | Method and apparatus for profiling in a distributed application environment |
AU2001255497A1 (en) * | 2000-04-18 | 2001-10-30 | Portalplayer, Inc. | Downloaded media protocol integration system and method |
US6651186B1 (en) * | 2000-04-28 | 2003-11-18 | Sun Microsystems, Inc. | Remote incremental program verification using API definitions |
US6986132B1 (en) | 2000-04-28 | 2006-01-10 | Sun Microsytems, Inc. | Remote incremental program binary compatibility verification using API definitions |
US6883163B1 (en) | 2000-04-28 | 2005-04-19 | Sun Microsystems, Inc. | Populating resource-constrained devices with content verified using API definitions |
US8082491B1 (en) | 2000-05-09 | 2011-12-20 | Oracle America, Inc. | Dynamic displays in a distributed computing environment |
US6862594B1 (en) | 2000-05-09 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus to discover services using flexible search criteria |
US6934755B1 (en) | 2000-06-02 | 2005-08-23 | Sun Microsystems, Inc. | System and method for migrating processes on a network |
US6665867B1 (en) * | 2000-07-06 | 2003-12-16 | International Business Machines Corporation | Self-propagating software objects and applications |
US7272628B1 (en) * | 2000-07-25 | 2007-09-18 | Adobe Systems Incorporated | Communicating data using an HTTP client |
US6934697B1 (en) * | 2000-08-04 | 2005-08-23 | Netzero, Inc. | Creating customized internet access client user interface |
US6981245B1 (en) | 2000-09-14 | 2005-12-27 | Sun Microsystems, Inc. | Populating binary compatible resource-constrained devices with content verified using API definitions |
US6993761B1 (en) * | 2000-09-28 | 2006-01-31 | Sun Microsystems, Inc. | Method and apparatus to verify type safety of an application snapshot |
US20020095528A1 (en) * | 2000-09-29 | 2002-07-18 | International Business Machines Corporation | Method and system for operating a client in a client/server system |
US6964039B2 (en) * | 2000-12-13 | 2005-11-08 | Esmertec Ag | Method to create optimized machine code through combined verification and translation of JAVA™ bytecode |
US20020078262A1 (en) * | 2000-12-14 | 2002-06-20 | Curl Corporation | System and methods for providing compatibility across multiple versions of a software system |
US7249190B2 (en) * | 2001-02-09 | 2007-07-24 | Comlet Technologies, Llc. | Enhanced data exchange and presentation/communication system |
US7797431B2 (en) * | 2001-02-09 | 2010-09-14 | Willard Case | Enhanced data exchange and functionality control system and method |
CN1256666C (zh) * | 2001-03-19 | 2006-05-17 | 高通股份有限公司 | 无线设备上***服务的动态下载和执行 |
US7114177B2 (en) * | 2001-03-28 | 2006-09-26 | Geotrust, Inc. | Web site identity assurance |
US6978451B2 (en) * | 2001-05-31 | 2005-12-20 | Esmertec Ag | Method for fast compilation of preverified JAVA bytecode to high quality native machine code |
US6748396B2 (en) | 2001-06-01 | 2004-06-08 | International Business Machines Corporation | Independent class loader for dynamic class loading |
US20020194296A1 (en) * | 2001-06-14 | 2002-12-19 | International Business Machines Corporation | Stopping a slow download of internally included objects in a downloaded HTML page on a web client |
FR2826471A1 (fr) * | 2001-06-26 | 2002-12-27 | Canal Plus Technologies | Extension d'un logiciel dans un recepteur/decodeur de television numerique |
JP2004538570A (ja) * | 2001-08-03 | 2004-12-24 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | クライアントコンピュータ上での文書の表示 |
US7660887B2 (en) | 2001-09-07 | 2010-02-09 | Sun Microsystems, Inc. | Systems and methods for providing dynamic quality of service for a distributed system |
US7756969B1 (en) | 2001-09-07 | 2010-07-13 | Oracle America, Inc. | Dynamic provisioning of identification services in a distributed system |
US7461119B2 (en) * | 2001-09-29 | 2008-12-02 | Siebel Systems, Inc. | Method, apparatus, and system for managing status of requests in a client server environment |
US6907451B1 (en) * | 2001-09-29 | 2005-06-14 | Siebel Systems, Inc. | Method, apparatus, and system for immediate posting of changes in a client server environment |
US7146617B2 (en) * | 2001-09-29 | 2006-12-05 | Siebel Systems, Inc. | Method, apparatus, and system for implementing view caching in a framework to support web-based applications |
US8359335B2 (en) | 2001-09-29 | 2013-01-22 | Siebel Systems, Inc. | Computing system and method to implicitly commit unsaved data for a world wide web application |
US7885996B2 (en) * | 2001-09-29 | 2011-02-08 | Siebel Systems, Inc. | Method, apparatus, and system for implementing notifications in a framework to support web-based applications |
US7203948B2 (en) * | 2001-09-29 | 2007-04-10 | Siebel Systems, Inc. | Method, apparatus, and system for implementing caching of view custom options in a framework to support web-based applications |
US7870492B2 (en) | 2001-10-02 | 2011-01-11 | Siebel Systems, Inc. | Method, apparatus, and system for managing commands in a client server environment |
CN1602601B (zh) | 2001-10-12 | 2010-09-08 | Geo信托有限公司 | 用于处理和发布数字证书的方法及其计算机*** |
WO2003039308A1 (en) * | 2001-11-05 | 2003-05-15 | Uni-Splendor Corporation | Apparatus for steaming food |
JP2003186855A (ja) * | 2001-12-20 | 2003-07-04 | Fujitsu Ltd | 型照合によるオブジェクト連携システムおよび方法 |
JP3548829B2 (ja) * | 2002-01-10 | 2004-07-28 | オムロン株式会社 | ユニット及びplc並びにユーザプログラムの処理方法 |
US7730297B1 (en) | 2002-02-06 | 2010-06-01 | Adobe Systems Incorporated | Automated public key certificate transfer |
US7165099B2 (en) | 2002-03-15 | 2007-01-16 | Qualcomm Inc. | Dynamically downloading and executing system services on a wireless device |
US7203940B2 (en) * | 2002-04-29 | 2007-04-10 | Hewlett-Packard Development Company, Lp. | Automated installation of an application |
US20030204730A1 (en) * | 2002-04-29 | 2003-10-30 | Barmettler James W. | Secure transmission and installation of an application |
US20040003380A1 (en) * | 2002-06-26 | 2004-01-01 | Microsoft Corporation | Single pass intermediate language verification algorithm |
US7263696B1 (en) * | 2002-12-10 | 2007-08-28 | Emc Corporation | Dynamic web based jar file finder |
US20060218231A1 (en) * | 2003-07-11 | 2006-09-28 | Computer Associates Think, Inc. | Direct point-to-point communications between applications using a single port |
US20060248595A1 (en) * | 2003-08-08 | 2006-11-02 | Koninklijke Philips Electronics N.V. | Reproducing encrypted content using region keys |
US7792874B1 (en) | 2004-01-30 | 2010-09-07 | Oracle America, Inc. | Dynamic provisioning for filtering and consolidating events |
US20050193324A1 (en) * | 2004-02-26 | 2005-09-01 | International Business Machines Corporation | Method and apparatus for displaying embedded content in documents |
US7272748B1 (en) * | 2004-03-17 | 2007-09-18 | Symantec Corporation | Method and apparatus to detect and recover from a stack frame corruption |
TWI273492B (en) * | 2004-05-18 | 2007-02-11 | Cyberlink Corp | Encryption/decryption method incorporated with local server software |
US7694135B2 (en) * | 2004-07-16 | 2010-04-06 | Geotrust, Inc. | Security systems and services to provide identity and uniform resource identifier verification |
JP4583152B2 (ja) * | 2004-12-10 | 2010-11-17 | 富士通株式会社 | サービス処理方法及びプログラム |
US8255790B2 (en) * | 2006-09-08 | 2012-08-28 | Microsoft Corporation | XML based form modification with import/export capability |
US7974993B2 (en) * | 2006-12-04 | 2011-07-05 | Microsoft Corporation | Application loader for support of version management |
US8612773B2 (en) | 2007-05-03 | 2013-12-17 | International Business Machines Corporation | Method and system for software installation |
US8842836B2 (en) * | 2007-11-26 | 2014-09-23 | Koolspan, Inc. | System for and method of cryptographic provisioning |
US8311518B2 (en) | 2008-04-29 | 2012-11-13 | Esmertec France | Method and system for executing applications in wireless telecommunication networks |
US20100211627A1 (en) * | 2009-02-13 | 2010-08-19 | Mobitv, Inc. | Reprogrammable client using a uniform bytecode model |
US8238538B2 (en) | 2009-05-28 | 2012-08-07 | Comcast Cable Communications, Llc | Stateful home phone service |
US10698708B2 (en) * | 2009-08-04 | 2020-06-30 | International Business Machines Corporation | Optimizing just-in-time compilation in a network of nodes |
US8352522B1 (en) * | 2010-09-01 | 2013-01-08 | Trend Micro Incorporated | Detection of file modifications performed by malicious codes |
CN103414687B (zh) * | 2013-07-08 | 2017-02-08 | 江苏凌空网络股份有限公司 | 一种采用条形码图像进行通信的方法和装置和嵌入感芯引擎的可佩戴的部件 |
FR3011103A1 (fr) * | 2013-09-26 | 2015-03-27 | Orange | Chargement dynamique mis en œuvre lors d'une action sur un contenu |
US9420027B1 (en) * | 2015-04-27 | 2016-08-16 | Wowza Media Systems, LLC | Systems and methods of communicating platform-independent representation of source code |
CN111111209B (zh) * | 2019-12-23 | 2022-04-26 | 福建天晴在线互动科技有限公司 | 一种游戏客户端完整性校验和修复的方法 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62281032A (ja) * | 1986-05-30 | 1987-12-05 | Pfu Ltd | プログラム起動方式 |
JPS63263539A (ja) * | 1987-04-22 | 1988-10-31 | Hitachi Ltd | 言語処理系におけるスタツク消費量予測管理方式 |
JPH0375933A (ja) * | 1989-08-18 | 1991-03-29 | Nec Corp | スタックサイズの算出処理方式 |
JPH04347733A (ja) * | 1991-05-24 | 1992-12-02 | Hitachi Ltd | 計算機プログラム保守方式 |
JPH05250221A (ja) * | 1992-03-10 | 1993-09-28 | Nec Corp | シミュレータ実行方式 |
JPH05257815A (ja) * | 1992-03-11 | 1993-10-08 | Mitsubishi Electric Corp | 中央処理装置 |
JPH06131228A (ja) * | 1992-10-21 | 1994-05-13 | Just Syst Corp | 情報処理方法及び装置 |
JPH06230844A (ja) * | 1993-02-04 | 1994-08-19 | Fujitsu Sooshiaru Sci Raboratori:Kk | 処理起動方法 |
JPH0844676A (ja) * | 1994-07-27 | 1996-02-16 | Canon Inc | データ伝送方法及びその装置とデータ伝送システム |
JPH0869422A (ja) * | 1994-08-30 | 1996-03-12 | Toshiba Corp | 情報転送方法 |
JPH08234994A (ja) * | 1994-12-20 | 1996-09-13 | Sun Microsyst Inc | コンピュータシステム及びその動作方法 |
JPH10508964A (ja) * | 1994-11-08 | 1998-09-02 | バーミア、テクノロジーズ、インコーポレーテッド | 料金設定機能を有するオンラインサービス開発ツール |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63282867A (ja) * | 1987-05-15 | 1988-11-18 | Mitsubishi Electric Corp | デ−タファイル転送方式 |
US5226161A (en) * | 1987-08-21 | 1993-07-06 | Wang Laboratories, Inc. | Integration of data between typed data structures by mutual direct invocation between data managers corresponding to data types |
US5369778A (en) * | 1987-08-21 | 1994-11-29 | Wang Laboratories, Inc. | Data processor that customizes program behavior by using a resource retrieval capability |
US5075847A (en) * | 1989-05-26 | 1991-12-24 | Hewlett-Packard Company | Method and apparatus for computer program encapsulation |
US5297279A (en) * | 1990-05-30 | 1994-03-22 | Texas Instruments Incorporated | System and method for database management supporting object-oriented programming |
US5327529A (en) * | 1990-09-24 | 1994-07-05 | Geoworks | Process of designing user's interfaces for application programs |
US5434992A (en) * | 1992-09-04 | 1995-07-18 | International Business Machines Corporation | Method and means for dynamically partitioning cache into a global and data type subcache hierarchy from a real time reference trace |
US5386568A (en) * | 1992-12-01 | 1995-01-31 | Yamaha Corporation | Apparatus and method for linking software modules |
US5838906A (en) * | 1994-10-17 | 1998-11-17 | The Regents Of The University Of California | Distributed hypermedia method for automatically invoking external application providing interaction and display of embedded objects within a hypermedia document |
US5630066A (en) * | 1994-12-20 | 1997-05-13 | Sun Microsystems, Inc. | System and method for locating object view and platform independent object |
-
1994
- 1994-12-20 US US08/359,884 patent/US5630066A/en not_active Expired - Lifetime
-
1995
- 1995-12-19 EP EP95120053A patent/EP0718761B1/en not_active Expired - Lifetime
- 1995-12-19 DE DE69532616T patent/DE69532616T2/de not_active Expired - Fee Related
- 1995-12-19 EP EP99125601A patent/EP0989489B1/en not_active Expired - Lifetime
- 1995-12-19 DE DE69517935T patent/DE69517935T2/de not_active Expired - Lifetime
- 1995-12-20 JP JP34916495A patent/JP3805417B2/ja not_active Expired - Lifetime
-
1997
- 1997-02-20 US US08/802,720 patent/US5815661A/en not_active Expired - Lifetime
-
1998
- 1998-09-18 US US09/156,576 patent/US6052732A/en not_active Expired - Lifetime
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62281032A (ja) * | 1986-05-30 | 1987-12-05 | Pfu Ltd | プログラム起動方式 |
JPS63263539A (ja) * | 1987-04-22 | 1988-10-31 | Hitachi Ltd | 言語処理系におけるスタツク消費量予測管理方式 |
JPH0375933A (ja) * | 1989-08-18 | 1991-03-29 | Nec Corp | スタックサイズの算出処理方式 |
JPH04347733A (ja) * | 1991-05-24 | 1992-12-02 | Hitachi Ltd | 計算機プログラム保守方式 |
JPH05250221A (ja) * | 1992-03-10 | 1993-09-28 | Nec Corp | シミュレータ実行方式 |
JPH05257815A (ja) * | 1992-03-11 | 1993-10-08 | Mitsubishi Electric Corp | 中央処理装置 |
JPH06131228A (ja) * | 1992-10-21 | 1994-05-13 | Just Syst Corp | 情報処理方法及び装置 |
JPH06230844A (ja) * | 1993-02-04 | 1994-08-19 | Fujitsu Sooshiaru Sci Raboratori:Kk | 処理起動方法 |
JPH0844676A (ja) * | 1994-07-27 | 1996-02-16 | Canon Inc | データ伝送方法及びその装置とデータ伝送システム |
JPH0869422A (ja) * | 1994-08-30 | 1996-03-12 | Toshiba Corp | 情報転送方法 |
JPH10508964A (ja) * | 1994-11-08 | 1998-09-02 | バーミア、テクノロジーズ、インコーポレーテッド | 料金設定機能を有するオンラインサービス開発ツール |
JPH08234994A (ja) * | 1994-12-20 | 1996-09-13 | Sun Microsyst Inc | コンピュータシステム及びその動作方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10124324A (ja) * | 1996-10-01 | 1998-05-15 | Internatl Business Mach Corp <Ibm> | アプレットを非ipネットワーク上で実行する方法及びコンピュータ・ワークステーション |
US9141786B2 (en) | 1996-11-08 | 2015-09-22 | Finjan, Inc. | Malicious mobile code runtime monitoring system and methods |
US9444844B2 (en) | 1996-11-08 | 2016-09-13 | Finjan, Inc. | Malicious mobile code runtime monitoring system and methods |
US9219755B2 (en) | 1996-11-08 | 2015-12-22 | Finjan, Inc. | Malicious mobile code runtime monitoring system and methods |
US9189621B2 (en) | 1996-11-08 | 2015-11-17 | Finjan, Inc. | Malicious mobile code runtime monitoring system and methods |
WO1998029804A1 (fr) * | 1996-12-25 | 1998-07-09 | Smc Kabushiki Kaisha | Systeme automatique de commande |
US6405099B1 (en) | 1996-12-25 | 2002-06-11 | Smc Kabushiki Kaisha | Automatic control system |
JPH1188419A (ja) * | 1997-09-12 | 1999-03-30 | Tsushin Hoso Kiko | 動画情報配信システムおよび方法 |
JP2002509313A (ja) * | 1998-01-16 | 2002-03-26 | メディアドナ、インコーポレイテッド | ピアコンポーネントを認証するためのシステムおよび方法 |
JPH11232292A (ja) * | 1998-02-16 | 1999-08-27 | Kawasaki Steel Corp | 異機種分散データ検索方法および検索装置 |
US10552603B2 (en) | 2000-05-17 | 2020-02-04 | Finjan, Inc. | Malicious mobile code runtime monitoring system and methods |
JP2006512689A (ja) * | 2003-01-02 | 2006-04-13 | トムソン ライセンシング | 受信サービスに関して行われる限定的実行決定並びに当該サービス及び関連する製品に関する情報メッセージの生成のための装置並びに方法 |
JP2007506163A (ja) * | 2003-09-17 | 2007-03-15 | リサーチ イン モーション リミテッド | 拡張可能なプロビジョニングを伴う動的なコンテンツ処理システムおよび方法 |
JP2006178953A (ja) * | 2004-12-20 | 2006-07-06 | Microsoft Corp | ファイルのクロスアプリケーションコラボレーションおよびクロスバージョンコラボレーションを容易にするためにソフトウェアを制御する方法およびシステム |
Also Published As
Publication number | Publication date |
---|---|
EP0989489A3 (en) | 2000-05-31 |
US5815661A (en) | 1998-09-29 |
EP0989489A2 (en) | 2000-03-29 |
US5630066A (en) | 1997-05-13 |
DE69532616D1 (de) | 2004-04-01 |
EP0718761A1 (en) | 1996-06-26 |
EP0718761B1 (en) | 2000-07-12 |
EP0989489B1 (en) | 2004-02-25 |
DE69532616T2 (de) | 2005-01-05 |
JP3805417B2 (ja) | 2006-08-02 |
US6052732A (en) | 2000-04-18 |
DE69517935T2 (de) | 2001-02-08 |
DE69517935D1 (de) | 2000-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH08263447A (ja) | 分散型コンピュータシステム及びその動作方法 | |
JP3868527B2 (ja) | バイトコードプログラムの保全性をベリファイするための方法及び装置 | |
US6075940A (en) | System and method for pre-verification of stack usage in bytecode program loops | |
US6704923B1 (en) | System and method for pre-verification of stack usage in bytecode program loops | |
US9880889B2 (en) | Virtual application extension points | |
US7120572B1 (en) | Memory efficient program pre-execution verifier and method | |
Hookway et al. | Digital FX! 32: Combining emulation and binary translation | |
US9405777B2 (en) | Registry emulation | |
US6871344B2 (en) | Configurations for binding software assemblies to application programs | |
US6637025B1 (en) | Dynamic selection/definition of which class/methods should or should not be jit'ed using information stored in a jar file | |
EP0945791A2 (en) | Techniques for reducing the cost of dynamic class initialization checks in compiled code | |
US20040107416A1 (en) | Patching of in-use functions on a running computer system | |
WO2002048821A2 (en) | Method to create optimized machine code through combined verification and translation of java bytecode | |
US6542887B1 (en) | Incorporating native code in Java archive files | |
US8719274B1 (en) | Method, system, and apparatus for providing generic database services within an extensible firmware interface environment | |
US10552135B1 (en) | Reducing a size of an application package | |
EP0950947B1 (en) | Static binding of dynamically dispatched calls in the presence of dynamic linking and loading | |
Hookway | DIGITAL FX! 32 running 32-Bit x86 applications on Alpha NT | |
JPH09179728A (ja) | 異パーソナリティ・アプリケーションの起動方法およびコンピュータ・システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050816 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051114 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060110 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060203 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060418 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060510 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100519 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110519 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110519 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120519 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130519 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130519 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |