JP2001518658A - プラットフォームとアプリケーションとの間の互換性を評価する方法および装置 - Google Patents

プラットフォームとアプリケーションとの間の互換性を評価する方法および装置

Info

Publication number
JP2001518658A
JP2001518658A JP2000514189A JP2000514189A JP2001518658A JP 2001518658 A JP2001518658 A JP 2001518658A JP 2000514189 A JP2000514189 A JP 2000514189A JP 2000514189 A JP2000514189 A JP 2000514189A JP 2001518658 A JP2001518658 A JP 2001518658A
Authority
JP
Japan
Prior art keywords
programming
application
computer
programming resource
resource tree
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
JP2000514189A
Other languages
English (en)
Inventor
ルーニイ,ケビン・ティ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2001518658A publication Critical patent/JP2001518658A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 プラットフォームとアプリケーションとの間の互換性を評価する方法および装置を提供する。本発明の実施形態を用いて、ソフトウェア・アプリケーションがオペレーティング・プラットフォームと互換性があるか否かを評価することができる。オペレーティング・プラットフォームを記述する仕様が定義用言語を用いて生成される。この仕様はオペレーティング・プラットフォームのプログラミング資源を識別する。アプリケーションの依存性およびプログラミング資源が識別される。互換性エンジンが実行され、アプリケーションの仕様への依存性が解決される。互換性エンジンの出力は、アプリケーションがオペレーティング・プラットフォームに適合しているか否か、またアプリケーションがどのように仕様に違反しているかを識別する。

Description

