JP2001306326A - データ処理システム及びデータ処理方法、並びに、ソフトウェア記憶媒体 - Google Patents

データ処理システム及びデータ処理方法、並びに、ソフトウェア記憶媒体

Info

Publication number
JP2001306326A
JP2001306326A JP2000122932A JP2000122932A JP2001306326A JP 2001306326 A JP2001306326 A JP 2001306326A JP 2000122932 A JP2000122932 A JP 2000122932A JP 2000122932 A JP2000122932 A JP 2000122932A JP 2001306326 A JP2001306326 A JP 2001306326A
Authority
JP
Japan
Prior art keywords
code
class
data processing
execution
original
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
JP2000122932A
Other languages
English (en)
Inventor
Hideki Asazu
英樹 浅津
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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP2000122932A priority Critical patent/JP2001306326A/ja
Publication of JP2001306326A publication Critical patent/JP2001306326A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 各機器のアーキテクチャに最適化したコード
を生成する。 【解決手段】 アプリケーションローダは、各クラスの
スーパークラス若しくはそのクラスが実装しているイン
ターフェースに基づいてその機器依存性を判定する。ク
ラスコンバータは、元のクラスと同じスーパークラスを
継承した若しくは同じインターフェースを実装して、新
たなクラスを生成する。オブジェクトファクトリは、元
のクラスと、スーパークラス若しくはインターフェース
と、新しいクラスとを組にして登録し、コード実行時に
指定されたスーパークラス若しくはインターフェースに
従っていずれか一方のクラスのオブジェクトを生成す
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プロセッサあるい
はバイト・コード・インタープリタなどを内蔵して、与
えられたプログラム・コードを解釈し実行するプログラ
ム実行環境に係り、例えばJavaの標準API(Appl
ication Programming Interface)やミドルウェアのよ
うな、アプリケーション・プログラムに対して提供され
るプログラム実行環境に関する。
【0002】更に詳しくは、本発明は、各機器のアーキ
テクチャに最適化したコードを生成して高速処理を行う
プログラム実行環境に係り、特に、アプリケーション・
プログラムからの要求に応じてそのインスタンスを生成
するプログラム実行環境に関する。
【0003】
【従来の技術】昨今の技術革新に伴い、コンテンツ制
作、編集、配信などを行う情報処理・情報通信環境が整
ってきている。この結果、映像や音声、画像、コンピュ
ータ・グラフィック、テキストなど各種のメディア・デ
ータが業務・日常生活を問わず、さまざまな場面で取り
扱われるようになってきている。
【0004】また、デジタル技術の発達により、メディ
ア・データを劣化なく大量に蓄積することが可能になっ
てきた(例えば、「テレビ番組をHDDに録画する機器
が続々登場」(日経エレクトロニクス,No.727,
pp.27−28,1998)や「HDD使うディジタ
ル録画技術が家庭に向けいよいよ登場」(日経エレクト
ロニクス,No.727,pp.41−46,199
8)を参照のこと)。そこで、このようなメディア・デ
ータを活用する魅力的なアプリケーション・プログラム
を効率的に開発することが重要となってきている。
【0005】大量のメディアデータの中から必要な部分
を取り出すという処理は、メディア・データを取り扱う
この種の多くのアプリケーション・プログラムが必要と
する処理である。
【0006】例えば、映像データの場合、複数のフレー
ム画像が時間的に連続して構成されているので、時刻や
フレーム番号を指定して所望のフレーム画像にアクセス
することができる。しかしながら、ある俳優の映ってい
る部分のみを抽出して連続再生をしたり、特定のシーン
のみをつなぎ合わせてダイジェストを作りたい、という
要求がある。
【0007】このようなことを可能にする1つの方法と
して、メタデータ(metadata)を用いることが挙げられ
る。ここで言う「メタデータ」とは、"data about dat
a"のことであり、データの属性や意味内容、取得先、格
納場所など、データを管理する情報を記述することがで
きる。メタデータを、データへのアクセス(検索)の補
助や、メディア・データ視聴のためのさまざまな用途に
利用することができる。
【0008】メタデータによれば、 ・映像や音声がどのシーンで区切られるか、 ・各シーン(又はフレーム)に何(又は誰)が映ってい
るか ・個々のユーザがこれまでにどのコンテンツ(又はシー
ン)を視聴したか ・各コンテンツ(又はシーン)が何時、誰によって視聴
されたか などのメディア・データ内のさまざまの情報を記述する
ことができる。
【0009】したがって、メタデータを通じて「ある俳
優がどのメディア・データのどの部分に映っているか」
を知ることができ、これによって、「ある俳優の映って
いるシーンを取り出す」といったメディア・データに対
する所望の形式のアクセスを容易に実現することができ
る。
【0010】ところで、コンピュータなどの情報機器向
けに記述されたプログラムは、一般に、対象としている
機器上でのみ動作し、他のアーキテクチャを持つ機器上
では動作しない(又は動作保証されない)。最近では、
ネットワークなどを通じてプログラムを不特定多数のユ
ーザに配信する機会が多くなってきているが、プログラ
ムの供給者側が、各ユーザが持つあらゆる機器向けにプ
ログラム・コードを事前に用意しておくことは困難であ
る。また、同じ動作をするプログラムを機器毎に開発す
ることは、効率的ではなく、その分コストが増大する。
【0011】このようなアーキテクチャの相違に依拠す
る技術的課題に対し、米サンマイクロシステムズ社にお
いて開発されたプログラミング言語"Java"(商標)
は、「中間コード・インタープリタ方式」、「オブジェ
クト指向技術」、「標準API(Application Programm
ing Interface)の整備」などの技術を取り入れること
により、プログラムが異なるプラットフォーム上で同じ
ように動作することを可能とした。
【0012】しかしながら、このようなJava技術を
用いた場合であっても、なおも問題となるケースがあ
る。
【0013】例えば、アプリケーション・プログラムに
よるメディア・データへのアクセスを補助するために各
種のメタデータを記述する場合について考察してみる。
このような場合、アーキテクチャが異なる各機器上にお
いて共通のインターフェースでメタデータへのアクセス
を実現するためには、それぞれのメタデータについて、
Javaインターフェース(実装コードを含まない関
数)を定義するとともに、各Javaインターフェース
についてクラス(実装コードを含む関数)を用意しなけ
ればならない。
【0014】一般に、メタデータは、さまざまなソース
から様々な形式で取得される。例えば、個々のアプリケ
ーション・プログラムにおいて新たにメタデータを定義
することもある。このような場合、新たなJavaイン
ターフェースを定義する際に、各機器毎の実装クラスを
何時、誰が、どのように作成し、機器のロードするのか
は、依然として残された課題である。
【0015】
【発明が解決しようとする課題】本発明の目的は、プロ
セッサあるいはバイト・コード・インタープリタなどを
内蔵して、与えられたプログラム・コードを解釈し実行
する、優れたプログラム実行環境を提供することにあ
る。
【0016】本発明の更なる目的は、各機器のアーキテ
クチャに最適化したコードを生成して高速処理を行うこ
とができる、優れたプログラム実行環境を提供すること
にある。
【0017】本発明の更なる目的は、アプリケーション
・プログラムからの要求に応じて最適なインスタンスを
生成することができる、優れたプログラム実行環境を提
供することにある。
【0018】
【課題を解決するための手段及び作用】本発明は、上記
課題を参酌してなされたものであり、その第1の側面
は、プロセッサあるいはバイト・コード・インタープリ
タなどを内蔵して、与えられたプログラム・コードを解
釈し実行するデータ処理システムであって、実行コード
を読み込むとともに、読み込んだ実行コードのうち前記
システムの実現方式に依存するコードを検出するアプリ
ケーション・ローダと、前記システムの実現方式に依存
するコードを該実現方式に合わせて変換して、新たなコ
ードを生成するクラス・コンバータと、前記クラス・コ
ンバータによって生成されたコードと元のコードとを組
にして登録するとともに、コード実行時において組にし
て登録されたコードのうち目的に応じて適切な方を選択
して呼び出すオブジェクト・ファクトリと、を具備する
ことを特徴とするデータ処理システムである。
【0019】前記アプリケーション・ローダは、通信又
は放送など所定の伝送媒体経由で、あるいは記録媒体経
由で実行コードを読み込むことができる。
【0020】本発明の第1の側面に係るデータ処理シス
テムによれば、各システム毎に相違する実現形式に依存
したコード部分を実行コードから取り除くことによっ
て、単一のコードをアーキテクチャが異なる複数の機器
上で実行することが可能になる。また、各機器のアーキ
テクチャに最適化したコードを新たに生成することで、
より高速に処理を行うことができる。
【0021】また、前記オブジェクト・ファクトリは、
実行コードをシステム内に格納するときには前記クラス
・コンバータによって生成されたコードを呼び出し、シ
ステム外部に転送するときには元のコードを呼び出すよ
うにしてもよい。したがって、異なるデータベース・エ
ンジンを採用した機器であっても、プログラムを書き換
えることなしに、同じようにメタデータを扱うことが可
能になる。また、機器を実装する機器製造・販売業者に
とっては、採用するデータベース・エンジンの選択の幅
が増し、他社に対する差別化を図ることができる。
【0022】また、本発明の第2の側面は、プロセッサ
あるいはバイト・コード・インタープリタなどを内蔵し
て、オブジェクト指向プログラム・コードを解釈し実行
するデータ処理システムであって、クラス単位で処理可
能な実行コードを読み込むとともに、読み込んだ実行コ
ードの各クラスのスーパークラス若しくはそのクラスが
実装しているインターフェースに基づいて前記システム
の実現方式に対する依存性をクラス単位で判定するアプ
リケーション・ローダと、前記システムの実現方式に依
存するコードの元のクラスと同じスーパークラスを継承
した若しくは同じインターフェースを実装して、前記シ
ステムの実現方式に合わせた新たなクラスを生成するク
ラス・コンバータと、前記クラス・コンバータにおいて
変換の対象となった元のクラスと、前記システムの実現
方式への依存性判定に用いられたスーパークラス若しく
はインターフェースと、前記クラス・コンバータによっ
て生成された新たなクラスとを組にして登録するととも
に、コード実行時において指定されたスーパークラス若
しくはインターフェースに従って、元のクラスのオブジ
ェクト又は新たに生成されたクラスのオブジェクトを選
択的に生成するオブジェクト・ファクトリと、を具備す
ることを特徴とするデータ処理システムである。
【0023】本発明の第2の側面に係るデータ処理シス
テムによれば、機器アーキテクチャに最適化するために
変換の対象となるコードをより明確に指定し又は検出す
ることが可能となる。また、オブジェクト指向技術が標
準的に備えている動的結合を利用することで、特別な機
構を用意することなしに変換前及び変換後のコード呼び
出しを切り換えることが可能である。
【0024】前記オブジェクト・ファクトリは、実行コ
ードをシステム内に格納するときには新たに生成された
クラスのオブジェクトを生成し、システム外部に転送す
るときには元のクラスのオブジェクトを生成するように
してもよい。したがって、異なるデータベース・エンジ
ンを採用した機器であっても、プログラムを書き換える
ことなしに、同じようにメタデータを扱うことが可能に
なる。また、機器を実装する機器製造・販売業者にとっ
ては、採用するデータベース・エンジンの選択の幅が増
し、他社に対する差別化を図ることができる。
【0025】また、本発明の第3の側面は、プロセッサ
あるいはバイト・コード・インタープリタなどを内蔵し
て、与えられたプログラム・コードを解釈し実行するデ
ータ処理方法であって、(a)実行コードを読み込むス
テップと、(b)読み込んだ実行コードのうちシステム
の実装に依存するコードを検出するステップと、(c)
システムの実現方式に依存するコードを該実現方式に合
わせて変換して、元のコードとは異なる処理を行う新た
なコードを生成するステップと、(d)前記ステップ
(c)によって生成されたコードと元のコードとを組に
して登録するステップと、(e)コード実行時において
組にして登録されたコードのうち目的に応じて適切な方
を選択して呼び出すステップと、を具備することを特徴
とするデータ処理方法である。
【0026】本発明の第3の側面に係るデータ処理方法
によれば、各システム毎に相違する実現形式に依存した
コード部分を実行コードから取り除くことによって、単
一のコードをアーキテクチャが異なる複数の機器上で実
行することが可能になる。また、各機器のアーキテクチ
ャに最適化したコードを新たに生成することで、より高
速に処理を行うことができる。
【0027】前記ステップ(e)では、実行コードをシ
ステム内に格納するときには前記クラス・コンバータに
よって生成されたコードを呼び出し、システム外部に転
送するときには元のコードを呼び出すようにしてもよ
い。したがって、異なるデータベース・エンジンを採用
した機器であっても、プログラムを書き換えることなし
に、同じようにメタデータを扱うことが可能になる。ま
た、機器を実装する機器製造・販売業者にとっては、採
用するデータベース・エンジンの選択の幅が増し、他社
に対する差別化を図ることができる。
【0028】また、本発明の第4の側面は、プロセッサ
あるいはバイト・コード・インタープリタなどを内蔵し
て、オブジェクト指向プログラム・コードを解釈し実行
するデータ処理方法であって、(a)クラス単位で処理
可能な実行コードを読み込むステップと、(b)読み込
んだ実行コードの各クラスのスーパークラス若しくはそ
のクラスが実装しているインターフェースに基づいて、
システムの実現方式に対する依存性をクラス単位で判定
するステップと、(c)システムの実現方式に依存する
コードの元のクラスと同じスーパークラスを継承した若
しくは同じインターフェースを実装して、前記システム
の実現方式に合わせた新たなクラスを生成するステップ
と、(d)前記ステップ(c)において変換の対象とな
った元のクラスと、システムの実現方式への依存性判定
に用いられたスーパークラス若しくはインターフェース
と、前記ステップ(d)によって生成された新たなクラ
スとを組にして登録するステップと、(e)コード実行
時において指定されたスーパークラス若しくはインター
フェースに従って、元のクラスのオブジェクト又は新た
に生成されたクラスのオブジェクトを選択的に生成する
ステップと、を具備することを特徴とするデータ処理方
法である。
【0029】本発明の第4の側面に係るデータ処理方法
によれば、機器アーキテクチャに最適化するために変換
の対象となるコードをより明確に指定し又は検出するこ
とが可能となる。また、オブジェクト指向技術が標準的
に備えている動的結合を利用することで、特別な機構を
用意することなしに変換前及び変換後のコード呼び出し
を切り換えることが可能である。
【0030】前記ステップ(e)では、実行コードをシ
ステム内に格納するときには新たに生成されたクラスの
オブジェクトを生成し、システム外部に転送するときに
は元のクラスのオブジェクトを生成するようにしてもよ
い。したがって、異なるデータベース・エンジンを採用
した機器であっても、プログラムを書き換えることなし
に、同じようにメタデータを扱うことが可能になる。ま
た、機器を実装する機器製造・販売業者にとっては、採
用するデータベース・エンジンの選択の幅が増し、他社
に対する差別化を図ることができる。
【0031】また、本発明の第5の側面は、プロセッサ
あるいはバイト・コード・インタープリタなどを用いて
与えられたプログラム・コードを解釈し実行するデータ
処理をコンピュータ・システム上で実行するように記述
されたコンピュータ・ソフトウェアをコンピュータ可読
形式で物理的に格納したソフトウェア記憶媒体であっ
て、前記データ処理は、(a)実行コードを読み込むス
テップと、(b)読み込んだ実行コードのうちシステム
の実装に依存するコードを検出するステップと、(c)
システムの実現方式に依存するコードを該実現方式に合
わせて変換して、元のコードとは異なる処理を行う新た
なコードを生成するステップと、(d)前記ステップ
(c)によって生成されたコードと元のコードとを組に
して登録するステップと、(e)コード実行時において
組にして登録されたコードのうち目的に応じて適切な方
を選択して呼び出すステップと、を具備することを特徴
とするソフトウェア記憶媒体である。
【0032】また、本発明の第6の側面は、プロセッサ
あるいはバイト・コード・インタープリタなどを用いて
与えられたオブジェクト指向プログラム・コードを解釈
し実行するデータ処理をコンピュータ・システム上で実
行するように記述されたコンピュータ・ソフトウェアを
コンピュータ可読形式で物理的に格納したソフトウェア
記憶媒体であって、前記データ処理は、(a)クラス単
位で処理可能な実行コードを読み込むステップと、
(b)読み込んだ実行コードの各クラスのスーパークラ
ス若しくはそのクラスが実装しているインターフェース
に基づいて、システムの実現方式に対する依存性をクラ
ス単位で判定するステップと、(c)システムの実現方
式に依存するコードの元のクラスと同じスーパークラス
を継承した若しくは同じインターフェースを実装して、
前記システムの実現方式に合わせた新たなクラスを生成
するステップと、(d)前記ステップ(c)において変
換の対象となった元のクラスと、システムの実現方式へ
の依存性判定に用いられたスーパークラス若しくはイン
ターフェースと、前記ステップ(d)によって生成され
た新たなクラスとを組にして登録するステップと、
(e)コード実行時において指定されたスーパークラス
若しくはインターフェースに従って、元のクラスのオブ
ジェクト又は新たに生成されたクラスのオブジェクトを
選択的に生成するステップと、を具備することを特徴と
するソフトウェア記憶媒体である。
【0033】本発明の第5及び第6の側面に係るソフト
ウェア記憶媒体は、例えば、様々なプログラム・コード
を実行可能な汎用コンピュータ・システムに対して、コ
ンピュータ・ソフトウェアをコンピュータ可読な形式で
提供する媒体である。このような媒体は、例えば、CD
(Compact Disc)やFD(Floppy Disc)、MO(Magne
to-Optical disc)などの着脱自在で可搬性の記憶媒体
である。あるいは、ネットワーク(ネットワークは無
線、有線の区別を問わない)などの伝送媒体などを経由
してコンピュータ・ソフトウェアを特定のコンピュータ
・システムに提供することも技術的に可能である。
【0034】このようなソフトウェア記憶媒体は、コン
ピュータ・システム上で所定のコンピュータ・ソフトウ
ェアの機能を実現するための、コンピュータ・ソフトウ
ェアと記憶媒体との構造上又は機能上の協働的関係を定
義したものである。換言すれば、本発明の第5及び第6
の側面に係るソフトウェア記憶媒体を介して所定のコン
ピュータ・ソフトウェアをコンピュータ・システムにイ
ンストールすることによって、コンピュータ・システム
上では協働的作用が発揮され、本発明の第1及び第3、
並びに、第2及び第3の各側面に係るデータ処理システ
ム又は方法と同様の作用効果を得ることができる。
【0035】本発明のさらに他の目的、特徴や利点は、
後述する本発明の実施例や添付する図面に基づくより詳
細な説明によって明らかになるであろう。
【0036】
【発明の実施の形態】以下、図面を参照しながら本発明
の実施例を詳解する。
【0037】図1には、本発明の実施に供されるデータ
処理システム1の機能的構成を模式的に示している。但
し、データ処理システム1において対象とするコード
は、Javaバイト・コードであると仮定する。
【0038】データ処理システム1は、複数のアプリケ
ーション#1,#2,#3…に対して実行環境20を提
供する。アプリケーション実行環境20は、アプリケー
ション・ローダ21と、クラス・コンバータ22と、オ
ブジェクト・ファクトリ23と、Javaランタイム・
システム10とで構成される。
【0039】Javaランタイム・システム10は、J
avaバイト・コードを解釈・実行するための機能ブロ
ックであり、クラス・ローダ/ベリファイヤ11と、実
行エンジン12を含んでいる。Javaバイト・コード
は、Javaソース・プログラムをJavaコンパイラ
でコンパイルされて生成される中間コードである。
【0040】Javaランタイム・システム10は、標
準的な構成でよい。クラス・ローダ/ベリファイヤ11
は、各クラスのバイト・コードのJavaランタイム・
システム10への読み込みとその検証処理を行う。実行
エンジン12は、クラス・ローダ/ベリファイヤ11に
よって読み込まれたバイト・コードの解釈と実行を行
う。
【0041】アプリケーション環境20は、アプリケー
ション・プログラムに対してその実行環境を提供する機
能ブロックであり、例えばJavaの標準API(Appl
ication Programming Interface)や、OS/ハードウ
ェアとアプリケーション間の連携をとるミドルウェアな
どを含む概念である。
【0042】本実施例に係るアプリケーション環境20
は、一般的な概念の以外に、さらに、アプリケーション
・ローダ21と、クラス・コンバータ22と、オブジェ
クト・ファクトリ23という構成要素を含んでいる。
【0043】アプリケーション・ローダ21は、アプリ
ケーション・プログラムやライブラリを構成しているJ
avaクラス・ファイルを読み込むための機能ブロック
である。Javaクラス・ファイルのソースは特に問わ
れない。例えば、システム1のローカル・ディスクから
読み込んでもよいし、あるいは、ネットワーク経由でダ
ウンロードしてもよい。また、アプリケーション・ロー
ダ21は、ロードしたコードのうち、個々のシステム1
の実装に依存するコードを検出する機能を備えている。
【0044】クラス・コンバータ22は、特定のクラス
・ファイルに含まれるバイト・コードを変換して、新た
なクラスを生成する機能ブロックである。すなわち、ク
ラス・コンバータ22は、アプリケーション・ローダ2
1によってロードされたコードのうち実装に依存すると
判断されたコードについて、個々のシステム1の実現方
式に適合させるべく、元のコードとは異なる処理を行う
新たなコードを生成することができる。
【0045】オブジェクト・ファクトリ23は、クラス
・コンバータで生成されたクラスの登録先であり、個々
のアプリケーション・プログラムからの要求に応じてイ
ンスタンスを生成する。
【0046】次いで、このデータ処理システム1上での
処理動作について説明する。
【0047】図2には、データ処理システム1において
処理されるJavaコードのクラス図を示している。
【0048】MetadataNodeは、Javaイ
ンターフェースである。
【0049】SomeMetadataNodeSch
emaは、あるメタデータを定義しているJavaイン
ターフェースであり、MetadataNodeを継承
して定義される。
【0050】図3には、SomeMetadataNo
deSchemaのソース・コードを示している。So
meMetadataNodeSchemaは、属性S
omeAttributeについて読み書きするための
2つの関数getSomeAttribute()及び
SetSomeAttribute(int att
r)を定義している(同図の3行目及び4行目を参照の
こと)。
【0051】Standard_Implは、Some
MetadataNodeSchemaの標準的な実装
クラスである。図4には、Standard_Impl
のソース・コードを示している。Standard_I
mplでは、属性Attributeの値を変数som
eAttributeに格納し(同図kの4行目を参照
のこと)、それを用いて関数getSomeAttri
bute()及びsetSomeAttribut
e()を実装している。図5には、これらの関数をバイ
ト・コードにコンパイルしたものを示している。Sta
ndard_Implは、個々のシステム1の実装に依
存するコードである。
【0052】Local_Implは、Standar
d_Implと同様に、SomeMetadataNo
deSchemaを実装したクラスである。Local
_Implは、クラス・コンバータ22によってSta
ndard_Impleのバイト・コードから直接生成
される。
【0053】図6には、生成されたバイト・コードの一
部を示している。同図からも分かるように、Local
_Impleは、Standard_Impleのバイ
ト・コードと比較して、変数someAttribut
eを読み書きするコード(図5の3行目並びに8〜9行
目を参照のこと)が、実際のデータベースへのアクセス
関数GetInt(int,String)やSetI
nt(int,String,int)を呼び出すコー
ドへと置き換えられている(図6の3〜5行目並びに1
0〜13行目を参照のこと)。このような変換は、例え
ば以下に示すような手順に従って実現する。但し、かか
る変換処理自体/*/は本発明の要旨と直接関連しないの
で、本明細書中ではこれ以上説明しない。
【0054】
【数1】1:元のバイト・コードを順にスキャンしてい
き、メンバー変数にアクセスしている箇所を特定する。 2:1で発見したコードをデータベースへアクセスする
コードへ置き換える。 3:2の処理によってずれたアドレスを調整する。必要
なら分岐命令の置き換えを行う。 4:元のクラス・ファイルから不要になった変数定義を
削除して、変わりにデータベースへアクセスする際に必
要となる変数定義を挿入する。
【0055】図7には、図1に示した各機能ブロック間
で協働的に行われる処理の手順を示している。以下、図
7に従って説明する。
【0056】(1)アプリケーション・ローダ21は、
アプリケーション・プログラムを構成するクラス・ファ
イル、及び、アプリケーション・プログラム実行に際し
て必要となるライブラリを構成するクラス・ファイル
を、システム1内にロードする。クラス・ファイルは、
通信媒体や放送媒体経由で、あるいはパッケージ・メデ
ィアの形態で、複数の計算機システム間を移動すること
ができる。
【0057】(2)さらに、アプリケーション・ローダ
21は、ロードしたコードのうち、個々のシステム1の
実装に依存するコードを検出する。この例では、アプリ
ケーション・ローダ21は、ロードしたクラス・ファイ
ルのうちMetadataNodeを継承しているJa
vaインターフェース(SomeMetadataSc
hema)を探し、その実装クラスのクラス・ファイル
(Standard_Impl)のクラス・ファイルを
クラス・コンバータ22に渡す。
【0058】なお、ここではクラス間の継承関係に基づ
き、変換の対象となるクラスの特定を行う方法を示した
が、特にこの方法に限定されない。例えば、変換対象と
なるクラスを記したファイルをクラス・ファイルととも
に読み込み、それを参照するという方法でもよい。
【0059】(3)クラス・コンバータ22は、アプリ
ケーション・ローダ21より渡されたクラス・ファイル
(Standard_Impl)について、前述したよ
うな変換処理を適用する。そして、変換結果として生成
されたクラス・ファイル(Local_Impl)をア
プリケーション・ローダ21に返す。
【0060】(4)アプリケーション・ローダ21は、
ロードした全クラス・ファイル、並びに、クラス・コン
バータ22で生成されたクラス・ファイルを、Java
ランタイム・システム10内のクラス・ローダ/ベリフ
ァイヤ11に渡す。
【0061】(5)クラス・ローダ/ベリファイヤ11
は、アプリケーション・ローダ21から渡されたクラス
・ファイルについて検証した後、クラス・ファイル内で
定義されたクラスをJavaランタイム・システム10
内に組み込むための処理を行う。また、これと同時に、
そのクラスに対応付けられたクラスのインスタンスを生
成して、アプリケーション・ローダ21に返す。
【0062】(6)アプリケーション・ローダ21は、
クラス・ローダ/ベリファイヤ11から返されたクラス
・オブジェクトのうち、以下のものを1つの組として、
オブジェクト・ファクトリ23に追加登録する。
【0063】
【数2】(a) MetadataNodeインターフ
ェースを継承したもの (SomeMetadat
aNodeSchema) (b)上記(a)のJavaインターフェースの実装ク
ラス(Standard_Impl) (c)クラス・コンバータ22が上記(b)に基づいて生
成したもの(Local_Impl)
【0064】上述した(1)〜(6)が、アプリケーシ
ョン・プログラムをデータ処理システム1にロードする
際に行う処理である。この後、アプリケーション・プロ
グラムの実行に際して(図7のAのポジションより)、
以下の処理を実行する。
【0065】(7)アプリケーション・プログラムの実
行中、メタデータを表すオブジェクトが必要になった時
点で、そのスキーマを表すJavaインターフェース
(SomeMetadataSchema)を引数とし
て、オブジェクト・ファクトリ23にオブジェクトの生
成を依頼する。
【0066】(8)オブジェクト・ファクトリ23は、
アプリケーション・プログラムの要求に応答して、St
andard_Impl若しくはLocal_Impl
のどちらか適切なクラスを選択して、そのオブジェクト
を生成する。オブジェクト指向技術が本来的に備えてい
る動的結合を利用することで、変換前及び変換後のコー
ド呼び出しを切り換えることが可能である。
【0067】ここで、オブジェクト・ファクトリ23を
通じて実際のオブジェクトの生成を行うという点が重要
であることを理解されたい。何故ならば、アプリケーシ
ョン・プログラムは、個々の機器で動的に生成されたク
ラス(Local_Impl)に関する知識なしに、そ
のインターフェース(SomeMetadataNod
eSchema)を指定するだけで、実際のインスタン
スを生成することができるからである。したがって、個
々の機器の実現方式に依存することなしに、アプリケー
ション・プログラムを記述することが可能であり、プロ
グラム開発が容易化しコスト削減にもつながる。
【0068】また、本実施例では、オブジェクト・ファ
クトリ23は、Standard_Implのインスタ
ンスを生成する能力も備えているので、目的に応じて異
なる実装クラスのインスタンスを生成して、使い分ける
ことができる。例えば、メタデータをローカルなデータ
ベースに格納するときには、システム1の実現方式に合
わせてコード変換されたLocal_Implのインス
タンスを生成すればよい。また、異なる機種間でメタデ
ータを転送するときには標準的な実装クラスであるSt
andard_Implのインスタンスを生成すればよ
い。
【0069】《注釈》 *:このような変換処理を行う具体例として、例えばe
Xcelon社のObjectStore PSE f
or Java(http://www.odi.com/objectstore/)
などのオブジェクト指向データベース・エンジンが挙げ
られる。該製品には、Javaオブジェクトをデータベ
ースに格納できるように、クラスファイルに対してかか
る変換処理を適用するツールが附属している。
【0070】[追補]以上、特定の実施例を参照しなが
ら、本発明について詳解してきた。しかしながら、本発
明の要旨を逸脱しない範囲で当業者が該実施例の修正や
代用を成し得ることは自明である。
【0071】上述した本明細書では、メタデータを利用
したメディアデータへのアクセスに本発明を適用した場
合を例にとって説明したが、本発明の要旨は必ずしもこ
れに限定されない。すなわち、Javaオブジェクトを
データベースへ格納する処理一般に対して本発明を適用
することができる。
【0072】また、本発明における「動的にクラスの変
換処理を行い、各プラットフォームの実装に合わせたコ
ードを生成する」という処理は、複数の異なるプラット
フォームにおいて同一のコードを実行させたい場合一般
に適用することができる。この際、変換の対象となるコ
ードは、特にJavaバイト・コードには限定されな
い。その他の中間コード、あるいはプロセッサが直接解
釈し実行することができるネイティブ・コードであって
も、本発明は同様の作用効果を奏することを充分理解さ
れたい。
【0073】要するに、例示という形態で本発明を開示
してきたのであり、限定的に解釈されるべきではない。
本発明の要旨を判断するためには、冒頭に記載した特許
請求の範囲の欄を参酌すべきである。
【0074】
【発明の効果】以上詳記したように、本発明によれば、
プロセッサあるいはバイト・コード・インタープリタな
どを内蔵して、与えられたプログラム・コードを解釈し
実行することができる、優れたプログラム実行環境を提
供することができる。
【0075】また、本発明によれば、各機器のアーキテ
クチャに最適化したコードを生成して高速処理を行うこ
とができる、優れたプログラム実行環境を提供すること
ができる。
【0076】また、本発明によれば、アプリケーション
・プログラムからの要求に応じて最適な実装クラスを選
択して、そのインスタンスを生成することができる、優
れたプログラム実行環境を提供することにある。
【0077】本発明に係るアプリケーション環境によれ
ば、各システム毎に相違する実現形式に依存したコード
部分を実行コードから取り除くことによって、単一のコ
ードをアーキテクチャが異なる複数の機器上で実行する
ことが可能になる。また、各機器のアーキテクチャに最
適化したコードを新たに生成することで、より高速に処
理を行うことができる。
【0078】また、本発明に係るアプリケーション環境
によれば、機器アーキテクチャに最適化するために変換
の対象となるコードをより明確に指定し又は検出するこ
とが可能となる。また、オブジェクト指向技術が標準的
に備えている動的結合を利用することで、特別な機構を
用意することなしに変換前及び変換後のコード呼び出し
を切り換えることが可能である。
【0079】また、メタデータをデータベースに格納す
るなどに用途に本発明を適用した場合には、異なるデー
タベース・エンジンを採用した機器であっても、プログ
ラムを書き換えることなしに、同じようにメタデータを
扱うことが可能になる。また、機器を実装する機器製造
・販売業者にとっては、採用するデータベース・エンジ
ンの選択の幅が増し、他社に対する差別化を図ることが
できる。
【図面の簡単な説明】
【図1】図1は、本発明の実施に供されるデータ処理シ
ステム1の構成を模式的に示した機能ブロック図であ
る。
【図2】データ処理システム1において処理されるJa
vaコードのクラス図である。
【図3】SomeMetadataNodeSchem
aのソース・コードを示した図である。
【図4】Standard_Implのソース・コード
を示した図である。
【図5】関数getSomeAttribute()及
びsetSomeAttributeをバイト・コード
にコンパイルした結果を示した図である。
【図6】クラス・コンバータ22によってStanda
rd_Impleのバイト・コードから直接生成された
Local_Implのバイト・コードの一部を示した
図である。
【図7】図1に示した各機能ブロック間で協働的に行わ
れる処理手順を示した図である。
【符号の説明】
1…データ処理システム 10…Javaランタイム・システム 11…クラス・ローダ/ベリファイヤ 12…実行エンジン 20…アプリケーション環境 21…アプリケーション・ローダ 22…クラス・コンバータ 23…オブジェクト・ファクトリ

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】プロセッサあるいはバイト・コード・イン
    タープリタなどを内蔵して、与えられたプログラム・コ
    ードを解釈し実行するデータ処理システムであって、 実行コードを読み込むとともに、読み込んだ実行コード
    のうち前記システムの実現方式に依存するコードを検出
    するアプリケーション・ローダと、 前記システムの実現方式に依存するコードを該実現方式
    に合わせて変換して、新たなコードを生成するクラス・
    コンバータと、 前記クラス・コンバータによって生成されたコードと元
    のコードとを組にして登録するとともに、コード実行時
    において組にして登録されたコードのうち目的に応じて
    適切な方を選択して呼び出すオブジェクト・ファクトリ
    と、を具備することを特徴とするデータ処理システム。
  2. 【請求項2】前記アプリケーション・ローダは、通信又
    は放送など所定の伝送媒体経由で、あるいは記録媒体経
    由で実行コードを読み込むことを特徴とする請求項1に
    記載のデータ処理システム。
  3. 【請求項3】前記オブジェクト・ファクトリは、実行コ
    ードをシステム内に格納するときには前記クラス・コン
    バータによって生成されたコードを呼び出し、システム
    外部に転送するときには元のコードを呼び出すことを特
    徴とする請求項1に記載のデータ処理システム。
  4. 【請求項4】プロセッサあるいはバイト・コード・イン
    タープリタなどを内蔵して、オブジェクト指向プログラ
    ム・コードを解釈し実行するデータ処理システムであっ
    て、 クラス単位で処理可能な実行コードを読み込むととも
    に、読み込んだ実行コードの各クラスのスーパークラス
    若しくはそのクラスが実装しているインターフェースに
    基づいて前記システムの実現方式に対する依存性をクラ
    ス単位で判定するアプリケーション・ローダと、 前記システムの実現方式に依存するコードの元のクラス
    と同じスーパークラスを継承した若しくは同じインター
    フェースを実装して、前記システムの実現方式に合わせ
    た新たなクラスを生成するクラス・コンバータと、 前記クラス・コンバータにおいて変換の対象となった元
    のクラスと、前記システムの実現方式への依存性判定に
    用いられたスーパークラス若しくはインターフェース
    と、前記クラス・コンバータによって生成された新たな
    クラスとを組にして登録するとともに、コード実行時に
    おいて指定されたスーパークラス若しくはインターフェ
    ースに従って、元のクラスのオブジェクト又は新たに生
    成されたクラスのオブジェクトを選択的に生成するオブ
    ジェクト・ファクトリと、を具備することを特徴とする
    データ処理システム。
  5. 【請求項5】前記アプリケーション・ローダは、通信又
    は放送など所定の伝送媒体経由で、あるいは記録媒体経
    由で実行コードを読み込むことを特徴とする請求項4に
    記載のデータ処理システム。
  6. 【請求項6】前記オブジェクト・ファクトリは、実行コ
    ードをシステム内に格納するときには新たに生成された
    クラスのオブジェクトを生成し、システム外部に転送す
    るときには元のクラスのオブジェクトを生成することを
    特徴とする請求項4に記載のデータ処理システム。
  7. 【請求項7】プロセッサあるいはバイト・コード・イン
    タープリタなどを内蔵して、与えられたプログラム・コ
    ードを解釈し実行するデータ処理方法であって、(a)
    実行コードを読み込むステップと、(b)読み込んだ実
    行コードのうちシステムの実装に依存するコードを検出
    するステップと、(c)システムの実現方式に依存する
    コードを該実現方式に合わせて変換して、元のコードと
    は異なる処理を行う新たなコードを生成するステップ
    と、(d)前記ステップ(c)によって生成されたコー
    ドと元のコードとを組にして登録するステップと、
    (e)コード実行時において組にして登録されたコード
    のうち目的に応じて適切な方を選択して呼び出すステッ
    プと、を具備することを特徴とするデータ処理方法。
  8. 【請求項8】前記ステップ(e)では、実行コードをシ
    ステム内に格納するときには前記クラス・コンバータに
    よって生成されたコードを呼び出し、システム外部に転
    送するときには元のコードを呼び出すことを特徴とする
    請求項7に記載のデータ処理方法。
  9. 【請求項9】プロセッサあるいはバイト・コード・イン
    タープリタなどを内蔵して、オブジェクト指向プログラ
    ム・コードを解釈し実行するデータ処理方法であって、
    (a)クラス単位で処理可能な実行コードを読み込むス
    テップと、(b)読み込んだ実行コードの各クラスのス
    ーパークラス若しくはそのクラスが実装しているインタ
    ーフェースに基づいて、システムの実現方式に対する依
    存性をクラス単位で判定するステップと、(c)システ
    ムの実現方式に依存するコードの元のクラスと同じスー
    パークラスを継承した若しくは同じインターフェースを
    実装して、前記システムの実現方式に合わせた新たなク
    ラスを生成するステップと、(d)前記ステップ(c)
    において変換の対象となった元のクラスと、システムの
    実現方式への依存性判定に用いられたスーパークラス若
    しくはインターフェースと、前記ステップ(d)によっ
    て生成された新たなクラスとを組にして登録するステッ
    プと、(e)コード実行時において指定されたスーパー
    クラス若しくはインターフェースに従って、元のクラス
    のオブジェクト又は新たに生成されたクラスのオブジェ
    クトを選択的に生成するステップと、を具備することを
    特徴とするデータ処理方法。
  10. 【請求項10】前記ステップ(e)では、実行コードを
    システム内に格納するときには新たに生成されたクラス
    のオブジェクトを生成し、システム外部に転送するとき
    には元のクラスのオブジェクトを生成することを特徴と
    する請求項9に記載のデータ処理方法。
  11. 【請求項11】プロセッサあるいはバイト・コード・イ
    ンタープリタなどを用いて与えられたプログラム・コー
    ドを解釈し実行するデータ処理をコンピュータ・システ
    ム上で実行するように記述されたコンピュータ・ソフト
    ウェアをコンピュータ可読形式で物理的に格納したソフ
    トウェア記憶媒体であって、前記データ処理は、(a)
    実行コードを読み込むステップと、(b)読み込んだ実
    行コードのうちシステムの実装に依存するコードを検出
    するステップと、(c)システムの実現方式に依存する
    コードを該実現方式に合わせて変換して、元のコードと
    は異なる処理を行う新たなコードを生成するステップ
    と、(d)前記ステップ(c)によって生成されたコー
    ドと元のコードとを組にして登録するステップと、
    (e)コード実行時において組にして登録されたコード
    のうち目的に応じて適切な方を選択して呼び出すステッ
    プと、を具備することを特徴とするソフトウェア記憶媒
    体。
  12. 【請求項12】前記ステップ(e)では、実行コードを
    システム内に格納するときには前記クラス・コンバータ
    によって生成されたコードを呼び出し、システム外部に
    転送するときには元のコードを呼び出すことを特徴とす
    る請求項11に記載のソフトウェア記憶媒体。
  13. 【請求項13】プロセッサあるいはバイト・コード・イ
    ンタープリタなどを用いて与えられたオブジェクト指向
    プログラム・コードを解釈し実行するデータ処理をコン
    ピュータ・システム上で実行するように記述されたコン
    ピュータ・ソフトウェアをコンピュータ可読形式で物理
    的に格納したソフトウェア記憶媒体であって、前記デー
    タ処理は、(a)クラス単位で処理可能な実行コードを
    読み込むステップと、(b)読み込んだ実行コードの各
    クラスのスーパークラス若しくはそのクラスが実装して
    いるインターフェースに基づいて、システムの実現方式
    に対する依存性をクラス単位で判定するステップと、
    (c)システムの実現方式に依存するコードの元のクラ
    スと同じスーパークラスを継承した若しくは同じインタ
    ーフェースを実装して、前記システムの実現方式に合わ
    せた新たなクラスを生成するステップと、(d)前記ス
    テップ(c)において変換の対象となった元のクラス
    と、システムの実現方式への依存性判定に用いられたス
    ーパークラス若しくはインターフェースと、前記ステッ
    プ(d)によって生成された新たなクラスとを組にして
    登録するステップと、(e)コード実行時において指定
    されたスーパークラス若しくはインターフェースに従っ
    て、元のクラスのオブジェクト又は新たに生成されたク
    ラスのオブジェクトを選択的に生成するステップと、を
    具備することを特徴とするソフトウェア記憶媒体。
  14. 【請求項14】前記ステップ(e)では、実行コードを
    システム内に格納するときには新たに生成されたクラス
    のオブジェクトを生成し、システム外部に転送するとき
    には元のクラスのオブジェクトを生成することを特徴と
    する請求項13に記載のソフトウェア記憶媒体。
JP2000122932A 2000-04-24 2000-04-24 データ処理システム及びデータ処理方法、並びに、ソフトウェア記憶媒体 Pending JP2001306326A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000122932A JP2001306326A (ja) 2000-04-24 2000-04-24 データ処理システム及びデータ処理方法、並びに、ソフトウェア記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000122932A JP2001306326A (ja) 2000-04-24 2000-04-24 データ処理システム及びデータ処理方法、並びに、ソフトウェア記憶媒体

Publications (1)

Publication Number Publication Date
JP2001306326A true JP2001306326A (ja) 2001-11-02

Family

ID=18633348

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000122932A Pending JP2001306326A (ja) 2000-04-24 2000-04-24 データ処理システム及びデータ処理方法、並びに、ソフトウェア記憶媒体

Country Status (1)

Country Link
JP (1) JP2001306326A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014529832A (ja) * 2011-09-07 2014-11-13 マイクロソフト コーポレーション 変換コンテンツ・アウェア・データー・ソース管理

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014529832A (ja) * 2011-09-07 2014-11-13 マイクロソフト コーポレーション 変換コンテンツ・アウェア・データー・ソース管理
JP2017215999A (ja) * 2011-09-07 2017-12-07 マイクロソフト テクノロジー ライセンシング,エルエルシー 変換コンテンツ・アウェア・データー・ソース管理

Similar Documents

Publication Publication Date Title
JP4165683B2 (ja) 複合データ構造の永続的表現の生成
US6526570B1 (en) File portability techniques
US7152090B2 (en) Metadata-aware enterprise application integration framework for application server environment
US6704750B2 (en) Middleware and media data audiovisual apparatus using middleware
TWI556170B (zh) 將作業系統之原始應用程式介面投射至其它程式語言(二)
RU2364918C2 (ru) Средства сопряжения типов
KR101795844B1 (ko) 런타임 시스템
US7584462B2 (en) System for optimizing application start-up
US10853096B2 (en) Container-based language runtime loading an isolated method
US6421681B1 (en) Framework for representation and manipulation of record oriented data
US8965890B2 (en) Context sensitive media and information
MXPA06002683A (es) Metodo y sistema para crear, almacenar, manejar y cosumir datos especificos de cultura.
JP2014525622A (ja) オペレーティングシステムのネイティブアプリケーションプログラミングインターフェイスのメタデータを用いた記述
US20070294311A1 (en) Application program interface to manage media files
JPH10320248A (ja) 実行時ルックアップ及び読出し専用アクセス用バイナリイメージへファイルを埋込むための装置及びその方法
US7490315B2 (en) Persistent representations for complex data structures as interpreted programs
US5970250A (en) System, method, and computer program product for scoping operating system semanticis in a computing environment supporting multi-enclave processes
EP1046985A2 (en) File portability techniques
JP2001306326A (ja) データ処理システム及びデータ処理方法、並びに、ソフトウェア記憶媒体
Ogel et al. Supporting efficient dynamic aspects through reflection and dynamic compilation
KR100703285B1 (ko) 메시르를 이용한 교환 시스템의 동적 서비스를 지원하는방법