(57)【要約】【課題】  本発明は、プラットフォーム固有ソフトウェアを必要とすることなく一意の識別子を生成する方法を提供する。【解決手段】  コンピュータシステムにおいて発生するイベントに応じて、コンピュータシステムにおける中間動作環境からイベントタイムスタンプを取り込む。本発明のさらなる実行により、コンピュータシステムにおける中間動作環境からシステム名およびハッシュ値を取り込む。システム名とイベントタイムスタンプとハッシュ値とを結合することにより、プラットフォーム固有ソフトウェアを必要とすることなくコンピュータシステムにおける中間動作環境を一意に識別する一意の識別子を生成する。【選択図】図３
2005149495.tif 000002
【特許請求の範囲】
【請求項１】
非プラットフォーム固有ソフトウェアにおいて一意の識別子（４００）を生成する方法であって、
コンピュータシステム（１００）において発生するイベントに応じて、前記コンピュータシステム（１００）における前記中間動作環境（２０６）からイベントタイムスタンプ（４０５）を取り込むステップと、
前記コンピュータシステム（１００）における前記中間動作環境（２０６）からシステム名（４０４）を取り込むステップと、
前記コンピュータシステム（１００）における前記中間動作環境（２０６）からハッシュ値（４０６）を取り込むステップと、
前記システム名（４０４）とイベントタイムスタンプ（４０５）とハッシュ値（４０６）とを結合するステップであって、それにより、プラットフォーム固有ソフトウェアを必要とすることなく前記コンピュータシステム（１００）における前記中間動作環境（２０６）を一意に識別する一意の識別子（４００）を生成するステップと
を含む方法。
【請求項２】
イベント情報を別のコンピュータシステムに送信するステップを
さらに含む請求項１に記載の方法。
【請求項３】
前記イベント情報は前記一意の識別子（４００）
を含む請求項２に記載の方法。
【請求項４】
前記中間動作環境（２０６）は、Ｊａｖａベース環境である
請求項１に記載の方法。
【請求項５】
コンピュータ読取可能媒体であって、
非プラットフォーム固有ソフトウェアにおいて一意の識別子（４００）を生成する中間動作環境命令の少なくとも１つのシーケンスであって、前記中間動作環境（２０６）によって該命令が実行されることにより、前記環境は、
前記中間動作環境（２０６）によって確定されるイベント発生に応じて、前記中間動作環境（２０６）からイベントタイムスタンプ（４０５）を取り込み、
前記中間動作環境（２０６）からシステム名（４０４）を取り込み、
前記中間動作環境（２０６）からハッシュ値（４０６）を取り込み、
前記取り込まれたイベントタイムスタンプ（４０５）と、システム名（４０４）と、ハッシュ値（４０６）と、を結合することにより、プラットフォーム固有ソフトウェアを必要とすることなくコンピュータシステム（１００）における前記中間動作環境（２０６）を一意に識別する一意の識別子（４００）を作成する
中間動作環境命令の少なくとも１つのシーケンス
を具備するコンピュータ読取可能媒体。
【請求項６】
前記中間動作環境（２０６）は、ＪＡＶＡ仮想マシンである
請求項５に記載のコンピュータ読取可能媒体。
【請求項７】
前記中間動作環境（２０６）によって実行される場合、前記中間動作環境（２０６）に対し、
前記一意の識別子（４００）を含むイベント情報を別のコンピュータシステムに送信すること
を実行させる中間動作環境命令のシーケンス
をさらに具備する請求項５に記載のコンピュータ読取可能媒体。
【請求項８】
非プラットフォーム固有ソフトウェアにおいて一意の識別子（４００）を生成するコンピュータシステム（１００）であって、
プロセッサ（１０４）と、
前記プロセッサ（１０４）に連結され、プロセッサ固有オペレーティングシステムと、前記オペレーティングシステムにおいて実行可能な中間動作環境（２０４）と、非プラットフォーム固有ソフトウェアにおいて一意の識別子（４００）を生成する中間動作環境命令のシーケンスであって、前記中間動作環境（２０６）によって実行される場合に、前記中間動作環境（２０６）に対し、
コンピュータシステム（１００）において発生するイベントに応じて、コンピュータシステム（１００）における前記中間動作環境（２０６）からイベントタイムスタンプ（４０５）を取り込むステップと、
コンピュータシステム（１００）における前記中間動作環境（２０６）からシステム名（４０４）を取り込むステップと、
コンピュータシステム（１００）における前記中間動作環境（２０６）からハッシュ値（４０６）を取り込むステップと、
前記システム名（４０４）とイベントタイムスタンプ（４０５）とハッシュ値（４０６）とを結合するステップであって、それにより、プラットフォーム固有ソフトウェアを必要とすることなくコンピュータシステム（１００）における前記中間動作環境（２０６）を一意に識別する一意の識別子（４００）を生成する、結合するステップと、
を実行させる中間動作環境命令のシーケンスと
を格納するメモリと
を備えるコンピュータシステム。
【請求項９】
前記中間動作環境（２０６）は、ＪＡＶＡ仮想マシンである
請求項８に記載のコンピュータシステム。
【請求項１０】
前記中間動作環境（２０６）によって実行される場合、前記中間動作環境（２０６）に対し、
前記一意の識別子（４００）を含むイベント情報を別のコンピュータシステム（１００）に送信するステップ
を実行させる中間動作環境命令のシーケンス
をさらに備える請求項８に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非プラットフォーム固有ソフトウェアにおいて一意の識別子を生成する方法および装置に関する。
【背景技術】
【０００２】
コンピュータは、多数のコンポーネント、たとえば実行可能ソフトウェアおよびそのソフトウェアを実行するハードウェアコンポーネントから作製される複雑なシステムである。
実行可能ソフトウェアコンポーネントには、オペレーティングシステム、デバイスドライバおよびソフトウェアアプリケーションがある。
プロトコルは、２つ以上のコンポーネントが通信する方法を指定する。
多数のハードウェアおよびソフトウェアコンポーネントの設計および製造業者が存在するため、多くのコンポーネントに互換性がない。
たとえば、ソフトウェアアプリケーションの大部分は、特定のオペレーティングシステムに固有であり、別のオペレーティングシステムによって実行可能ではない。
基礎にあるソースコードが、異なるオペレーティングシステムに対してコンパイルされるように十分に一般化されている場合であっても、結果としてのソフトウェアアプリケーションを、１つのオペレーティングシステムから別のオペレーティングシステムに、新たなオペレーティングシステムに対するソースコードのコンパイルを必要とせずに移すことはできない。
【０００３】
特定のオペレーティングシステムに対する実行可能なソフトウェアの設計者は、実行可能なソフトウェアアプリケーションを設計し書く時にこの状況を心に留めなければならない。
１つの手法は、特定のハードウェアシステムにおいて、マイクロソフト・コーポレーション（Microsoft Corp）から入手可能なＷＩＮＤＯＷＳ（登録商標）  ２０００等の単一の特定のオペレーティングシステムによって実行されるソフトウェアアプリケーションを作成することである。
オペレーティングシステムとコンピュータハードウェアとの組合せを、プラットフォームと呼ぶ。
この手法では、ソフトウェアアプリケーションは、他のオペレーティングシステムに移植可能ではなく、たとえば、ＷＩＮＤＯＷＳ  ２０００オペレーティングシステムによって実行されるように設計されたオペレーティングシステム固有のソフトウェアアプリケーションは、アップル・コンピュータ・インコーポレイテッド（Apple Computer, Inc.）から入手可能なＭＡＣＩＮＴＯＳＨ（登録商標）オペレーティングシステムによって実行可能でなく、その逆もまた同様である。
【０００４】
別の手法は、中間実行可能ソフトウェアコンポーネント、すなわち、ソフトウェアアプリケーションとオペレーティングシステムとの間のインタフェースを提供する中間動作環境を利用するようにソフトウェアアプリケーションを設計するというものである。
中間コンポーネントの最も一般的な例は、仮想マシン、たとえば、ＪＡＶＡ（登録商標）仮想マシン（ＪＡＶＡ  ＶＭまたはＪＶＭ）である。
ＪＡＶＡは、サン・マイクロシステムズ（Sun Microsystems）から入手可能である。
ＪＡＶＡ  ＶＭはオペレーティングシステムに固有に、個々に適合するように書かれなければならないが、ＪＡＶＡ言語ベースのソフトウェアアプリケーションは、基礎にあるオペレーティングシステムとは係りなくいかなるＪＡＶＡ  ＶＭによっても実行可能である。
この手法の不都合は、ソフトウェアアプリケーションは、オペレーティングシステムとインタフェースするためにＪＶＭに依存し、ＪＶＭによって提供されない機能にアクセスすることができない、ということである。
たとえば、ＪＶＭは、ＪＡＶＡベースソフトウェアアプリケーションに対し、特定のオペレーティングシステムに対して書かれたソフトウェアアプリケーションがアクセス可能な、オペレーティングシステムによって提供されるいくつかの低レベルネットワーキング機能へのアクセスを提供しない場合がある。
【０００５】
本技術分野において、実行可能なソフトウェアを使用してコンピュータシステムに格納される一意のデータを取得することにより、グローバル一意識別子（global unique identifier）（ＧＵＩＤ）および汎用一意識別子（universal unique identifier）（ＵＵＩＤ）とも呼ぶ一意識別子（unique identifier）（ＵＩＤ）を生成することが知られている。
しかしながら、本発明者の知るＵＩＤを生成する従来の手法では、ＵＩＤを生成するためのプラットフォーム固有情報を使用する必要がある。
【０００６】
ほとんどのコンピュータシステムは、コンピュータシステムからネットワークへのネットワークアクセスを可能にするイーサネット（登録商標）インタフェースカードを有する。
イーサネットカード製造業者間で合意されたラインセンスシステムにより、各イーサネットカードは、イーサネットカードハードウェアの一部として一意の媒体アクセス制御（media access control）（ＭＡＣ）アドレスを有する。
ＭＡＣアドレスはイーサネットカード間で一意であるように定義されるため、もっとも頻繁には、ＭＡＣアドレスまたは生成されたＭＡＣアドレス、たとえば擬似ＭＡＣアドレスが、ＵＩＤに対する基礎として使用される。
最小限、既存のＵＩＤ生成メカニズムは、他のパラメータと組み合わせて入力としてＭＡＣアドレスを使用する。
【０００７】
プラットフォーム固有情報を使用してＵＩＤを生成する場合の１つの問題点は、かかるプラットフォーム固有情報にアクセスするために、ＵＩＤ生成メカニズムは、プラットフォーム固有情報を知っており、ＵＩＤが生成されるべき各プラットフォームに対する情報にアクセスする方法を有していなければならないということである。
上述したように、１つのプラットフォーム、たとえばＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓオペレーティングシステムを実行するパーソナルコンピュータに対して開発されたＵＩＤ生成ソフトウェアは、別のプラットフォーム、たとえばＨＰ−ＵＸオペレーティングシステムを実行しているパーソナルコンピュータで動作することができない。
【０００８】
１つのプラットフォーム、すなわち特定のプロセッサおよびオペレーティングシステム機能に対して書かれた実行可能ソフトウェアは、別のプラットフォームに移すことはできない。
たとえば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓベースの実行ファイル（executables）は、ＨＰ−ＵＸ  Ｕｎｉｘ（登録商標）オペレーティングシステムでは実行しない。
【０００９】
この問題に対する１つの解決法は、Sun MicrosystemsのＪａｖａ仮想マシン（ＪＶＭ）および対応するＪａｖａプログラミング言語等の中間動作環境を使用することである。
この手法に基づき、特定のプラットフォームで実行するために中間動作環境を書く。
中間動作環境に対するプログラミングインタフェースは、プラットフォームを越えて標準であるため、１つの所与のプラットフォームにおいて中間動作環境に対して書かれたソフトウェアは、異なるプラットフォームの同じ中間動作環境において変更することなく実行可能である。
ＪＶＭは１つのかかる中間動作環境であり、Ｊａｖａプログラミング言語は、ＪＶＭに対して開発されたソフトウェアに対し共通のプログラミングインタフェースを提供する。
ＪＶＭおよびＪａｖａプログラミング言語を使用することにより、ソフトウェアを１つのプラットフォームにおいて一度だけ書き、その後、そのソフトウェアは、ＪＶＭを有する他のプラットフォームにおいて変更なしに実行可能となり得る。
【００１０】
Ｊａｖａは、変更なしにすべてのプラットフォームで実行することができるソフトウェアアプリケーションの生成を可能にするように設計されたプログラミング言語である。
Ｊａｖａは、当初、Sun Microsystems, Inc.により１９９１年、組込みアプリケーション用の言語として開発された。
Ｊａｖａは、ソースコードが、バイトコードと呼ばれる中間言語にコンパイルされるインタプリタ型言語である。
バイトコードは、実行時にマシンコードに変換または翻訳される。
このため、Ｊａｖａプログラムは、いかなる特定のハードウェアにも依存せず、Ｊａｖａ仮想マシンを有する任意のコンピュータで実行する。
【００１１】
［ハードウェア概観］
図１は、例示的なコンピュータシステム１００を示すブロック図である。
コンピュータシステム１００のブロック図はまた、小型メインフレーム、サーバ、ハンドヘルド等にも適用可能である。
【００１２】
コンピュータ１００は、バス１０２または情報を通信する他の通信メカニズムと、情報を処理する、バス１０２に連結されたプロセッサ１０４と、を有する。
コンピュータ１００はまた、プロセッサ１０４によって実行される命令を格納する、バス１０２に連結された、ランダムアクセスメモリ（ＲＡＭ）または他の動的記憶デバイス等のメインメモリ１０６も有する。
また、メインメモリ１０６を、プロセッサ１０４によって実行される命令の実行中に一時変数または他の中間情報を格納するために使用してもよい。
コンピュータ１００はさらに、プロセッサ１０４のための静的情報および命令を格納する、バス１０２に連結されたリードオンリメモリ（ＲＯＭ）１０８または他の静的記憶デバイスを有する。
命令、一時変数および他の中間情報を格納するために、ハードディスクドライブ等の記憶デバイス１１０を設け、バス１０２に連結する。
【００１３】
コンピュータ１００を、バス１０２を介して、ユーザに対しインタフェースを表示するフラットパネルディスプレイ等のディスプレイ１１２に連結してもよい。
プロセッサ１０４に対し情報およびコマンド選択を通信する、英数字およびファンクションキーを含むキーボード等の入力デバイス１１４を、バス１０２に連結する。
別のタイプのユーザ入力デバイスは、プロセッサ１０４に方向情報およびコマンド選択を通信し、ディスプレイ１１２上のカーソルの動きを制御する、スタイラス、ペン、マウス、トラックボールまたはカーソル方向キー等のカーソルコントロール１１６である。
この入力デバイスは、一般に、２つの軸に２つの自由度を有し、第１の軸（たとえばｘ）と第２の軸（たとえばｙ）により、デバイスが平面上の位置を指定することができる。
【００１４】
命令のシーケンスを、記憶デバイス１１０等の別のコンピュータ読取可能媒体からメインメモリ１０６に読み込んでもよいが、コンピュータ読取可能媒体は、記憶デバイス１１０等のデバイスに限定されない。
たとえば、コンピュータ読取可能媒体には、フロッピーディスク（登録商標）、フレキシブルディスク、ハードディスク、磁気テープまたは他の任意の磁気媒体、コンパクトディスク・リードオンリメモリ（ＣＤ−ＲＯＭ）、他の任意の光媒体、パンチカード、紙テープ、穴のパターンを有する他の任意の物理媒体、ランダムアクセスメモリ（ＲＡＭ）、プログラマブルリードオンリメモリ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、フラッシュＥＰＲＯＭ、他の任意のメモリチップまたはカートリッジ、電気、電磁気、赤外線または光信号に埋め込まれた搬送波、もしくはコンピュータが読み取ることができる他の任意の媒体が含まれてもよい。
メインメモリ１０６に含まれる命令のシーケンスを実行することにより、プロセッサ１０４は、プロセスステップを実行する。
代替実施形態では、コンピュータソフトウェア命令の代わりにまたはそれと組み合わせて、ハードワイヤード回路を使用してもよい。
【００１５】
コンピュータ１００はまた、バス１０２に連結された通信インタフェース１１８も有し、本技術分野では、双方向データ通信を提供することが既知である。
たとえば、通信インタフェース１１８は、統合サービスデジタル網（integrated services digital network）（ＩＳＤＮ）カード、デジタル加入者線（digital subscriber line）（ＤＳＬ）カード、または対応するタイプの電話線へのデータ通信接続を提供するモデムであってもよい。
別の例として、通信インタフェース１１８は、互換性のあるＬＡＮへのデータ通信接続を提供するローカルエリアネットワーク（local area network）（ＬＡＮ）カードであってもよい。
無線リンクを実施してもよい。
いかなるかかる実施態様においても、通信インタフェース１１８は、さまざまなタイプの情報を表すデジタルデータストリームを搬送する電気、電磁気または光信号を送受信する。
たとえば、２つ以上のコンピュータ１００を、各々が通信インタフェース１１８を使用する従来の方法でともにネットワーク化してもよい。
【００１６】
ネットワークリンク１２０は、一般に、１つまたは複数のネットワークを介する他のデータ装置に対するデータ通信を提供する。
たとえば、ネットワークリンク１２０は、ローカルネットワーク１２２を介しての、ホストコンピュータ１２４に対するかまたはインターネットサービスプロバイダ（Internet Service Provider）（ＩＳＰ）１２６によって操作されるデータ機器に対する接続を提供してもよい。
それによって、ＩＳＰ１２６は、今では一般に「インターネット」１２８と呼ぶ世界的なパケットデータ通信ネットワークを介してデータ通信サービスを提供する。
ローカルネットワーク１２２とインターネット１２８とはともに、デジタルデータストリームを搬送する電気、電磁気または光信号を使用する。
コンピュータ１００との間でデジタルデータを搬送する、さまざまなネットワークを通る信号ならびにネットワークリンク１１０上のかつ通信インタフェース１１８を通る信号は、情報を運ぶ搬送波の例示的な形態である。
【００１７】
コンピュータ１００は、ネットワーク、ネットワークリンク１２０および通信インタフェース１１８を介して、プログラムコードを含むメッセージを送信しデータを受信することができる。
インターネットの例では、サーバ１３０は、インターネット１２８、ＩＳＰ１２６、ローカルネットワーク１２２および通信インタフェース１１８を介してアプリケーションプログラムに対する要求されたコードを送信してもよい。
【００１８】
受信コードを、プロセッサ１０４が受け取った時に実行してもよく、かつ／または、後に実行するために記憶デバイス１１０または他の不揮発性記憶機構に格納してもよい。
このように、コンピュータ１００は、搬送波の形態でアプリケーションコードを取得してもよい。
【００１９】
図２は、コンピュータシステムハードウェアおよびソフトウェアアーキテクチャ２００の階層化した図を示す高レベルブロック図である。
アーキテクチャ２００は、コンピュータハードウェア１００（上記図１に関連して説明）と、ＲＯＭ１０８、メインメモリ１０６または記憶デバイス１１０に格納されたオペレーティングシステム２０２と、を有する。
プロセッサ１０４は、メモリ１０６、ＲＯＭ１０８または記憶デバイス１１０からのオペレーティングシステム２０２命令を実行する。
本技術分野において既知であるように、プラットフォーム固有実行ファイル２０４に関する命令は、プロセッサ１０４によって実行され、オペレーティングシステム２０２によって提供される機能にアクセスする。
たとえば、プラットフォーム固有実行ファイル２０４は、ワードプロセッサ、ウェブブラウザ、スプレッドシートプログラム、電子メールプログラムまたは他のソフトウェア実行ファイルであってもよい。
プラットフォーム固有実行ファイル２０４はまた、ネイティブプログラムと呼ぶ。
オペレーティングシステム２０２の例は、ヒューレット−パッカード・デベロップメント・カンパニー・エル．ピー．（Hewlett-Packard Development Company, LP）から入手可能なＨＰ−ＵＸである。
【００２０】
中間動作環境、すなわち仮想マシン２０６の命令は、プロセッサ１０４によって実行され、プロセッサに対し、オペレーティングシステム２０２によって提供される機能、たとえば関数呼出しまたはメソッド呼出しにアクセスさせる。
仮想マシン２０６は、非プラットフォーム固有（non-platform-specific）（ＮＰＳ）実行ファイル２０８、すなわち、非ネイティブプログラム、たとえばＪａｖａベースプログラムの、コンピュータ１００において追加の機能を提供する命令を実行する。
上述したように、仮想マシン２０６の例は、Sun Microsystems, Inc.から入手可能なＪａｖａ仮想マシンである。
【００２１】
本発明の実施形態によれば、仮想マシン２０６は、特定のハードウェア１００とオペレーティングシステム２０２との各組合せに対してカスタマイズされなければならないソフトウェアアーキテクチャの唯一のコンポーネントである。
すなわち、特定のプロセッサ、グラフィックスインタフェースデバイスまたは他のコンピュータハードウェアに対し、または特定のオペレーティングシステム２０２バージョンまたは製造業者に対し、ＮＰＳ実行ファイル２０８をカスタマイズする必要はない。
対照的に、各プラットフォーム、すなわちオペレーティングシステム２０２とハードウェア１００との組合せは、異なるバージョンのプラットフォーム固有実行ファイル２０４を必要とする。
【００２２】
ＮＰＳ実行ファイル２０８は、当業者には既知の標準仮想マシン言語方法を介して通信する。
本発明のソフトウェアアーキテクチャによって設計されることにより、ＮＰＳ実行ファイル２０８は、仮想マシン２０６を有する別のコンピュータとオペレーティングシステム２００とに完全に移植可能である。
上記コンポーネントの各々は、一般に、デスクトップ、ラップトップ、サーバおよびハンドヘルドまたは組込みデバイスを含む、人間の直接の対話が意図された任意のコンピューティングデバイスにおいて標準である。
ＮＰＳ実行ファイル２０８は、上述したコンポーネントのいずれの特定のタイプにも係りなく、かかるシステムにおいて実行する。
【発明の開示】
【発明が解決しようとする課題】
【００２３】
したがって、本発明の目的は、プラットフォーム固有ソフトウェアを必要とすることなく一意の識別子を生成する方法およびシステムを提供することである。
【００２４】
本発明の別の目的は、複数の異なるプラットフォームにおいて変更することなく実行可能なかかる方法およびシステムを提供することである。
【課題を解決するための手段】
【００２５】
本発明は、プラットフォーム固有ソフトウェアを必要とすることなく一意の識別子を生成する方法を提供する。
コンピュータシステムにおいて発生するイベントに応じて、コンピュータシステムにおける中間動作環境からイベントタイムスタンプを取り込む。
本発明のさらなる実行により、コンピュータシステムにおける中間動作環境からシステム名およびハッシュ値を取り込む。
システム名とイベントタイムスタンプとハッシュ値とを結合することにより、プラットフォーム固有ソフトウェアを必要とすることなくコンピュータシステムにおける中間動作環境を一意に識別する一意の識別子を生成する。
【００２６】
非プラットフォーム固有ソフトウェアにおいて一意の識別子を生成する方法態様は、イベント発生に応じて、コンピュータシステムにおける中間動作環境からイベントタイムスタンプを取り込むことを含む。
中間動作環境から、システム名を取り込む。
中間動作環境から、ハッシュ値を取り込む。
システム名とイベントタイムスタンプとハッシュ値とを結合して、プラットフォーム固有ソフトウェアを必要とすることなくコンピュータシステムにおける中間動作環境を一意に識別する一意の識別子を生成する。
【００２７】
コンピュータ読取可能媒体態様は、プロセッサによって実行され、プロセッサに対し、中間動作環境によって確定されるイベント発生に応じて、中間動作環境からイベントタイムスタンプを取り込ませる命令を含む。
プロセッサは、中間動作環境からシステム名とハッシュ値とを取り込み、システム名、ハッシュ値およびイベントタイムスタンプを結合して一意の識別子を生成する。
【００２８】
本発明のさらに他の目的および利点は、以下の詳細な説明から当業者には容易に明らかとなろう。
以下の詳細な説明では、本発明の好ましい実施形態を、単に、本発明を実施する考慮される最良の形態の例示として示し説明する。
理解されるように、本発明は、他のかつ異なる実施形態が可能であり、そのいくつかの詳細は、すべて本発明から逸脱することなくさまざまな明白な点で変更が可能である。
【００２９】
本発明を、添付図面の各図において限定としてではなく例として示す。
そこでは、同じ参照数字記号は図面を通して同様の要素を表す。
【発明を実施するための最良の形態】
【００３０】
本発明による実施形態は、プラットフォーム固有ソフトウェアを必要とすることなく一意の識別子を生成する。
【００３１】
上述した図１は、本発明の実施形態を実施してもよい、例示的なコンピュータシステム１００を示すブロック図である。
本発明は、目下入手可能なコンピュータシステムで使用可能であり、また、小型メインフレーム、サーバ、ハンドヘルド等にも適用可能である。
【００３２】
本発明は、図１の図示したコンピュータ等のコンピュータ１００を使用して、そのコンピュータ１００に対しプラットフォーム固有ソフトウェアを必要とすることなく一意の識別子を生成させる命令および情報のシーケンスを格納しそれらにアクセスすることに関する。
本発明の一実施形態によれば、プロセッサ１０４が、入力デバイス１１４、カーソルコントロール１１６または通信インタフェース１１８を介して受け取る入力に応じてメインメモリ１０６に含まれる命令のシーケンスを実行することに応じて、コンピュータ１００によって一意の識別子が生成される。
上述したように、かかる命令を、記憶デバイス１１０等の別のコンピュータ読取可能媒体からメインメモリ１０６に読み込んでもよい。
【００３３】
イベントの発生により、本発明のソフトウェアアーキテクチャを使用して設計されたＮＰＳ実行ファイル２０８が実行され、プロセッサ１０４は、図３のプロセスフロー３００に示すステップを実行することにより、図４に示すもの等の一意の識別子を生成する。
ここで、図３について詳細に説明する。
【００３４】
ステップ３０２におけるイベントの発生により、プロセッサ１０４によって実行されている仮想マシン２０６によりＮＰＳ実行ファイル２０８のプロセスフロー３００の実行が開始する。
ステップ３０４において、ＮＰＳ実行ファイル２０８の実行により、仮想マシン２０６がイベントタイムスタンプを生成する。
イベントタムスタンプは、イベント発生の時刻を指定し、特定の実施形態では、同様に発生の日付を含む。
たとえば、図４に示すような「Wed Oct 29 09:46:38 EST 2003」がある。
代替実施形態では、タイムスタンプは、タイムスタンプ情報の詳細を増加または減少させるようにより多くの有効数字を含んでもより少ない有効数字を含んでもよい。
イベントタイムスタンプを、メモリ１０６に格納する。
プロセスフローはステップ３０６に進む。
【００３５】
ステップ３０６において、ＮＰＳ実行ファイル２０８を実行している仮想マシン２０６は、オペレーティングシステム２０２において指定されるようなシステム名を取り込む。
システム名を、プラットフォーム２００のユーザ、たとえば「Zaphod's System」によって指定してもよい。
取込まれたシステム名をメモリ１０６に格納する。
プロセスフローはステップ３０８に進む。
【００３６】
ステップ３０８において、ＮＰＳ実行ファイル２０８の実行により、仮想マシン２０６がハッシュ値を生成する。
ハッシュ値は、仮想マシン２０６によって提供される参照であり、仮想マシン内の任意のオブジェクトに対して一意である。
たとえば、その値は、所与のオブジェクトを識別する割当てテーブルへのアドレスまたはオフセットである。
１つの特定の実施形態では、ハッシュ値は、ＵＩＤの生成をもたらすイベントに応じて作成されるオブジェクトに基づく。
ハッシュ値をメモリ１０６に格納する。
プロセスフローはステップ３１０に進む。
【００３７】
ステップ３１０において、ＮＰＳ実行ファイル２０８の実行により、仮想マシン２０６は、システム名と、イベントタイムスタンプと、ハッシュ値と、を結合する。
結合は、情報の連結であっても、またはその結合から情報の別々の部分を後に検索することを可能にする情報の他の結合方法であってもよい。
代替実施形態は、結合された情報に対して当業者に既知の暗号化および／または圧縮技法を採用してもよい。
【００３８】
情報の結合により、ステップ３１２において一意の識別子が生成される。
【００３９】
図４は、本発明による実施形態によって生成される一意の識別子の例である。
一意の識別子４００は、システム名フィールドラベル４０１、タイムスタンプフィールドラベル４０２およびハッシュ値フィールドラベル４０３と、対応するシステム名値４０４、タイムスタンプ値４０５およびハッシュ値４０６と、を含む。
代替実施形態では、本発明の精神および範囲から逸脱することなくフィールドラベル４０１、４０２および４０３を省略してもよい、ということを理解しなければならない。
さらに、フィールド４０１〜４０３および値４０４〜４０６の順序を、本発明の動作に影響を与えることなく変更してもよい。
【００４０】
本発明のソフトウェアアーキテクチャによって設計することにより、ＮＰＳ実行ファイル２０８は、仮想マシン２０６を有する別のコンピュータおよびオペレーティングシステム２００に完全に移植可能であり、プラットフォーム固有命令を必要とすることなく一意の識別子を生成することができる。
ＮＰＳ実行ファイル２０８は、上述したコンポーネントのいずれの特定のタイプにも係りなく、かかるシステムで実行する。
【００４１】
有利には、本発明の実施形態によって生成される一意の識別子は、いかなるプラットフォーム固有命令も必要とせず、互換性のある中間動作環境を有する任意のプラットフォームにおいて実行可能である。
生成された識別子は、非常に高い確率の一意性を有する。
別々のプラットフォーム２００で同一の識別子を生成するためには、発生するイベントは、同時に発生しなければならず、システム名は同一でなければならず、ハッシュ値は一致しなければならない。
上記情報、すなわちシステム名、イベントタイムスタンプおよびハッシュ値を結合することにより、異なるプラットフォームで重複した識別子が生成される確率が極めて低くなる。
１つの特定の実施形態では、一意の識別子を使用して、異なるプラットフォームまたは同じプラットフォームによって生成されるサポート要求を区別してもよい。
【００４２】
さらに有利には、プラットフォーム固有ＵＩＤソフトウェアが必要でないため、上述したように、サポートされる各プラットフォームに対する異なるバージョンが必要でない。
さらに、開発要件と同様に保守およびサポート要件が低減し、たとえば、複数のバージョンより、単一バージョンを作成し、保守しサポートする方が費用がかからない。
バージョンが追加される毎に、各プラットフォームにおいてそのバージョンに対しインストールプロセスの作成、保守、およびサポート、テスト、確認（validation）ならびに継続した技術サポートが必要となる。
【００４３】
当業者には、Ｊａｖａ仮想マシンおよびプログラミング言語は本質的に例示的なものであり、その代りに他のプラットフォーム中立中間動作環境および／または言語が使用可能である、ということが理解されよう。
【００４４】
当業者は、本発明が上述した目的のすべてを果たすということを容易に理解するであろう。
上述した明細書を読んだ後、当業者は、本明細書で広く開示した本発明のさまざまな変更形態、等価物の代用形態、および他のさまざまな態様をもたらすことができるであろう。
したがって、本明細書において認められる保護は、添付の特許請求の範囲とその等価物とに含まれる定義によってのみ限定されることが意図されている。
【図面の簡単な説明】
【００４５】
【図１】本発明の実施形態とともに使用可能なコンピュータシステムの高レベルブロック図である。
【図２】コンピュータシステムハードウェアおよびソフトウェアアーキテクチャの高レベル形態のブロック図である。
【図３】本発明による実施形態のプロセスフローチャートである。
【図４】本発明の実施形態によって生成される一意の識別子の例である。
【符号の説明】
【００４６】
１０２・・・バス、
１０４・・・プロセッサ、
１０６・・・メインメモリ、
１１０・・・記憶デバイス、
１１２・・・ディスプレイ、
１１４・・・入力デバイス、
１１６・・・カーソルコントロール、
１１８・・・通信インタフェース、
１２０・・・ネットワークリンク、
１２２・・・ローカルネットワーク、
１２４・・・ホスト、
１２８・・・インターネット、
１３０・・・サーバ、
１００・・・ハードウェア、
２０２・・・オペレーティングシステム、
２０４・・・プラットフォーム固有実行ファイル、
２０６・・・仮想マシン、
２０８・・・非プラットフォーム固有実行ファイル、
【図１】
2005149495.tif 000003
【図２】
2005149495.tif 000004
【図３】
2005149495.tif 000005
【図４】
2005149495.tif 000006