【発明の詳細な説明】
【0001】 (発明の背景) 1.発明の分野 本発明は、コンピュータ・システム、特にプラットフォームとプラットフォー
ム上で実行されるように意図されたアプリケーションとの間の互換性の問題に関
する。
【0002】 2.背景技術 コンピュータ・ソフトウェアの開発者は非伝統的な環境のためのソフトウェア
・アプリケーションおよびプログラムを作成している。開発者はデスクトップ・
コンピュータまたはラップトップ・コンピュータ用のプログラムだけを作成する
のではなく、機能を追加または拡張する「埋設プロセッサ」を有することが可能
な別のシステムのためのプログラムも作成している。そのようなデバイスはセル
式電話機、パーソナル・ディジタル・アシスタント、スマート・カード、ページ
ャその他のデバイスを含む。ソフトウェア・アプリケーションが使用される環境
をここでは「プラットフォーム」と呼ぶ。
【0003】 新しい、先進のプラットフォームのためのソフトウェア・アプリケーションを
開発する場合、そのソフトウェアがこれらのプラットフォームと互換性があるか
試験し、分析できることが重要である。これによって開発者はソフトウェアがプ
ラットフォームと互換性があるか否かを判定できる。デバッグ用ソフトウェアを
用いて実行時に一定の分析機能を提供することはできるが、新しい、または変化
しつつあるプラットフォームに関して融通性を与えない。リンカおよびその他の
ビルド・ツールはコードをリンクする。すなわち、ビルド・ツールはオブジェク
ト・コードから実行可能コードを作成し、作成時に、参照が未解決である場合に
警告する。ビルド・ツールはリンク先のオブジェクト・コードに範囲が限定され
ている。ビルド・ツールはコードのプラットフォームとの間の互換性を検証また
は評価するものではない。
【0004】 ワールド・ワイド・ウェブなどのネットワーク・システムが普及するにつれて
、コンピュータ・プラットフォームおよび非コンピュータ・プラットフォームの
ウェブとの間の互換性を提供する必要が増している。Sun JavaSoft TM によって開発されるJavaTM言語は、ウェブ上で実行されるプラットフォー
ムから独立したアプリケーションを記述し、所望の互換性を与える方法を提供し
ている。プラットフォームの中には、一意的インタフェースおよび/またはプロ
プラエタリ・インタフェースや、制限されたメモリと表示サイズ、制約された消
費電力、ユーザ応答時間、および制限された物理空間を有するものがある。これ
らのプラットフォームをここでは制約環境と呼ぶ。PersonalJavaTM と呼ばれるJavaTMのバージョンは、とりわけ、制約された環境での使用を目
的としてJavaSoftによって開発されてきた。JavaおよびPerso
nalJavaの説明については、ウェブ・サイト「http://www.j
ava.sun.com」を参照されたい。
【0005】 Java、PersonalJava、またはその他のどの言語を使用するに
せよ、デバイスのアプリケーションを記述する場合、アプリケーションが所期の
デバイスと互換性があるか否かを分析できることが重要である。過去には、デバ
ッグ用プログラムを用いて分析機能の一部が提供されてきた。ただし、携帯機器
の異なる環境の数が増大するにつれて、要求されるデバッグ用プログラムの数も
膨大になる。アプリケーションと、そのアプリケーションが記述される対象のデ
バイス環境との間の互換性を分析するという問題の一般的な解決策を有すること
が望ましいと思われる。
【0006】 (発明の概要) 本発明の実施態様は、ソフトウェア・アプリケーションがオペレーティング・
プラットフォームと互換性があるか否かを評価するために使用できる。オペレー
ティング・プラットフォームを記述する仕様は定義用言語によって記述される。
この仕様はオペレーティング・プラットフォームのプログラミング資源を識別す
る。アプリケーションの依存性およびプログラミング資源が識別される。プログ
ラミング資源はアプリケーションがアクセスできるデータおよび機能である(例
えば、Javaアプリケーション環境では、プログラミング資源はメソッド、ク
ラス、およびパッケージを含む)。互換性エンジンは、仕様に対して解決される
アプリケーションの依存性を解決するために実行される。互換性エンジンの出力
は、アプリケーションがオペレーティング・プラットフォームに適合しているか
否か、またアプリケーションがどのように仕様に違反しているかを識別する。
【0007】 アプリケーションの参照を解決するために使用できるオペレーティング・プラ
ットフォームのプログラミング資源を指定するために文法が使用される。オペレ
ーティング・プラットフォームのプログラミング資源を定義する少なくとも1つ
の仕様が作成される。複数の使用が定義される場合、仕様は組み合わされ、オペ
レーティング・プラットフォームの組合せ定義が作成される。アプリケーション
のプログラム・ファイルは解析され、アプリケーションを実行する前に解決しな
ければならない参照が識別される。アプリケーションのプログラミング資源も識
別される。
【0008】 アプリケーション内で参照を解決しようという試みがなされる。ただし、アプ
リケーションはアプリケーション内では解決できない外部参照を含むことがある
。アプリケーションもオペレーティング・プラットフォームも参照を解決できる
プログラミング資源を含まない場合、参照は解決不能である。
【0009】 参照がアプリケーション内で解決できない場合、オペレーティング・プラット
フォームが参照を解決するために使用できるプログラミング資源を含むか否かを
判定するために組合せ仕様が検査される。プログラミング資源が見つかると、プ
ログラミング資源に関連するコンプライアンス状態(Compliance status)が検 査され、それがアプリケーションによって使用可能か否かが判定される。プログ
ラミング資源が「必要」のコンプライアンス状態を有する場合、オペレーティン
グ・プラットフォームはプログラミング資源を含む必要があり、アプリケーショ
ンの参照は解決済みと報告される。「オプショナル」のコンプライアンス状態は
オペレーティング・プラットフォームにエントリが含まれていてもよいし、そう
でなくてもよいということを示す。任意選択状態がその後に処理される仕様によ
って取り消されると、参照はエラーの形で報告される(例えば、参照は未実施の
任意選択のプログラミング資源である)。「修正済み」コンプライアンス状態は
、エントリに関連するプログラミング資源が変更されていることを示す。「未サ
ポート」コンプライアンス状態は、アプリケーションの参照がオペレーティング
・プラットフォームによってサポートされていないことを示す。「オプショナル
」、「修正済み」、または「未サポート」状態は参照を解決するが、その参照に
関する潜在的な問題を示している。
【0010】 アプリケーション・プログラミング資源または「必要」の仕様プログラミング
資源によって解決しない参照については、警告またはエラー・メッセージが生成
される。「修正済み」の仕様プログラミング資源によって解決する参照、または
プログラミング資源によって解決しない(すなわち、「unresolved」
状態の)参照については、「non−conformance」警告が生成され
る。「未サポート」または「オプショナル」の仕様プログラミング資源によって
解決する参照があると「non−conformance」エラーが生成される
【0011】 本発明の一実施態様では、オペレーティング・プラットフォームはJavaTM アプリケーション環境を含む。参照を解決するために使用できるプログラミング
資源はパッケージ、クラス、またはメソッドを含む。アプリケーションを含むク
ラス・ファイルは解析され、その参照(例えば、フィールド、戻り種別およびメ
ソッド引数)が識別される。アプリケーションの参照を識別するアプリケーショ
ン依存性ツリーが作成される。
【0012】 参照をアプリケーションのクラス・ファイルの各々の内部で解決する試みがな
される。すべての参照が処理された後で、アプリケーションのオペレーティング
・プラットフォームへの適合に関する評価とアプリケーションがどのように違反
しているかの識別が提供される。このフィードバックを用いて、アプリケーショ
ンとそのオペレーティング・プラットフォームとの間の適合性が得られるアプリ
ケーション、オペレーティング・プラットフォーム、またはその両方に対して可
能な変更が決定される。
【0013】 (発明の詳細な説明) プラットフォームとアプリケーションとの間の互換性を評価する方法および装
置について以下に説明する。以下の説明では、本発明をさらに詳しく説明するた
めに、多数の特定の詳細について説明する。ただし、当業者には、これらの特定
の詳細なしに本発明を実施できることは明らかであろう。その他に関しては、本
発明を分かりにくくしないために、よく知られている機能は詳述しない。
【0014】 コンピュータ実行環境の実施形態(ハードウェア) 本発明の一実施形態は、図1に示されたコンピュータ100などの汎用コンピ
ュータ上で実行されるコンピュータ可読プログラム・コードの形式のコンピュー
タ・ソフトウェアとして実装できる。キーボード110とマウス111が双方向
システム・バス118に結合されている。キーボードおよびマウスはユーザ入力
をコンピュータ・システムに取り込み、そのユーザ入力を中央処理装置(CPU
)113に伝えるためのものである。その他の適した入力デバイスをマウス11
1とキーボード110の他に、またはその代わりに使用できる。双方向システム
・バス118に結合されたI/O(入出力)ユニット119はプリンタ、A/V
(オーディオ/ビデオ)I/OなどのI/O要素を表す。
【0015】 コンピュータ100は、キーボード110、マウス111およびCPU113
と共にすべて双方向システム・バス118に結合されたビデオ・メモリ114、
メイン・メモリ115および大容量記憶112を含む。大容量記憶112は磁気
、光または光磁気記憶システムなどの固定および取外し可能メディアまたはその
他の利用可能な大容量記憶技術を含むことがある。バス118は、例えば、ビデ
オ・メモリ114またはメイン・メモリ115を対象とする32のアドレス行を
含むことがある。システム・バス118も、例えば、CPU113、メイン・メ
モリ115、ビデオ・メモリ114および大容量記憶112などの構成要素間で
データを転送する32ビット・データ・バスを含む。あるいは、個別のデータお
よびアドレス行の代わりに多重データ/アドレス行を使用することができる。
【0016】 本発明の一実施形態では、CPU113は、680×0プロセッサなどのMo
torola製のマイクロプロセッサまたは80×86などのIntel製のマ
イクロプロセッサまたはPentiumプロセッサ、またはSun Micro
systems製のSPARCマイクロプロセッサである。ただし、その他の任
意の適したマイクロプロセッサまたはマイクロコンピュータも使用できる。メイ
ン・メモリ115はダイナミック・ランダム・アクセス・メモリ(DRAM)か
らなる。ビデオ・メモリ114はデュアル・ポート・ビデオ・ランダム・アクセ
ス・メモリである。ビデオ・メモリ114の1つのポートはビデオ増幅器116
に結合されている。ビデオ増幅器116は陰極管(CRT)ラスタ・モニタ11
7を駆動するために使用される。ビデオ増幅器116は当業でよく知られており
、任意の適した装置によって実施できる。この回路はビデオ・メモリ114に記
憶されたピクセル・データをモニタ117が使用するのに適したラスタ信号に変
換する。モニタ117はグラフィック画像を表示するのに適したタイプのモニタ
である。
【0017】 また、コンピュータ100はバス118に結合された通信インタフェース12
0を含む。通信インタフェース120はネットワーク・リンク121を介してロ
ーカル・ネットワーク122に双方向のデータ通信接続を提供する。例えば、通
信インタフェース120が総合サービス・ディジタル網(ISDN)カードまた
はモデムの場合、通信インタフェース120は、ネットワーク・リンク121の
一部を含む対応するタイプの電話回線にデータ通信接続を提供する。通信インタ
フェース120がローカル・エリア・ネットワーク(LAN)カードの場合、通
信インタフェース120はネットワーク・リンク121を介して互換LANにデ
ータ通信接続を提供する。無線リンクも可能である。そのような任意の実施形態
で、通信インタフェース120は、様々なタイプの情報を表すディジタル・デー
タ・ストリームを搬送する電気、電磁気または光信号を送受信する。
【0018】 ネットワーク・リンク121は通常、1つまたは複数のネットワークを介して
他のデータ・デバイスにデータ通信を行う。例えば、ネットワーク・リンク12
1はローカル・ネットワーク122を介してホスト・コンピュータ123または
インターネット・サービス・プロバイダ(ISP)124によって運用されるデ
ータ・デバイスに接続する。次いでISP124は、現在では一般に「インター
ネット」125と呼ばれる全世界的なパケット・データ通信ネットワークを介し
てデータ通信サービスを提供する。ローカル・ネットワーク122およびインタ
ーネット125は両方共、ディジタル・データ・ストリームを搬送する電気、電
磁気または光信号を使用する。様々なネットワークを通過する信号と、コンピュ
ータ100との間でディジタル・データを搬送するネットワーク・リンク121
上と通信インタフェース120を通過する信号は、情報を移送する搬送波の形式
の例である。
【0019】 コンピュータ100は、ネットワーク、ネットワーク・リンク121、および
通信インタフェース120を介して、プログラム・コードを含むメッセージを送
信してデータを受信することができる。インターネットの例では、サーバ126
はインターネット125、ISP124、ローカル・ネットワーク122および
通信インタフェース120を介してアプリケーション・プログラムのための要求
されたコードを送信できる。本発明によれば、そのような1つのダウンロードさ
れたアプリケーションは、本明細書に記載されたハードウェア・プラットフォー
ムとソフトウェア・プラットフォーム間の互換性を識別する方法および装置であ
る。
【0020】 受信されたコードは受信された時にCPU113によって実行し、かつ/また
は大容量記憶112内に記憶し、または後で実行されるためにその他の不揮発性
記憶に記憶することができる。このようにして、コンピュータ100は搬送波の
形式でアプリケーション・コードを得ることができる。
【0021】 上述のコンピュータ・システムは例示のためにすぎない。本発明の一実施形態
は任意のタイプのコンピュータ・システムまたはプログラミングまたは処理環境
で実施できる。
【0022】 オペレーティング・プラットフォーム オペレーティング・プラットフォームは、アプリケーションが実行される環境
を提供する。オペレーティング・プラットフォームはセル式電話機、パーソナル
・ディジタル・アシスタント、スマート・カード、またはその他の任意の環境で
ある。図2は、本発明の一実施形態によるアプリケーションとそのオペレーティ
ング・プラットフォームとの対話を示す。
【0023】 アプリケーション202A〜204Cは一定の機能を実行するように設計され
たプログラム・コードからなる。アプリケーション202A〜204Cのプログ
ラム・コードはJavaTM、Objective C、C++、アセンブリなど
のプログラミング言語またはその他の言語で記述できる。アプリケーション20
2A〜204Cは、アプリケーション環境204、ハードウェア206およびア
プリケーション環境API208からなるオペレーティング・プラットフォーム
200上で実行される。ハードウェア206は中央処理装置とメモリ(例えば、
ランダム・アクセス・メモリまたは読出し専用メモリ)などの記憶構成要素を含
む。
【0024】 ハードウェア206は例えばコンピュータ100でよい。あるいは、ハードウ
ェア206は、ホスト・デバイス(例えば、スマート・カード、セル式電話機、
ページャなど)に組み込まれた中央処理装置とメモリ(例えば、ランダム・アク
セス・メモリまたは読出し専用メモリを含むプロセッサ)であってもよい。組込
プロセッサはホスト装置内で機能を提供するようにプログラミングできる。例え
ば、ハードウェア206は、電話番号を記憶して検索するために組込プロセッサ
内で実行されるプログラム・コードを用いて構成された移動電話機内に搭載され
た組込プロセッサでもよい。ほとんどのビデオ・カセット・レコーダ(VCR)
は、プログラム・コードを実行してユーザに様々な演算(例えば、時間と日付の
設定、テレビジョン番組の予約録音など)を提供する組込プロセッサを含む。
【0025】 ハードウェア206は、ハードウェア命令セットと呼ばれる汎用命令または演
算のセットを実行するように構成されている。ハードウェア命令セット中に含ま
れる演算には、演算演算、論理演算、テスト演算、ブランチ演算、移動演算が含
まれる。例えば、ハードウェア206の中央処理装置に移動演算が与えられると
、第1のメモリ・アドレスに記憶されているデータは第2のメモリ・アドレスに
移動される。
【0026】 アプリケーション環境204はアプリケーション202A〜202Cとハード
ウェア206との間のインタフェースを提供する。アプリケーション202A〜
202Cはアプリケーション環境アプリケーション・プログラミング・インタフ
ェース(API)208を介してアプリケーション環境204にアクセスする。
アプリケーション環境API208は、アプリケーション環境204によって提
供されるメソッド、機能、クラス、またはライブラリを含むオペレーティング・
プラットフォーム200で利用可能なプログラミング資源を識別する。
【0027】 アプリケーション環境204はハードウェア206の資源と対話し、管理する
オペレーティング・システムを有する。例えば、オペレーティング・システムは
デバイス・ハンドラ(例えば、入出力または入出力制御装置)、メモリ管理プロ
グラム、言語プロセッサ(例えばコンパイラまたはインタープリタ)、プロセス
・スケジューラ、デバッガ、ファイル管理プログラム、またはその他の構成要素
を含むことができる。
【0028】 オペレーティング・システムのメモリおよびファイル管理プログラムをアプリ
ケーション202A〜202Cが用いて一時および永続記憶にアクセスすること
ができる。デバイス・ハンドラはプリンタなどの周辺装置間のインタフェースと
しての働きをする。さらに、デバイス・ハンドラは永続記憶とハードウェアのC
PUとの間のインタフェースをとるために使用できる。アプリケーション202
A〜202Cは通常、ハードウェア206によって実行される前に言語プロセッ
サによってハードウェア命令セットに翻訳されるソフトウェア命令セットを用い
て記述されている。言語プロセッサの出力は実行可能コードと呼ばれる。
【0029】 アプリケーション環境204は、特定のタスクを実行するためにアプリケーシ
ョン202A〜202Cによって使用される機能を有するライブラリをさらに提
供する。アプリケーション202A〜202Cはライブラリ・ルーチンへの参照
またはリンクを含む。例えば、I/OライブラリはアプリケーションがI/Oデ
バイスと通信することを可能にする機能(例えば、キーボード入力を取り出す、
あるいはディスプレイまたはプリンタに出力するルーチン)を含む。
【0030】 アプリケーション202A〜202Cが正常に機能するには、アプリケーショ
ン202A〜202Cが使用しようとするライブラリ・ルーチンがアプリケーシ
ョン環境204内で使用可能でなければならない。例えば、アプリケーション2
02Bがアプリケーション環境204内で使用可能でないI/Oライブラリに含
まれるルーチンを必要とする場合、プログラムはルーチンの機能を含まない。ア
プリケーション202Bは参照されるルーチンなしでは正常に実行されない。し
たがって、アプリケーション環境204が必要なライブラリを含まない場合、ア
プリケーション202A〜202Cはオペレーティング・プラットフォーム20
0内で実行できない。
【0031】 さらに、アプリケーション環境204がアプリケーション202A〜202C
のソフトウェア命令をハードウェア206のハードウェア命令セットに翻訳でき
る言語プロセッサを有していない場合、アプリケーション202A〜202Cは
オペレーティング・プラットフォーム200内で実行できない。
【0032】 本発明の一実施形態では、アプリケーション環境204が専用の命令セットを
有する仮想マシンを含む。仮想マシンの一例は、カリフォルニア州Mounta
in ViewのSun Microsystems,Inc.Busines
s傘下のJavaSoft製のJava仮想マシンである。Java仮想マシン
では、VM命令セット内の命令はバイトコードと呼ばれる。各バイトコードは命
令名(操作コードまたはopcodeと呼ばれる)と、パラメータのセットまた
はオペランドからなる。変数のロード、分岐、算術演算、スタック操作などの演
算を実行する約220のバイトコードがある。
【0033】 アプリケーション202A〜202Cに含まれるソフトウェア命令を仮想マシ
ンの命令セット(すなわち、VM命令セット)の命令に翻訳するために言語プロ
セッサが使用される。ソフトウェア命令をJavaバイトコード命令に翻訳する
ために、例えば、Javaコンパイラが使用される。
【0034】 仮想マシンは、アプリケーション202A〜202Cの翻訳された(またはコ
ンパイルされた)バージョン内のVM命令をハードウェア命令セット内の命令に
変換する翻訳プログラムを含む。例えば、JavaインタープリタまたはJav
a Just−in−Time(JIT)コンパイラを用いてVM命令をハード
ウェア命令に翻訳することができる。Javaインタープリタはアプリケーショ
ンが実行されている間に翻訳を実行する。アプリケーションが実行される際に、
Javaインタープリタはテーブルをルックアップして、現在のVM命令を実行
するにはハードウェア・セット内のどの単数または複数の命令を実行する必要が
あるかを決定する。Java JITコンパイラはアプリケーションの実行が開
始する前にアプリケーションのVM命令をハードウェア命令に翻訳する。
【0035】 オブジェクト指向プログラミング言語 本発明の1つまたは複数の実施形態では、アプリケーション環境204のプロ
グラム・ライブラリなどのプログラム・コードとアプリケーション202A〜2
02CはJavaなどのオブジェクト指向プログラミング言語で記述される。
【0036】 Javaはオブジェクト指向プログラミング言語である。オブジェクト指向プ
ログラミングは一定の基本ビルディング・ブロックを組み合わせ、ビルディング
・ブロック間の関係を作成することでコンピュータ・プログラムを作成する方法
である。オブジェクト指向プログラミング・システム内のビルディング・ブロッ
クは「オブジェクト」と呼ばれる。オブジェクトはデータ構造体(インスタンス
変数)とそのデータを使用またはそのデータに影響を与えられる演算(メソッド
)をグループ化するプログラミング単位である。したがって、オブジェクトはデ
ータと、そのデータ上で実行できる1つまたは複数の演算または手順からなる。
データと演算の統合ビルディング・ブロックへの結合は「カプセル化」と呼ばれ
る。
【0037】 オブジェクト指向プログラミング言語は圧倒的に「クラス」方式に基づく。ク
ラスは、通常、インスタンス変数とメソッドをともに含むオブジェクトを定義す
る。オブジェクト・クラスはオブジェクトの特定のインスタンスを作成するため
に使用される。オブジェクト・クラスのインスタンスはそのクラスについて定義
された変数とメソッドを含む。1つのオブジェクト・クラスから同じクラスの多
数のインスタンスが作成できる。オブジェクト・クラスから作成される各インス
タンスは同じタイプまたはクラスであると言われる。
【0038】 クラスの階層は、オブジェクト・クラス定義が1つまたは複数のサブクラスを
有するように定義できる。サブクラスはその親の(および祖父母などの)定義を
継承する。階層内の各サブクラスは、その親クラスによって指定された振る舞い
に対して追加または変更ができる。
【0039】 クラス階層に加えて、一部のオブジェクト指向プログラミング言語(例えばJ
ava)はオブジェクト・クラスをグループ化し、グループ間の階層を定義する
能力を提供する。例えば、Javaでは、パッケージはクラスの集合である。パ
ッケージはネストして階層を形成できる。
【0040】 互換性評価の概要 ハードウェア206またはアプリケーション環境204の変形形態の結果とし
て、オペレーティング・プラットフォーム200内で実行するように意図された
アプリケーション(例えば、アプリケーション202A〜202C)との非互換
性を生む可能性がある新しいオペレーティング・プラットフォーム200が生ま
れることがある。例えば、ある中央処理装置によってサポートされる命令セット
が別の中央処理装置によってサポートされる命令セットとは異なることがある。
アプリケーション環境204に含まれるあるプログラム・ライブラリ内でサポー
トされる機能が、別のプログラム・ライブラリ内でサポートされないことがある
。いずれの場合も、アプリケーション(例えば、アプリケーション202A〜2
02C)によって必要とされる機能はオペレーティング・プラットフォーム20
0の変更後は利用できないことがある。
【0041】 本発明の実施形態は、アプリケーション(例えば、アプリケーション202A
〜202C)がオペレーティング・プラットフォーム200と互換性があるか否
かを評価するために使用できる。オペレーティング・プラットフォーム200の
プログラミング資源を記述する仕様は定義用言語で記述される。仕様に合わせて
アプリケーションを解決するために互換性エンジンが実行される。互換性エンジ
ンの出力は、アプリケーションがオペレーティング・プラットフォーム200に
適合しているか否か、またアプリケーションがどのように仕様に違反しているか
を識別する。
【0042】 オペレーティング・プラットフォーム200のプログラミング資源(例えば、
パッケージ、クラス、およびメソッド名)およびプログラミング資源に関する情
報(例えば、所有権階層、コンプライアンス状態(compliance status)、および インライン注釈)を記述する少なくとも1つの仕様が生成される。複数の仕様を
使ってオペレーティング・プラットフォーム200のプログラミング資源を記述
する場合、仕様は組合せ仕様に組み合わされる。各仕様は、以下に記述の規則に
基づいて他の仕様の内部表現と組み合わされる内部表現に変換される。仕様の内
部表現は、オペレーティング・プラットフォーム200のプログラミング資源の
内部表現(すなわち、データ記述)である仕様参照からなる。各仕様が処理され
る順序は、組合せプロセスでの優先順位を記述するので重要である。
【0043】 図3は本発明の一実施形態による互換性プロセスの概要を示す。ステップ30
2で、オペレーティング・プラットフォーム200を定義する仕様が読み出され
る。ステップ304で、仕様は内部表現に翻訳される。内部表現は、仕様のファ
イル・エントリに関連する属性情報を記憶する仕様参照からなる。さらに、内部
表現は仕様ファイル内に表記された階層情報を保持する。以下、内部表現につい
て詳述する。ステップ306で、多数の仕様があるか否かが判定される。多数の
仕様がない場合、処理はステップ312に続く。
【0044】 多数の仕様があると、処理はステップ308に続き、仕様の順序を決定する。
ステップ310で、仕様の内部表現が組み合わされる。仕様の組合せについて以
下に詳述する。処理はステップ312に続き、ステップ312でアプリケーショ
ンのプログラム・コード内に存在するアプリケーションの依存性が識別される。
例えば、オブジェクト指向プログラム・コードでは、第1のクラスは第2のクラ
ス・タイプと定義されるパラメータまたは戻り値を有するメソッドを含むことが
ある。参照されるクラス・タイプは第1のクラスの依存性であると定義される。
【0045】 Javaでは、アプリケーションはクラス定義を含む少なくとも1つのクラス
・ファイルを備える。クラス・ファイルはソフトウェア命令をVM命令に翻訳す
るJavaコンパイラの出力である。したがって、クラス・ファイルはバイトコ
ードと、戻り値を含むそれに関連するパラメータのセットからなる。ステップ3
12で、アプリケーションのJavaクラス・ファイルは解析され、バイトコー
ドは解釈されて依存性が再構築される。
【0046】 ステップ314で、ステップ312で識別された依存性はアプリケーションの
プログラミング資源のセットと比較され、必要に応じて、仕様内に指定されたプ
ログラミング資源と比較される。ステップ316で、仕様への参照のコンプライ
アンス状態が報告され、全体の互換性状態が送信される。このプロセスはステッ
プ318で終了する。
【0047】 仕様 本発明の一実施形態では、仕様はアプリケーション環境API208(例えば
、Javaプラットフォーム用のアプリケーション環境API)内で定義された
プログラミング資源を識別する。例えば、Javaベースのアプリケーション環
境API208はパッケージ、クラス、およびメソッドAPIの定義を含む。仕
様は、アプリケーション環境API208のプログラミング資源を識別し、プロ
グラミング資源に関する情報を提供する指定子を含む。仕様は、標準汎用印刷指
定言語(SGML)から派生した文法によってテキストで表される。
【0048】 文法は指定子を定義し、指定子の構文はタグによって実施される。仕様文法は
パッケージ、クラスおよびメソッドを記述する指定子を定義する。仕様ファイル
の構文は指定子を実施するタグによって記述される。文法はパッケージとクラス
が範囲決定されるのとほぼ同様の方法でタグを範囲決定する。さらに、文法は指
定子のインスタンスを生成する規則のセットを識別する。付記Aは文法を使用し
た仕様ファイルの例を示す。
【0049】 仕様ファイルは例えばテキスト・エディタを用いて生成できる。さらに、SG
MLファイルを記述する際の支援を提供する(例えば、SGMLタグ、構文およ
びインデントを生成する際のショートカットを提供する)SGMLエディタがあ
る。さらに、SGML文書の解析に使用して、SGML文書に含まれるSGML
タグを識別できる現在利用可能ないくつかの解析ツールがある。
【0050】 指定子はプログラムがアクセスして使用できるアプリケーション環境204の
メソッド、クラス、パッケージなどを識別する。以下に、仕様ファイル・エント
リを定義し生成するのに使用する文法を示す。
【表1】
【0051】 [SPECIFIER]とそれに続くアスタリスク(「*」)は、ゼロ以上の
指定子を仕様ファイルに含めることができることを意味する。文法で示したよう
に、SPECIFIERはパッケージ指定子、クラス指定子、またはメソッド指
定子として定義される。したがって、仕様は、SPECFILE指定子内にゼロ
以上のパッケージ・タグがある、SPECFILE開始および終了タグを含む。
【0052】 SPECFILE指定子はそれぞれ<specfile>および</spec
file>で示される開始および終了SPECFILEタグを含む。SPECF
ILEタグは仕様ファイルの区切り文字としての働きをする。SPECFILE
タグは名前属性値と、任意選択のバージョン値とhref属性値とを含むことが
できる。名前属性に割り当てられた値は仕様の名前を提供する。バージョンは仕
様のバージョンを識別する。href属性は、その仕様に関する詳細情報を有す
るロケーション(例えば、ウェブ文書)を指すユニバーサル・リソース・ロケー
タ(URL)を識別する。
【0053】 パッケージ指定子(すなわち、PACKAGESPECIFIER)はパッケ
ージに関連する情報を識別する。パッケージ指定子は、<package>開始
タグと</package>終了タグを使って仕様ファイル内で識別される。パ
ッケージ指定子は名前と任意選択のhref属性を含む。ゼロ以上のパッケージ
およびクラス指定子はパッケージ指定子内にネストできる。
【0054】 クラス指定子(すなわち、CLASSSPECIFIER)は、<class
>および</class>開始および終了(それぞれ)タグによって区切られる
。クラス指定子は名前と任意選択のhrefを含む。クラス指定子はゼロ以上の
ネストされたメソッドを含むことができる。
【0055】 メソッド指定子(すなわち、METHODSPECIFIER)は名前と署名
属性を含む。署名属性はメソッドの名前、引数リストおよび戻りタイプを識別す
る。署名情報は、署名内に記憶された異なる情報フィールドを識別する区切り文
字を有するテキスト文字列内に記憶される。署名のフォーマットの例は、T.L
indholmおよびF.Yellin著「The Java Virtual
Machine Specification」(Addison−Wesl
ey)と題された書物に示されている。
【0056】 仕様、パッケージ、クラスおよびメソッド指定子は、パッケージ、クラスまた
はメソッド仕様に注釈を付けるフリーフォーマットのテキスト・フィールドであ
る任意選択のCOMMENTフィールドを含むことができる。COMMENTは
エントリに関する追加情報(例えば、コンプライアンス状態またはエントリそれ
自体に関する追加情報)を提供するために使用できる。
【0057】 コンプライアンス状態(compliance status) 仕様ファイルの文法は、仕様内で定義されたパッケージ、クラスまたはメソッ
ドのコンプライアンス状態を識別する属性を含む。以下に詳述するように、互換
性評価中は状態属性が使用される。コンプライアンス状態属性は「必要」(すな
わち、「supported」)、「オプショナル」、「修正済み」または「未
サポート」のstatusValueを有することができる。
【0058】 状態属性が「必要」の値を有する場合、それに関連するエントリをアプリケー
ション環境API208内に含める必要があるということを示す。「必要」状態
がクラスまたはメソッドに割り当てられた場合、クラスまたはメソッドはアプリ
ケーション環境API208内に含まれ、アプリケーションから呼び出すことが
できる。パッケージ、クラスまたはメソッドは「必要」コンプライアンス状態を
有することができる。
【0059】 「オプショナル」属性は、アプリケーション環境API208にエントリが含
まれていてもよいし、そうでなくてもよいということを示す。オペレーティング
・プラットフォーム200を定義する仕様のいずれもエントリの「オプショナル
」状態を変更しない場合、エントリがアプリケーション環境API208の一部
であるか否かは明らかでない。エントリ(例えば、パッケージ、クラスまたはメ
ソッド)はアプリケーション環境API208がエントリを含むように変更され
るまで使用すべきではない。パッケージ、クラスまたはメソッドには「オプショ
ナル」コンプライアンス状態が使用できる。
【0060】 エントリが「修正済み」のコンプライアンス状態を有する場合、エントリは変
更されている(仕様を得たプラットフォーム実施のスーパーセットに関して)。
例えば、「修正済み」コンプライアンス状態を有するクラスまたはメソッドは、
そのクラスまたはメソッドの定義が変更されていることを示す。例えば、アプリ
ケーション環境API208は「ウィンドウ」クラス(すなわち、グラフィカル
・ユーザ・インタフェースすなわちGUI内にウインドウを生成するためのクラ
ス)が「修正済み」(変更)されていることを示す。これによって、アプリケー
ションのプログラマがこの変更がアプリケーションの実行に影響するかどうか判
定できるように、アプリケーション・プログラマに対してこの変更を警告する。
「修正済み」コンプライアンス状態は通常、クラスおよびメソッド・エントリに
使用される。
【0061】 「未サポート」コンプライアンス状態は、アプリケーションによって使用でき
るエントリが実施されているか否かを識別する。「未サポート」コンプライアン
ス状態は、パッケージ、クラスまたはメソッドに使用できる。クラスまたはメソ
ッドが「未サポート」コンプライアンス状態を有する場合、アプリケーションは
クラスまたはメソッドを利用できない。パッケージが「未サポート」コンプライ
アンス状態を有する場合、パッケージの階層内のエントリも「未サポート」であ
ると考えられる。
【0062】 仕様ファイルの解析 したがって、仕様ファイルは仕様文法を用いて表現されたエントリを含むテキ
スト・ファイルである。パーサは仕様ファイルに問い合わせするために使用され
る。仕様ファイルのテキストはパーサに読み込まれる。文法タグがパーサによっ
て認識されると、タグのタイプ(例えば、仕様、パッケージ、クラス、メソッド
またはコメント)が決定され、タグに関連する情報がファイルから抽出される。
例えば、仕様、パッケージ、クラスおよびメソッド・タグについて名前、URL
、およびコメントが抽出される。さらに、パッケージ、クラスおよびメソッド・
タグについてコンプライアンス状態が抽出される。メソッド・タグについては署
名も抽出される。
【0063】 以前に解析されたパッケージおよびクラス・タグに関係する着信パッケージお
よびクラス・タグの所有権の範囲を追跡するパッケージ・スタックが保持される
。クラスおよびパッケージ参照は、一般に、クラスまたはパッケージの完全に有
資格の名前のハッシュに従ってハッシュテーブル内の他のパッケージ参照内にキ
ャッシュされる。ハッシュテーブルを用いて重複タグが検出でき、名前の衝突が
解決できる。パッケージのハッシュテーブルはそれが直接所有する各パッケージ
と、間接的に所有するサブパッケージ(例えば、親パッケージの子パッケージに
よって所有されるパッケージ)を含む。
【0064】 図4は、本発明の一実施形態による仕様から解析された情報を使って生成され
た構造体の例を示す。情報はオブジェクト(すなわち、オブジェクト指向プログ
ラミング単位)として表される。図4のオブジェクトは親の特性が子クラスによ
って継承される階層を構成する。例えば、ルート・クラスRef402は仕様文
法の名前、コメント、およびURL属性に対応する名前、コメント、およびUR
L特性を含む。これらの特性は他のクラスによって継承される。
【0065】 図4のオブジェクトは仕様ファイルの仕様ツリー表現を作成するためにインス
タンス化されている。仕様ツリーは、仕様ファイルの内部表現を形成する仕様参
照の例であるSpecRef406、PackageRef408、Class
Ref410およびMethodRef412のインスタンスを含む。これらの
インスタンスの各々はその親およびそれぞれの子(すなわち、インスタンスによ
って所有されるオブジェクト・インスタンス)への参照を含む。仕様ツリーを横
断する代わりに、インスタンスの一部に含まれるハッシュテーブルを用いて、仕
様ツリー内の特定のノードを見つけることができる。
【0066】 SpecRef406は、解析中にSPECFILEタグが識別される時に作
成されるオブジェクト・クラスである。SpecRef406は、仕様ファイル
内の各パッケージおよびクラス・エントリのハッシュされたバージョンを含む。
またSpecRef406は、PackageRef408(後述)のインスタ
ンスである「デフォルトのパッケージ」へのポインタ参照を含み、仕様ファイル
内で定義されたすべてのパッケージが得られるパッケージ階層のトップレベルの
ルートとしての働きをする。
【0067】 ConformRefクラス406はコンプライアンス状態仕様属性に対応す
るコンプライアンス状態特性を含む。PackageRef408、Class
Ref410およびMethodRef412はConformRef406の
子クラスで、Ref402のコンプライアンス状態特性と、名前、コメントおよ
びURL特性を継承する。
【0068】 PackageRef408のインスタンスは仕様ファイル内のパッケージ・
エントリごとに作成される。パッケージ・エントリの親パッケージとパッケージ
・エントリを含む仕様へのポインタ参照が含まれる。PackageRefはパ
ッケージ・エントリの階層内のサブパッケージおよびクラスのハッシュテーブル
を含む。
【0069】 ClassRef410のインスタンスはクラス・タグが解析される時に作成
される。ClassRef410のインスタンスはClassRef410のイ
ンスタンスによって所有されるメソッドの各々へのポインタ参照を含むハッシュ
テーブルを含む。ClassRef410のインスタンスは、インスタンスの親
のPackageRef408のインスタンスおよびSpecRef406のイ
ンスタンスへのポインタ参照を含む。
【0070】 MethodRef412クラスは、メソッド・タグが解析される時にインス
タンス化される。MethodRef412のインスタンスは、メソッドおよび
仕様ファイルを含むクラスへのポインタ参照を含む。また、MethodRef
412のインスタンスは、メソッドの署名を含む。
【0071】 仕様ファイル解析の産物は、ルート・ノードがSpecRef406のインス
タンスであるオブジェクトのツリー(例えば、図4に示すオブジェクト・クラス
のインスタンス)である。図5は本発明の一実施形態によるサンプル仕様の解析
から生成されたオブジェクト・ツリーの一例を示す。
【0072】 仕様500は、上記の仕様文法を使用するアプリケーション環境API(例え
ば、アプリケーション環境API208)の定義を記述する行502〜524を
含む。行502〜524が解析される時に、図4に示すオブジェクト・クラスの
インスタンスが作成され、仕様ツリー540が作成される。行502が解析され
る時に、SpecRef406のインスタンスが作成される(すなわち、仕様ツ
リー540のノード542が作成される)。行524は終了SPECFILEタ
グを含む。
【0073】 行504が解析される時にPackageRef408のインスタンスが作成
される(すなわち、仕様ツリー540のノード544が作成される)。行504
は第1のPACKAGESPECIFIERを含むため、ノード540(すなわ
ち、PackageRef408のデフォルトのインスタンス)が作成される。
ノード544はノード540の子ノードである。行506は「PackageA
」の<package>と</package>PACKAGESPECIFI
ERタグの間に含まれる。したがって、行506で識別されるパッケージは「P
ackageA」のサブパッケージである。したがって、行506が解析される
時に作成されるPackageRef408のインスタンスは、仕様ツリー54
0のノード544の下に追加される(すなわち、ノード546)。ノード544
はノード546へのポインタ参照を含むパッケージ・ハッシュテーブルを含む。
【0074】 仕様500の行510は「PackageA」の終了タグを含む。したがって
、行512は「PackageA」の子ではないパッケージを定義する。行51
2の解析の結果、「PackageB」に関してノード552が作成される。ノ
ード552はデフォルトのPackageRef408のインスタンス(すなわ
ち、ノード540)の子孫である。行514は「PackageB」のサブパッ
ケージ(すなわち、「PackageSubB」)を定義する。ノード554の
子であるノード556として追加される「PackageSubB」の子である
クラスが行516で定義される。
【0075】 ノード540、544、546、552、554、556はその親ノードへの
ポインタ参照を含む。さらに、ノード540、544、546、552、554
、556は仕様へのポインタ参照を含む。
【0076】 組合せ仕様 前述のように、複数の仕様を使ってアプリケーション環境API208を定義
することが可能である。例えば、アプリケーション環境API208の第1の仕
様は一般的な使用向けである。また、オペレーティング・プラットフォーム20
0の特定の使用を対象とするアプリケーション環境API208の第2の仕様を
生成することができる。
【0077】 パーサにとって各仕様が識別される順序は、仕様ファイル間で衝突(すなわち
、2つの仕様がアプリケーション環境API208の同じプログラミング資源の
異なる定義を含む)が発生した時にどの仕様が優先するかを決定する。多数の仕
様が使われる場合、後で解析される仕様の内容が先に解析される仕様の内容に優
先する。
【0078】 例えば、第1の仕様は組込システムで通常使用されるアプリケーション環境A
PI208を定義できる。組込システムのアプリケーションによって通常使用さ
れるクラス・ライブラリはアプリケーション環境API208(例えば、Jav
a仮想マシン、標準Java、およびJava I/Oクラス・ライブラリ)に
含まれる。ただし、組込システムの製造業者はそのオペレーティング・プラット
フォーム200内で使用されるアプリケーション環境API208を変更したい
と思うかもしれない。この場合、製造業者は第1の仕様の変更を識別する第2の
仕様を記述できる。一般に、2つの仕様が組み合わされる時に、第2の仕様に含
まれる共通部分と第1の仕様の変更の両方の独自の部分を反映する仕様の内部表
現が作成される。
【0079】 図4を参照すると、SpecRef406、PackageRef408、C
lassRef410およびMethodRef412が自己複製の方法を有す
る。複製は現在の仕様参照のコピー(すなわち、プログラミング資源の内部表現
)と、その仕様参照によって「所有」されているすべての仕様参照を作成するプ
ロセスである。さらに、これらの仕様参照クラスの各々は、ある仕様参照インス
タンスの内部フィールドを別の仕様参照インスタンスで上書きするために使用で
きる置換え方法を有する。
【0080】 アプリケーション環境API208を定義するために使う仕様の数に関わらず
、単一のパーサを使って仕様ファイルが解析される。パーサは第1の仕様を読み
出し、この仕様の仕様ツリーを作成する。組合せツリーと呼ばれる第1の仕様ツ
リーの複製が作成される。以下に記載するように、パーサは任意の追加の仕様を
読み出し、追加の仕様に基づいて組合せツリーを変更する。すべての仕様が解析
され、その仕様ツリーが組合せツリーに組み合わされると、組合せツリーはアプ
リケーションが互換性を判定するために比較されるアプリケーション環境API
208の定義として使用される。
【0081】 図6は本発明の一実施形態による解析プロセスの流れ図である。ステップ60
2で、パーサは第1の仕様を読み出し、この仕様に基づいて仕様ツリーを作成す
る。ステップ604で、第1の仕様のツリーを複製することで組合せツリーが作
成される。組合せツリーはすべての後続の仕様が組み合わされる仕様ツリーとし
て使用される。
【0082】 ステップ606で、すべての仕様が処理されたか否かの判定がなされる。そう
である場合、処理はステップ608で終了する。そうでない場合、処理はステッ
プ610に続き、次の仕様が解析され、仕様の内部表現が作成される。
【0083】 パーサは組合せツリー内の各パッケージ、クラスおよびメソッド仕様参照を処
理して、現在の仕様のツリーが組合せツリーの仕様参照を変更する同等の仕様参
照を含んでいるか否かを判定する。したがって、ステップ612で、まだ処理さ
れていない仕様参照が組合せツリー内にあるか否かが判定される。現在の仕様に
関してすべての組合せツリーの仕様参照が検査されている場合、処理はステップ
616に続き、現在の仕様の独自の仕様参照(すなわち、組合せツリーにとって
新しい仕様参照)が組合せツリーに追加される。処理はステップ606に続き、
残りのあらゆる仕様が処理される。
【0084】 ステップ612で、組合せツリー仕様参照が残っていると判定された場合、処
理はステップ613に続き、次の組合せツリー仕様参照が取得される。ステップ
614で、現在の仕様のツリーが同等な仕様参照を有するか否かが判定される。
そうでない場合、処理はステップ612に続き、残りのあらゆる組合せツリー仕
様参照が処理される。組合せツリーと現在の仕様に同等の仕様参照がある場合、
処理はステップ618に続き、組合せツリーの仕様参照は後続のツリーの仕様参
照によって置き換えられる。置換えは、組合せツリーの仕様参照内の同じ属性に
後続のツリーの仕様参照の状態、URL、およびコメントをコピーするプロセス
である。ステップ620で、組合せツリー仕様参照の「スペック」属性も置き換
えられ、組合せツリー内の所与の仕様参照についてどの仕様に責任があるかが識
別される。
【0085】 仕様参照の状態は仕様参照が組合せツリー仕様参照を置き換える時に発生する
事態に影響する。組合せツリー内のすべての仕様参照は「オーバライド」と考え
られる。すなわち、元の仕様で「必要」の状態を有する場合でさえ、任意の仕様
参照は後続の仕様参照によってオーバライドすることができる。図7A〜図7B
は本発明の一実施形態を使用するいくつかの併合例を示す。
【0086】 図7Aで、2つの入力仕様(仕様AおよびBに対応)と組合せ仕様(仕様Cに
対応)について、仕様参照を含む仕様ツリーが示されている。この例では、仕様
Aは仕様Bより先に解析される。仕様Aのツリーは複製され、仕様Cのツリー(
すなわち、組合せツリー)が作成される。仕様Aのツリーはパッケージ仕様参照
702A、704A、706Aおよび708Aを含む。仕様Bのツリーはパッケ
ージ仕様参照702A、704A、708Aおよび710Aを含む。各仕様参照
の状態が仕様参照と共に提供される。
【0087】 仕様Aの仕様参照702Aは仕様Bの仕様参照702Bに対応する。ただし、
それらの定義は同等なため、仕様参照702Bは仕様参照702Aを置き換えな
い。同様に、仕様参照704Bは仕様参照704Aを置き換えない。さらに、仕
様Bには仕様Aの仕様参照706Aに対応する仕様参照がないので、仕様参照7
06Aは組合せツリー内(すなわち、仕様C)で変更されないままである。
【0088】 ただし、仕様参照708Aに対応するパッケージ仕様参照708Bはコンプラ
イアンス状態の変化を反映する。図6のステップ618および620が実行され
て仕様参照708Bの状態、URL、およびコメント属性が組合せツリー内の仕
様参照708Cにコピーされる。さらに、仕様参照708Cの「スペック」属性
は変更され、仕様Bをポイントする。
【0089】 図7Aでは、仕様参照の状態が第1の値(すなわち、unpupported
)から第2の値(必要)に変化している。さらに、後続処理される仕様ツリー内
に対応する仕様参照を有しない先に定義される仕様参照は、組合せの影響を受け
ないことがわかる。これは、後続処理される仕様ツリーに含まれる同等の状態値
を有する対応する仕様参照を備えた先に定義される仕様参照についてもあてはま
る。
【0090】 図7Bは図7Aの仕様AおよびBの解析の順序を逆にしている。すなわち、仕
様Bは仕様Aより先に解析される。図7Aでは、クラス仕様参照710Bが仕様
Bから仕様C内に組み合わされている。ただし、図7Bでは、クラス仕様参照7
10Cは組合せツリー内に存在しない。
【0091】 仕様Aが処理される前に、仕様Cはクラス仕様参照710Bと同等のクラス仕
様参照を含んでいた。その後で、仕様Aが処理される時に、組合せツリーのクラ
ス参照が解消される。パッケージ仕様参照708Aの状態は、パッケージ仕様参
照708Cの状態を「必要」(パッケージ仕様参照708Bの状態)から「未サ
ポート」(パッケージ仕様参照708Aの状態)に変更した。組合せツリー仕様
参照の状態が後続の仕様参照の結果として「必要」から「未サポート」に変化し
た時に、すべての所有されている仕様参照は組合せツリーから削除される。逆に
(パッケージ仕様参照706Aおよび706Cによって示されるように)、後続
処理される仕様用に導入されるパッケージ、クラス、またはメソッド仕様参照は
組合せツリーに追加される。
【0092】 図7Cを参照すると、仕様Aは「オプショナル」状態を有するクラス仕様参照
710Bを含む。この状態が後続の仕様によって変化しない場合(すなわち、組
合せツリーのクラス仕様参照の状態が「オプショナル」の場合)、組合せツリー
と比較されるアプリケーション内のクラス「Bar」への参照が、クラス「Ba
r」はオペレーティング・プラットフォーム200内では利用不能であるという
ことを示すエラーを生成する。アプリケーション環境API208は、クラス「
Bar」を使用するアプリケーションが所期のとおりに機能する前にクラス「B
ar」を含むように更新されなければならない。
【0093】 図7Cの例の結果的に生じる組合せツリーを表す仕様Cは、仕様BおよびAの
解析後のクラス仕様参照710Cの状態を示す。第2の仕様解析として、仕様A
はクラス仕様参照710Cをその元の「オプショナル」状態から、アプリケーシ
ョン環境API208でクラス「Bar」が必要なクラスである(すなわち、ク
ラス「Bar」がアプリケーション環境API208内に含まれ、アプリケーシ
ョンによって呼び出せる)ことを示す「必要」状態に更新した。
【0094】 アプリケーションの依存性 上述のように、アプリケーションは実行の基準になる参照を含むことができる
。オブジェクト指向プログラムでは、メソッドはクラス・タイプとして定義され
るパラメータまたは戻りタイプを含むことができる。クラス・タイプはアプリケ
ーションのプログラム・コード内で定義されていてもよく、またはされていなく
てもよい。アプリケーションのプログラム・コード内で定義されていない参照は
外部参照と呼ばれる。
【0095】 アプリケーションはプログラミング資源も定義できる。例えば、アプリケーシ
ョンはプログラミング資源として使用できるクラスまたはメソッドをクラス内に
定義できる。
【0096】 アプリケーションの依存性参照が解決可能であるかどうかを評価するには、ア
プリケーションの依存性をまず識別しなければならない。次いで依存性参照が解
決でき(名前で)、または解決できない参照が識別できる。依存性参照が解決で
きるかどうかを評価するために、本発明の実施形態は仕様ツリーとフォーマット
が似ているアプリケーション依存性ツリーを作成する。依存性ツリーはアプリケ
ーションのプログラミング資源とその依存性参照を識別する。
【0097】 アプリケーションのプログラム・ファイルは解析され、依存性参照が識別され
る。参照はプログラミング資源に遡る情報(例えば、名前属性)を含む。アプリ
ケーションの依存性ツリーが作成されると、各依存性が処理されて解決可能か否
かが判定される。依存性参照がアプリケーション内で解決できない場合、仕様ツ
リーを検査して仕様の参照(すなわち、パッケージ、クラスまたはメソッド仕様
参照、一般にクラス仕様参照)が依存性参照を解決できるかどうかを判定できる
【0098】 Javaプログラミング言語はアプリケーション・プログラムを記述するため
に使用できるプログラミング言語の一例である。Javaでは、各クラス(ソー
ス)はクラス・ファイルと呼ばれるファイルにコンパイルされる。クラス・ファ
イルはクラスのバイトコード表現を含む。クラス・ファイルは他のクラス、フィ
ールド、およびメソッドへの参照を表す情報のプールを含む。クラスを記述する
のに使用されるすべてのクラス参照はクラス「定数プール」内に記憶される。定
数プール内の定数は、別のクラスへの参照を表す記述子である。また、この記述
子はその定数のシンボル情報を提供する文字列テーブル内の文字列を参照する。
【0099】 クラス・ファイルはそれが記憶する他のテーブル内のこれらの記述子を参照す
る。これらのテーブルはクラスが実施するインタフェース、クラスに含まれるフ
ィールド、実施されるメソッド、およびアクセスを記述する属性トークンおよび
フィールドまたはメソッドに関連するその他の主要な記述を含む。以下にクラス
・ファイルに含まれる情報のタイプの例を示す。 クラス・ファイル { 定数プール アクセス・フラグ インタフェース記述子 フィールド記述子 メソッド記述子 属性記述子 「この」クラスの記述子 スーパクラス記述子 }
【0100】 各クラス・ファイルは依存性参照(例えば、クラス内および他のクラスへの依
存性参照)を識別するのに十分なシンボル情報を有する。クラス・ファイルの第
1レベルの表現はクラス・ファイルに含まれる情報を用いて生成される。すなわ
ち、クラス・ファイルは解析されてクラス・ファイルに含まれるフィールド、メ
ソッドおよび戻りタイプが識別される。
【0101】 第2レベルの表現は第1レベルで内部参照が解決された後で生成できる。クラ
ス・ファイル内でフィールド、メソッドおよび戻りタイプを見つけると、依存性
参照と呼ばれる構造が作成されテーブルに保持される。
【0102】 Javaアプリケーションは1つまたは複数のクラス・ファイルからなること
がある。アプリケーションのクラス・ファイルの各々は解析され、クラス・ファ
イルごとに依存性参照が作成される。その結果として、アプリケーションの依存
性参照をすべて含むテーブルが生成される。あるアプリケーションについて定義
されたすべてのクラス・ファイルを含む「allClasses」ハッシュテー
ブルが生成される。
【0103】 第2レベルの表現はクラス・ファイル表現から依存性参照ツリー(仕様ツリー
に似ている)を形成する。各依存性参照は他のクラス・ファイル表現またはアプ
リケーション環境API208の仕様に照らして検査され、解決可能か否かが判
定される。参照文字列を用いて仕様ツリー内または他のクラス・ファイルのセッ
ト内でハッシュが実行され、依存性参照が解決される。
【0104】 図8Aは、本発明の一実施形態によるクラス・ファイルの第2レベルの表現で
使用されるオブジェクト・クラスの一例を示す。ObjectType802は
Javaクラス・ファイル内の該当する構成体のセットを表すクラスである。そ
のような構成体の例はJavaクラス・ファイル内のメソッドおよびフィールド
構成体を表し、ObjectType802から継承するクラスとして実施され
るMethod806およびField808である。Method806およ
びField808クラスのAPIはReference804によって記述さ
れる(すなわち、フィールドの「タイプ」またはメソッドの「パラメータ」およ
び「戻りタイプ」を表すために参照が使用される)。Reference804
はタイプに関連し、アレイ内でタイプが使用されるか否かを指定できる。
【0105】 Typeクラス810はBasicType814またはClassType
812である。ClassType812は既存のクラス・ファイルによって解
決でき、またはアプリケーションのプログラム・コード内で解決不能である。ア
プリケーション内で解決不能なClassタイプ812のインスタンスに関連す
るReference804のインスタンスは、アプリケーション環境API2
08の仕様と比較して、Reference804のインスタンスが外部的に解
決可能か否かを決定できる。
【0106】 図8Bに図8Aのオブジェクト・クラス間の関連を示す。Reference
804はClassType812に関連する。Reference804の複
数のインスタンスがClassType812のインスタンスをポイントできる
。Mathod806のインスタンスのreturnTypeおよびParam
etersはReference806のインスタンスをポイントできる。同様
に、Field808のTypeは。Reference804のインスタンス
をポイントできる。Reference804の各インスタンスはアプリケーシ
ョン内の依存性を表す。例えば、クラスへの参照は戻りタイプ、パラメータ、ま
たはフィールド・タイプがタイプ・クラスであると定義されている時に発生する
。クラスへの参照によってreference804のインスタンスが作成され
る。
【0107】 ClassType812は定義されているクラス・ファイルへの参照と、ク
ラスが含まれるパッケージと、クラスに含まれるメソッドおよびフィールドを含
む。ClassType812は必ずしもクラス・ファイルによって解決される
必要はない。ClassType812がクラス・ファイルによって解決されな
い場合、ClassType812は外部的に解決可能(例えば、仕様ツリー内
で)か否かを判定するために使用できるシンボルを含む。
【0108】 Package816は、各クラス・ファイルの参照を含むクラス・ハッシュ
テーブルを含む。ClassTypeのMethods属性はMethod80
6の各インスタンスへの参照と、クラス・ファイル内のメソッドとフィールドを
(それぞれ)表すField808の各インスタンスへの参照を含む。
【0109】 クラスおよびパッケージ参照は作成後にすべてテーブル内にハッシュされる。
クラス・ファイルからすべての参照が作成された後でクラスにまたがって第2の
パスが作成される。この第2のパスはアプリケーション内で解決可能な各クラス
の依存性参照を解決する。
【0110】 依存性の解決 依存性参照の一部はアプリケーションを含む他のクラス・ファイルによって解
決可能である(すなわち、外部依存性参照または外部参照)。アプリケーション
内で解決不能な依存性参照については、アプリケーション環境API208を表
す仕様ツリーを確認して外部依存性参照が解決可能であるかどうかを判定できる
【0111】 図9A〜図9Bは本発明の一実施形態による依存性参照解決プロセスの流れ図
を示す。解決すべき参照を含むすべてのアプリケーション・クラスが検査される
。したがって、ステップ902で、すべてのクラスが処理されたか否かが判定さ
れる。そうである場合、処理はステップ904で終了する。
【0112】 まだ処理されていないクラスがある場合、処理はステップ906に続き、次の
アプリケーション・クラスが取得される。ステップ908で、現在のクラス・フ
ァイル内の解決する必要がある参照がすべて処理されたか否かが判定される。そ
うである場合、処理はステップ902に続き、残りのあらゆるクラスが処理され
る。
【0113】 現在のクラスの1つまたは複数の参照が解決処理されていない場合、処理はス
テップ910に続き、次の参照が取得される。ステップ912で、現在の参照(
例えば、reference804のインスタンス)がアプリケーション環境A
PI208用に作成された仕様ツリーに照らして検査され、アプリケーション環
境API208内に参照が存在するか否かが判定される。アプリケーション環境
API208内に参照が存在する場合、処理は図9Bのステップ922に続く。
アプリケーション環境API208内に参照が存在しない場合、処理は図9Cの
ステップ942に続く。
【0114】 図9Bで、現在の参照に対応する仕様参照の状態が判定され、仕様参照の状態
に基づいて現在の参照が処理される。ステップ920で、仕様参照の状態が「R
equired」に設定されているか否かが判定される。そうである場合、処理
はステップ922に続き、現在の参照が解決したことが報告され、処理は図9A
のステップ908に続いて、あらゆる残りの参照が処理される。
【0115】 仕様参照が「Required」に設定されていないと判定された場合(ステ
ップ920で)、処理はステップ924に続き、状態が「Optional」に
設定されているか否かが判定される。状態が「Optional」に設定されて
いる場合、ステップ926で「Unimplemented Optional
Reference Error」が報告され、処理は図9Aのステップ90
8に続いて、あらゆる残りの参照が処理される。
【0116】 仕様参照が「Optional」に設定されていないと判定された場合(ステ
ップ924で)、処理はステップ928に続き、状態が「Modified」に
設定されているか否かが判定される。状態が「Modified」に設定されて
いる場合、処理はステップ930に続き、「Modified Referen
ce Warning」が報告され、処理は図9Aのステップ908に続いて、
あらゆる残りの参照が処理される。
【0117】 仕様参照が「Modified」に設定されていないと判定された場合(ステ
ップ928で)、処理はステップ932に続き、状態が「Unsupporte
d」に設定されているか否かが判定される。状態が「Unsupported」
に設定されている場合、処理はステップ934に続き、「Unsupporte
d Reference Error」が報告され、処理は図9Aのステップ9
08に続いて、あらゆる残りの参照が処理される。仕様参照が「Unsuppo
rted」に設定されていないと判定された場合(ステップ932で)、処理は
図9Aのステップ908に続いて、あらゆる残りの参照が処理される。
【0118】 図9Cを参照すると、仕様ツリー内にない参照がステップ942〜954を用
いて処理される。ステップ942で、仕様ツリーが検査されてクラスのパッケー
ジが見つけられる。ステップ944で、パッケージが見つかり、パッケージの状
態が「Unsupported」に設定されていると判定された場合、処理はス
テップ946に続き、「Unsupported Package Error
」が報告される。そうでない場合、処理はステップ948に続き、アプリケーシ
ョンの依存性ツリーが検査され、アプリケーション内で参照が解決できるかどう
かが判定される。そうである場合、参照は解決されるので処理はステップ952
に続く。そうでない場合、処理はステップ950に続き、「Unresolve
d Reference Warning」が報告される。いずれの場合も、処
理は図9Aのステップ908に続いて、あらゆる残りの参照が処理される。
【0119】 以上、プラットフォームとアプリケーションとの間の互換性を評価する方法お
よび装置について1つまたは複数の特定の実施形態に関連して説明してきた。本
発明は請求の範囲およびそれと同等物の範囲によって定義される。
【表2】
【表3】
【表4】
【表5】
【表6】
【図面の簡単な説明】
【図1】 本発明の一実施形態に適した実行環境を提供できるコンピュータ・システムの
一実施形態のブロック図である。
【図2】 本発明の一実施形態によるアプリケーションとそのオペレーティング・プラッ
トフォームとの間の対話を示す図である。
【図3】 本発明の一実施形態による互換性プロセスの概略を示す図である。
【図4】 本発明の一実施形態による仕様から解析された情報を用いて生成された構造体
の例を示す図である。
【図5】 本発明の一実施形態による仕様例の解析から生成されたオブジェクト・ツリー
の例を示す図である。
【図6】 本発明の一実施形態による解析プロセスの流れ図である。
【図7A】 本発明の一実施形態による2つの入力仕様と組合せ仕様の参照を含む仕様ツリ
ーを示す図である。
【図7B】 図7Aの仕様AとBの順序を逆にした図である。
【図8A】 本発明の一実施形態によるクラス・ファイルの第2レベルの表現で使用される
オブジェクト・クラスの例を示す図である。
【図8B】 図8Aのオブジェクト・クラス間の関連を示す図である。
【図9A】 本発明の一実施形態による依存性の参照解決プロセスの流れ図である。
【図9B】 本発明の一実施形態による依存性の参照解決プロセスの流れ図である。
【図9C】 本発明の一実施形態による依存性の参照解決プロセスの流れ図である。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SZ,UG,ZW),EA(AM ,AZ,BY,KG,KZ,MD,RU,TJ,TM) ,AL,AM,AT,AU,AZ,BA,BB,BG, BR,BY,CA,CH,CN,CU,CZ,DE,D K,EE,ES,FI,GB,GD,GE,GH,GM ,HR,HU,ID,IL,IS,JP,KE,KG, KP,KR,KZ,LC,LK,LR,LS,LT,L U,LV,MD,MG,MK,MN,MW,MX,NO ,NZ,PL,PT,RO,RU,SD,SE,SG, SI,SK,SL,TJ,TM,TR,TT,UA,U G,UZ,VN,YU,ZW (71)出願人 901 SAN ANTONIO ROAD PALO ALTO,CA 94303,U. S.A. Fターム(参考) 5B042 GA02 HH08 5B076 DD05 EC02

Claims (29)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータ・システムを用いてオペレーティング・プラッ
    トフォームとアプリケーションとの間の互換性を評価する方法であって、 前記オペレーティング・プラットフォームのプログラミング資源を識別する少
    なくとも1つの仕様を用いてプログラミング資源ツリーを生成するステップと、 前記アプリケーションのプログラミング資源および前記アプリケーションに含
    まれる依存性を識別するステップと、 前記アプリケーション内の前記依存性が、前記少なくとも1つの仕様および前
    記アプリケーションの前記プログラミング資源の1つに解決可能であるかどうか
    を判定するステップと を含む方法。
  2. 【請求項2】 前記少なくとも1つの仕様が第1の仕様と第2の仕様とを含
    み、前記プログラミング資源ツリーを生成するステップが、 前記第1の仕様を解析して、前記第1の仕様に含まれる参照を有するプログラ
    ミング資源ツリーを生成するステップと、 前記第2の仕様に含まれる参照を含むように前記プログラミング資源ツリーを
    変更するステップとをさらに含む請求項1に記載の方法。
  3. 【請求項3】 前記第2の仕様に含まれる参照を含むように前記プログラミ
    ング資源ツリーを変更するステップが、 前記第2の仕様に含まれる前記参照の1つに対応するプログラミング資源ツリ
    ー・エントリが存在するか否かを判定するステップと、 前記プログラミング資源ツリー・エントリが存在し、前記プログラミング資源
    ツリー・エントリの前記状態が前記第2の仕様に含まれる前記参照の前記1つの
    前記状態に対応しない場合、前記第2の仕様に含まれる前記参照の前記1つの前
    記状態を反映するように前記プログラミング資源ツリーを変更するステップと、 前記プログラミング資源ツリー・エントリが存在しない場合、前記第2の仕様
    に含まれる前記参照の前記1つに対応するエントリを前記プログラミング資源ツ
    リーに追加するステップとをさらに含む請求項2に記載の方法。
  4. 【請求項4】 前記第2の仕様に含まれる前記参照の前記1つの状態を反映
    するように前記プログラミング資源ツリーを変更するステップが、 前記第2の仕様に含まれる前記参照の前記1つの状態が「未サポート」の時に
    、前記プログラミング資源ツリー内の前記プログラミング資源ツリー・エントリ
    のあらゆる子参照を削除するステップをさらに含む請求項3に記載の方法。
  5. 【請求項5】 前記第2の仕様に含まれる前記参照の前記1つの状態を反映
    するように前記プログラミング資源ツリーを変更するステップが、 前記第2の仕様に含まれる前記参照の前記1つのユニバーサル・リソース・ロ
    ケータ(URL)とコメント属性を反映する前記プログラミング資源ツリー・エ
    ントリを変更するステップと、 前記第2の仕様を示すように前記プログラミング資源ツリー・エントリの「ス
    ペック」属性を変更するステップとをさらに含む請求項3に記載の方法。
  6. 【請求項6】 前記アプリケーションのプログラミング資源を識別する前記
    ステップが、 前記アプリケーションのプログラミング資源を識別する前記アプリケーション
    の依存性ツリーを生成するステップをさらに含む請求項1に記載の方法。
  7. 【請求項7】 前記判定ステップが、 前記アプリケーションのプログラミング資源が前記依存性参照を解決できるか
    どうかを判定するステップと、 前記アプリケーションの前記プログラミング資源のいずれも前記依存性参照を
    解決できない場合、前記少なくとも1つの仕様のプログラミング資源が前記依存
    性参照を解決できるかどうかを判定するステップとをさらに含む請求項1に記載
    の方法。
  8. 【請求項8】 前記少なくとも1つの仕様のプログラミング資源が前記依存
    性参照を解決できるかどうかを判定する前記ステップが、 前記少なくとも1つの仕様の前記プログラミング資源の前記1つが前記依存性
    に対応し、かつ「必要」の状態を有する場合、前記依存性に解決済みの印を付け
    るステップと、 前記少なくとも1つの仕様の前記プログラミング資源の前記1つが前記依存性
    に対応し、かつ「必要」の状態を有していない場合、前記依存性に未解決の印を
    付けるステップとをさらに含む請求項7に記載の方法。
  9. 【請求項9】 複数の依存性を含むアプリケーションと、 オペレーティング・プラットフォームと前記アプリケーションのプログラミン
    グ資源を識別する複数のプログラミング資源ツリーと、 前記複数のプログラミング資源ツリーを検査して、前記アプリケーションの前
    記複数の依存性が前記プログラミング資源によって解決可能であるかどうかを評
    価するように構成された互換性エンジンとを含む互換性評価システム。
  10. 【請求項10】 前記オペレーティング・プラットフォームがアプリケーシ
    ョン環境とアプリケーション・プログラミング・インタフェースとを含む請求項
    9に記載のシステム。
  11. 【請求項11】 前記プログラミング資源がJavaプログラミング言語を
    用いて定義される請求項9に記載のシステム。
  12. 【請求項12】 前記プログラミング資源がクラス、メソッド、およびパッ
    ケージ・プログラミング資源を含む請求項11に記載のシステム。
  13. 【請求項13】 前記互換性エンジンが、前記アプリケーションの前記複数
    の依存性が前記クラス、メソッド、およびパッケージ・プログラミング資源に解
    決可能であることを検査するように構成された請求項12に記載のシステム。
  14. 【請求項14】 コンピュータ・システムを用いてオペレーティング・プラ
    ットフォームとアプリケーションとの間の互換性を評価するコンピュータ可読プ
    ログラム・コードを内部に具体化し、 前記オペレーティング・プラットフォームのプログラミング資源を識別する少
    なくとも1つの仕様を用いてプログラミング資源ツリーをコンピュータに生成さ
    せるように構成されたコンピュータ可読プログラム・コードと、 前記アプリケーションのプログラミング資源と前記アプリケーションに含まれ
    る依存性とをコンピュータに識別させるように構成されたコンピュータ可読プロ
    グラム・コードと、 前記アプリケーションに含まれる依存性が前記少なくとも1つの仕様と前記ア
    プリケーションの前記プログラミング資源の1つに解決可能であるかどうかをコ
    ンピュータに判定させるように構成されたコンピュータ可読プログラム・コード
    とを含むコンピュータで使用可能な媒体を含む製品。
  15. 【請求項15】 前記少なくとも1つの仕様が第1の仕様と第2の仕様とを
    含み、プログラミング資源ツリーをコンピュータに生成させるように構成された
    前記コンピュータ可読プログラム・コードが、 前記第1の仕様を解析して、前記第1の仕様に含まれる参照を有するプログラ
    ミング資源ツリーをコンピュータに生成させるように構成されたコンピュータ可
    読プログラム・コードと、 前記第2の仕様に含まれる参照を含むように前記プログラミング資源ツリーを
    コンピュータに変更させるように構成されたコンピュータ可読プログラム・コー
    ドとをさらに含む請求項14に記載の製品。
  16. 【請求項16】 前記第2の仕様に含まれる参照を含むように前記プログラ
    ミング資源ツリーをコンピュータに変更させるように構成された前記コンピュー
    タ可読プログラム・コードが、 前記第2の仕様に含まれる前記参照の1つに対応するプログラミング資源ツリ
    ー・エントリが存在するか否かをコンピュータに判定させるように構成されたコ
    ンピュータ可読プログラム・コードと、 前記プログラミング資源ツリー・エントリが存在し、前記プログラミング資源
    ツリー・エントリの前記状態が前記第2の仕様に含まれる前記参照の前記1つの
    状態に対応しない場合、前記第2の仕様に含まれる前記参照の前記1つの前記状
    態を反映させるように前記プログラミング資源ツリーをコンピュータに変更させ
    るように構成されたコンピュータ可読プログラム・コードと、 前記プログラミング資源ツリー・エントリが存在しない場合、前記第2の仕様
    に含まれる前記参照の前記1つに対応するエントリをコンピュータに前記プログ
    ラミング資源ツリーに追加させるように構成されたコンピュータ可読プログラム
    ・コードとをさらに含む請求項15に記載の製品。
  17. 【請求項17】 前記第2の仕様に含まれる前記参照の前記1つの状態を反
    映させるように前記プログラミング資源ツリーをコンピュータに変更させるよう
    に構成された前記コンピュータ可読プログラム・コードが、 前記第2の仕様に含まれる前記参照の前記1つの状態が「未サポート」の時に
    、前記プログラミング資源ツリー内の前記プログラミング資源ツリー・エントリ
    のあらゆる子参照をコンピュータに削除させるように構成されたコンピュータ可
    読プログラム・コードをさらに含む請求項16に記載の製品。
  18. 【請求項18】 前記第2の仕様に含まれる前記参照の前記1つの状態を反
    映させるように前記プログラミング資源ツリーをコンピュータに変更させるよう
    に構成された前記コンピュータ可読プログラム・コードが、 前記第2の仕様に含まれる前記参照の前記1つのユニバーサル・リソース・ロ
    ケータ(URL)とコメント属性を反映させるように前記プログラミング資源ツ
    リーをコンピュータに変更させるように構成されたコンピュータ可読プログラム
    ・コードと、 前記第2の仕様を示すように前記プログラミング資源ツリー・エントリの「ス
    ペック」属性をコンピュータに変更させるように構成されたコンピュータ可読プ
    ログラム・コードとをさらに含む請求項16に記載の製品。
  19. 【請求項19】 前記アプリケーションのプログラミング資源をコンピュー
    タに識別させるように構成された前記コンピュータ可読プログラム・コードが、 前記アプリケーションのプログラミング資源を識別する前記アプリケーション
    の依存性ツリーをコンピュータに生成させるように構成されたコンピュータ可読
    プログラム・コードをさらに含む請求項14に記載の製品。
  20. 【請求項20】 コンピュータに判定させるように構成された前記コンピュ
    ータ可読プログラム・コードが、 前記アプリケーションのプログラミング資源が前記依存性参照を解決できるか
    どうかをコンピュータに判定させるように構成されたコンピュータ可読プログラ
    ム・コードと、 前記アプリケーションの前記プログラミング資源のいずれも前記依存性参照を
    解決できない場合、前記少なくとも1つの仕様のプログラミング資源が前記依存
    性参照を解決できるかどうかをコンピュータに判定させるように構成されたコン
    ピュータ可読プログラム・コードとをさらに含む請求項14に記載の製品。
  21. 【請求項21】 前記少なくとも1つの仕様のプログラミング資源が前記依
    存性参照を解決できるかどうかをコンピュータに判定させるように構成された前
    記コンピュータ可読プログラム・コードが、 前記少なくとも1つの仕様の前記プログラミング資源の前記1つが前記依存性
    に対応し、かつ「必要」の状態を有する場合、前記依存性に解決済みの印をコン
    ピュータに付けさせるように構成されたコンピュータ可読プログラム・コードと
    、 前記少なくとも1つの仕様の前記プログラミング資源の前記1つが前記依存性
    に対応し、かつ「必要」の状態を有していない場合、前記依存性に未解決の印を
    コンピュータに付けさせるように構成されたコンピュータ可読プログラム・コー
    ドとをさらに含む請求項20に記載の製品。
  22. 【請求項22】 搬送波の形で具体化され、命令シーケンスを表すコンピュ
    ータ・データ信号であって、プロセッサによって実行されると、オペレーティン
    グ・プラットフォームとアプリケーションとの間の互換性を、 前記オペレーティング・プラットフォームのプログラミング資源を識別する少
    なくとも1つの仕様を用いてプログラミング資源ツリーを生成するステップと、 前記アプリケーションのプログラミング資源および前記アプリケーションに含
    まれる依存性を識別するステップと、 前記アプリケーション内の前記依存性が、前記少なくとも1つの仕様および前
    記アプリケーションの前記プログラミング資源の1つに解決可能であるかどうか
    を判定するステップと を実行することで、コンピュータ・システムを用いて前記プロセッサに評価させ
    るコンピュータ・データ信号。
  23. 【請求項23】 前記少なくとも1つの仕様が第1の仕様と第2の仕様とを
    含み、前記プログラミング資源ツリーを生成するステップが、 前記第1の仕様を解析して、前記第1の仕様に含まれる参照を有するプログラ
    ミング資源ツリーを生成するステップと、 前記第2の仕様に含まれる参照を含むように前記プログラミング資源ツリーを
    変更するステップとをさらに含む請求項22に記載のコンピュータ・データ信号
  24. 【請求項24】 前記第2の仕様に含まれる参照を含むように前記プログラ
    ミング資源ツリーを変更する前記ステップが、 前記第2の仕様に含まれる前記参照の1つに対応するプログラミング資源ツリ
    ー・エントリが存在するか否かを判定するステップと、 前記プログラミング資源ツリー・エントリが存在し、前記プログラミング資源
    ツリー・エントリの前記状態が前記第2の仕様に含まれる前記参照の前記1つの
    前記状態に対応しない場合、前記第2の仕様に含まれる前記参照の前記1つの状
    態を反映するように前記プログラミング資源ツリーを変更するステップと、 前記プログラミング資源ツリー・エントリが存在しない場合、前記第2の仕様
    に含まれる前記参照の前記1つに対応するエントリを前記プログラミング資源ツ
    リーに追加するステップとをさらに含む請求項23に記載のコンピュータ・デー
    タ信号。
  25. 【請求項25】 前記第2の仕様に含まれる前記参照の前記1つの状態を反
    映するように前記プログラミング資源ツリー・エントリを変更する前記ステップ
    が、 前記第2の仕様に含まれる前記参照の前記1つの状態が「未サポート」の時に
    、前記プログラミング資源ツリー内の前記プログラミング資源ツリー・エントリ
    のあらゆる子参照を削除するステップをさらに含む請求項24に記載のコンピュ
    ータ・データ信号。
  26. 【請求項26】 前記第2の仕様に含まれる前記参照の前記1つの状態を反
    映するように前記プログラミング資源ツリー・エントリを変更する前記ステップ
    が、 前記第2の仕様に含まれる前記参照の前記1つのユニバーサル・リソース・ロ
    ケータ(URL)とコメント属性を反映するように前記プログラミング資源ツリ
    ー・エントリを変更するステップと、 前記第2の仕様を示すように前記プログラミング資源ツリー・エントリの「ス
    ペック」属性を変更するステップとをさらに含む請求項24に記載のコンピュー
    タ・データ信号。
  27. 【請求項27】 前記アプリケーションのプログラミング資源を識別する前
    記ステップが、 前記アプリケーションのプログラミング資源を識別する前記アプリケーション
    の依存性ツリーを生成するステップをさらに含む請求項22に記載のコンピュー
    タ・データ信号。
  28. 【請求項28】 前記判定ステップが、 前記アプリケーションのプログラミング資源が前記依存性参照を解決できるか
    どうかを判定するステップと、 前記アプリケーションの前記プログラミング資源のいずれも前記依存性参照を
    解決できない場合、前記少なくとも1つの仕様のプログラミング資源が前記依存
    性参照を解決できるかどうかを判定するステップとをさらに含む請求項22に記
    載のコンピュータ・データ信号。
  29. 【請求項29】 前記少なくとも1つの仕様のプログラミング資源が前記依
    存性参照を解決できるかどうかを判定する前記ステップが、 前記少なくとも1つの仕様の前記プログラミング資源の前記1つが前記依存性
    に対応し、かつ「必要」の状態を有する場合、前記依存性に解決済みの印を付け
    るステップと、 前記少なくとも1つの仕様の前記プログラミング資源の前記1つが前記依存性
    に対応し、かつ「必要」の状態を有していない場合、前記依存性に未解決の印を
    付けるステップとをさらに含む請求項28に記載のコンピュータ・データ信号。
JP2000514189A 1997-09-29 1998-09-25 プラットフォームとアプリケーションとの間の互換性を評価する方法および装置 Pending JP2001518658A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/939,756 1997-09-29
US08/939,756 US6366876B1 (en) 1997-09-29 1997-09-29 Method and apparatus for assessing compatibility between platforms and applications
PCT/US1998/020132 WO1999017191A2 (en) 1997-09-29 1998-09-25 Method and apparatus for assessing compatibility between platforms and applications

Publications (1)

Publication Number Publication Date
JP2001518658A true JP2001518658A (ja) 2001-10-16

Family

ID=25473672

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000514189A Pending JP2001518658A (ja) 1997-09-29 1998-09-25 プラットフォームとアプリケーションとの間の互換性を評価する方法および装置

Country Status (6)

Country Link
US (1) US6366876B1 (ja)
EP (1) EP1019803B1 (ja)
JP (1) JP2001518658A (ja)
AU (1) AU9776998A (ja)
DE (1) DE69825302D1 (ja)
WO (1) WO1999017191A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008502968A (ja) * 2004-06-15 2008-01-31 ジェムプリュス 中間オブジェクト指向言語を備えるソフトウェアをポータブル・デバイスにロードするための方法
EP2270655A1 (en) 2009-06-25 2011-01-05 Ricoh Company, Ltd. Compatibility evaluation apparatus, compatibility evaluation method, and recording medium
JP2013125441A (ja) * 2011-12-15 2013-06-24 Toyota Infotechnology Center Co Ltd ソフトウェア管理システム、ソフトウェア検証装置、ソフトウェア管理方法

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5954826A (en) * 1997-09-29 1999-09-21 Sun Microsystems, Inc. Method and apparatus for analyzing data
DE69814174T2 (de) * 1998-03-23 2004-03-04 International Business Machines Corp. Java laufzeitsystem mit veränderter sammlung von konstanten
US7076765B1 (en) * 1998-06-24 2006-07-11 Kabushiki Kaisha Toshiba System for hiding runtime environment dependent part
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US7526468B2 (en) * 1999-01-08 2009-04-28 Computer Associates Think, Inc. System and method for recursive path analysis of DBMS procedures
US6529862B1 (en) * 1999-06-30 2003-03-04 Bull Hn Information Systems Inc. Method and apparatus for dynamic management of translated code blocks in dynamic object code translation
US6516295B1 (en) * 1999-06-30 2003-02-04 Bull Hn Information Systems Inc. Method and apparatus for emulating self-modifying code
US6560699B1 (en) * 1999-10-20 2003-05-06 Cisco Technology, Inc. Constraint-based language configuration files for updating and verifying system constraints
US6634022B1 (en) 1999-10-28 2003-10-14 Koninklijke Philips Electronics N.V. Method for platform specific efficiency enhancement of java programs and software product therefor
US6845502B1 (en) 2000-04-25 2005-01-18 International Business Machines Corporation Extended attribute information retention file format for object files
US20010055391A1 (en) * 2000-04-27 2001-12-27 Jacobs Paul E. System and method for extracting, decoding, and utilizing hidden data embedded in audio signals
US20020099863A1 (en) * 2000-06-02 2002-07-25 Guillaume Comeau Software support layer for processors executing interpreted language applications
US6675240B1 (en) * 2000-06-30 2004-01-06 Sony Corporation Method of providing and enabling a dynamic and scaleable system architecture for a computer system
US7685183B2 (en) * 2000-09-01 2010-03-23 OP40, Inc System and method for synchronizing assets on multi-tiered networks
US6901446B2 (en) * 2001-02-28 2005-05-31 Microsoft Corp. System and method for describing and automatically managing resources
US6757678B2 (en) * 2001-04-12 2004-06-29 International Business Machines Corporation Generalized method and system of merging and pruning of data trees
CA2346762A1 (en) * 2001-05-07 2002-11-07 Ibm Canada Limited-Ibm Canada Limitee Compiler generation of instruction sequences for unresolved storage devices
US7013462B2 (en) * 2001-05-10 2006-03-14 Hewlett-Packard Development Company, L.P. Method to map an inventory management system to a configuration management system
US20020188703A1 (en) * 2001-06-04 2002-12-12 Mckesson Information Solutions Holdings Ltd. Graphical tool for developing computer programs via specifications
US20030055927A1 (en) * 2001-06-06 2003-03-20 Claudius Fischer Framework for a device and a computer system needing synchronization
US7080356B2 (en) * 2002-09-18 2006-07-18 Sun Microsystems, Inc. Certification test suite
US20040083465A1 (en) * 2002-10-28 2004-04-29 Weijia Zhang Method and system for connecting to an application programming interface
US7082600B1 (en) * 2002-11-04 2006-07-25 Savaje Technologies, Inc. Method and apparatus for integrating a computer application programming language runtime environment with an operating system kernel
US7086048B1 (en) 2002-11-04 2006-08-01 Savaje Technologies, Inc. Method and apparatus for combining operating system resource data and application program resource data in a shared object
US20040128651A1 (en) * 2002-12-31 2004-07-01 Michael Lau Method and system for testing provisioning and interoperability of computer system services
US6976253B1 (en) * 2003-07-30 2005-12-13 Microsoft Corporation Method and apparatus for configuring a mobile device
US7913237B2 (en) * 2003-08-26 2011-03-22 Ensequence, Inc. Compile-time code validation based on configurable virtual machine
US7266726B1 (en) 2003-11-24 2007-09-04 Time Warner Cable Inc. Methods and apparatus for event logging in an information network
US8302111B2 (en) 2003-11-24 2012-10-30 Time Warner Cable Inc. Methods and apparatus for hardware registration in a network device
US9213538B1 (en) 2004-02-06 2015-12-15 Time Warner Cable Enterprises Llc Methods and apparatus for display element management in an information network
US8078669B2 (en) 2004-02-18 2011-12-13 Time Warner Cable Inc. Media extension apparatus and methods for use in an information network
US7493596B2 (en) * 2004-06-30 2009-02-17 International Business Machines Corporation Method, system and program product for determining java software code plagiarism and infringement
US7539975B2 (en) * 2004-06-30 2009-05-26 International Business Machines Corporation Method, system and product for determining standard Java objects
US7647581B2 (en) * 2004-06-30 2010-01-12 International Business Machines Corporation Evaluating java objects across different virtual machine vendors
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US20060069824A1 (en) * 2004-09-24 2006-03-30 Hodder Leonard B Method of detecting printer interface and printer incompatibility and printing device employing the method
US7454762B2 (en) * 2004-12-07 2008-11-18 International Business Machines Corporation Method and computer program product for handling application references to undefined operating system services
US7640423B2 (en) * 2005-02-14 2009-12-29 Red Hat, Inc. System and method for verifying compatibility of computer equipment with a software product
US20070234285A1 (en) * 2006-02-28 2007-10-04 Mendoza Alfredo V Determining the portability of an application program from a source platform to a target platform
US20080027945A1 (en) * 2006-07-28 2008-01-31 Nichols Paul H Methods, systems and computer program products for downloading a Java application based on identification of supported classes
US7870539B2 (en) * 2006-08-28 2011-01-11 Oracle America, Inc. System and method for cross-channel dependency resolution in a dependency model
US8370818B2 (en) * 2006-12-02 2013-02-05 Time Warner Cable Inc. Methods and apparatus for analyzing software interface usage
US8352925B2 (en) * 2007-01-16 2013-01-08 Oracle America, Inc. Mechanism for enabling a set of code intended for a first platform to be executed on a second platform
US8425290B2 (en) * 2008-08-05 2013-04-23 Wms Gaming, Inc. Mash-up wagering game creation
US20100125839A1 (en) * 2008-11-20 2010-05-20 Gebis Michael J Specifying, Determining and Overriding Software Dependencies
US8417478B2 (en) 2010-09-23 2013-04-09 Ixia Network test conflict checking
US20130132933A1 (en) * 2011-11-17 2013-05-23 Microsoft Corporation Automated compliance testing during application development
US9330184B2 (en) 2013-12-02 2016-05-03 Cltirix Systems, Inc. Methods and systems for machine learning to discover application compatibility status
EP3077903B1 (en) * 2013-12-02 2022-09-14 Citrix Systems Inc. Methods and systems for machine learning to discover application compatibility status
US9600396B2 (en) 2014-03-11 2017-03-21 Citrix Systems, Inc. Computer-implemented methods and systems for determining application matching status
US9916227B2 (en) 2014-05-05 2018-03-13 Citrix Systems, Inc. Systems and methods for analyzing software compatibility
WO2016118630A1 (en) 2015-01-20 2016-07-28 Ultrata Llc Utilization of a distributed index to provide object memory fabric coherency
US11086521B2 (en) 2015-01-20 2021-08-10 Ultrata, Llc Object memory data flow instruction execution
US9886210B2 (en) 2015-06-09 2018-02-06 Ultrata, Llc Infinite memory fabric hardware implementation with router
US10698628B2 (en) 2015-06-09 2020-06-30 Ultrata, Llc Infinite memory fabric hardware implementation with memory
US9971542B2 (en) 2015-06-09 2018-05-15 Ultrata, Llc Infinite memory fabric streams and APIs
WO2017100292A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc. Object memory interfaces across shared links
US10241676B2 (en) 2015-12-08 2019-03-26 Ultrata, Llc Memory fabric software implementation
US10235063B2 (en) 2015-12-08 2019-03-19 Ultrata, Llc Memory fabric operations and coherency using fault tolerant objects
WO2017100281A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc Memory fabric software implementation
US10922089B2 (en) 2016-09-22 2021-02-16 Groupon, Inc. Mobile service applications
US10083029B2 (en) * 2016-11-09 2018-09-25 Red Hat, Inc. Detect application defects by correlating contracts in application dependencies
US11716558B2 (en) 2018-04-16 2023-08-01 Charter Communications Operating, Llc Apparatus and methods for integrated high-capacity data and wireless network services
US11129213B2 (en) 2018-10-12 2021-09-21 Charter Communications Operating, Llc Apparatus and methods for cell identification in wireless networks
US11129171B2 (en) 2019-02-27 2021-09-21 Charter Communications Operating, Llc Methods and apparatus for wireless signal maximization and management in a quasi-licensed wireless system
US10901729B2 (en) * 2019-03-20 2021-01-26 Visa International Service Association System and method for merging specification files for an application programming interface
US11526379B2 (en) 2019-06-19 2022-12-13 International Business Machines Corporation Application building in a distributed computing environment
US11026205B2 (en) 2019-10-23 2021-06-01 Charter Communications Operating, Llc Methods and apparatus for device registration in a quasi-licensed wireless system

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5418953A (en) * 1993-04-12 1995-05-23 Loral/Rohm Mil-Spec Corp. Method for automated deployment of a software program onto a multi-processor architecture
US5404529A (en) * 1993-07-19 1995-04-04 Taligent, Inc. Object-oriented interprocess communication system interface for a procedural operating system
US5485455A (en) * 1994-01-28 1996-01-16 Cabletron Systems, Inc. Network having secure fast packet switching and guaranteed quality of service
US5787246A (en) * 1994-05-27 1998-07-28 Microsoft Corporation System for configuring devices for a computer system
US5548759A (en) * 1994-07-05 1996-08-20 Microsoft Corporation System for storing executable code within a resource data section of an executable file
US5678039A (en) * 1994-09-30 1997-10-14 Borland International, Inc. System and methods for translating software into localized versions
US5583983A (en) * 1994-11-17 1996-12-10 Objectware, Inc. Multi-platform object-oriented software development and deployment system
US6047312A (en) * 1995-07-07 2000-04-04 Novell, Inc. System for replicating and associating file types with application programs among plurality of partitions in a server
US5815415A (en) * 1996-01-19 1998-09-29 Bentley Systems, Incorporated Computer system for portable persistent modeling
US5909545A (en) * 1996-01-19 1999-06-01 Tridia Corporation Method and system for on demand downloading of module to enable remote control of an application program over a network
US5905860A (en) * 1996-03-15 1999-05-18 Novell, Inc. Fault tolerant electronic licensing system
US5835777A (en) * 1996-03-20 1998-11-10 Hewlett-Packard Company Method of automatically generating a software installation package
US5757925A (en) * 1996-07-23 1998-05-26 Faybishenko; Yaroslav Secure platform independent cross-platform remote execution computer system and method
ATE264519T1 (de) 1997-02-21 2004-04-15 Cit Alcatel Verfahren zur erzeugung eines rechnerprogrammes
US6038677A (en) * 1997-03-31 2000-03-14 International Business Machines Corporation Automatic resource group formation and maintenance in a high availability cluster configuration
US5954826A (en) * 1997-09-29 1999-09-21 Sun Microsystems, Inc. Method and apparatus for analyzing data
US5999730A (en) * 1997-10-27 1999-12-07 Phoenix Technologies Limited Generation of firmware code using a graphic representation
US6108800A (en) * 1998-02-10 2000-08-22 Hewlett-Packard Company Method and apparatus for analyzing the performance of an information system

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008502968A (ja) * 2004-06-15 2008-01-31 ジェムプリュス 中間オブジェクト指向言語を備えるソフトウェアをポータブル・デバイスにロードするための方法
US7913265B2 (en) 2004-06-15 2011-03-22 Gemalto Sa Method of loading software with an intermediate object oriented language in a portable device
EP2270655A1 (en) 2009-06-25 2011-01-05 Ricoh Company, Ltd. Compatibility evaluation apparatus, compatibility evaluation method, and recording medium
US8640092B2 (en) 2009-06-25 2014-01-28 Ricoh Company, Ltd. Compatibility evaluation apparatus, compatibility evaluation method, and recording medium
JP2013125441A (ja) * 2011-12-15 2013-06-24 Toyota Infotechnology Center Co Ltd ソフトウェア管理システム、ソフトウェア検証装置、ソフトウェア管理方法

Also Published As

Publication number Publication date
WO1999017191A3 (en) 1999-05-20
US6366876B1 (en) 2002-04-02
EP1019803A2 (en) 2000-07-19
EP1019803B1 (en) 2004-07-28
DE69825302D1 (de) 2004-09-02
AU9776998A (en) 1999-04-23
WO1999017191A2 (en) 1999-04-08

Similar Documents

Publication Publication Date Title
US6366876B1 (en) Method and apparatus for assessing compatibility between platforms and applications
US6282702B1 (en) Method and apparatus of translating and executing native code in a virtual machine environment
US11366643B2 (en) Generating dynamic modular proxies
US7954096B2 (en) Shared loader system and method
US7870546B2 (en) Collaborative classloader system and method
US7669184B2 (en) Introspection support for local and anonymous classes
US9417931B2 (en) Unified metadata for external components
US10459708B2 (en) Composing a module system and a non-module system
US10078497B2 (en) Bridging a module system and a non-module system
US11782774B2 (en) Implementing optional specialization when compiling code
US11048489B2 (en) Metadata application constraints within a module system based on modular encapsulation
US20180268158A1 (en) Identifying permitted illegal access operations in a module system
US10387142B2 (en) Using annotation processors defined by modules with annotation processors defined by non-module code
US10394610B2 (en) Managing split packages in a module system
US7526752B1 (en) Introspection support for generic types
EP3164800B1 (en) Bridging a module system and a non-module system
Axis et al. WebServices-Axis
Loftin et al. Solaris to HP-UX 11.0 Porting Guide
Vykouk Native DLL Importer for C

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050920

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081007

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090107

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090210