(57)【特許請求の範囲】
【請求項１】
トランスポート・ストリーム内にバイトコードを配信するための方法であって、
受信ステーションのクライアントに送信するためのメディア・データをトランスポート・ストリームを介して取得するステップと、
それぞれが第一次パケット・ヘッダと第一次パケット・データを有する、少なくとも１つの第一次パケットに、前記メディア・データを分割するステップと、
前記少なくとも１つの第一次パケットを、固定長の複数の第二次パケットに分割するステップと、
前記第一次パケット・ヘッダにバイトコードを埋め込むステップと、
前記メディア・データから前記バイトコードを分離するため、前記受信ステーションで前記トランスポート・ストリームをデコードするステップと、
前記受信ステーションにおいて前記メディア・データの再生を制御するために前記バイトコードを使用するステップと  を含み、
前記複数の二次パケットのそれぞれは、トランスポート・ストリームのヘッダ部とペイロード部を有し、前記トランスポート・ストリームは前記複数の二次パケットを有することを特徴とする方法。
【請求項２】
前記トランスポート・ストリームのヘッダは、前記バイトコードが埋め込まれた適応フィールド部と、ヘッダ部を有することを特徴とする請求項１記載の方法。
【請求項３】
前記トランスポート・ストリームのペイロード部は、前記バイトコードが埋め込まれているプライベート・ストリーム・フィールドを有することを特徴とする請求項１または２に記載の方法。
【請求項４】
前記メディア・データの再生を制御するために必要なバイトコードを取得するステップと、
前記バイトコードを複数のバイトコード・パケットに分割するステップと、を有する方法であって、
前記複数のバイトコード・パケットのそれぞれは、バイトコード・ヘッダとクラス・ファイルを含むことを特徴とする請求項１乃至３のいずれかに記載の方法。
【請求項５】
前記バイトコードを複数のバイトコード・パケットに分割するステップを有し、前記複数のバイトコード・パケットのそれぞれは、前記バイトコード・ヘッダとクラス・ファイルを有し、前記バイトコードヘッダは、バージョン識別情報と、デコーダ用の同調ポイントと、前記クラス・ファイルに関する再伝送時間とを含み、前記第一次パケットのヘッダ部は、前記少なくとも１つの第一次パケットのそれぞれに関する解釈情報を有することを特徴とする請求項４に記載の方法。
【請求項６】
前記解釈情報は、
前記ヘッダの長さと、
バージョン識別情報と、
前記少なくとも１つの第一次パケット内のデータのタイプと、
複数のタイム・スタンプと、
前記少なくとも１つの第一次パケットのサイズと、
使用された圧縮タイプと、
使用されたセキュリティ・スキームと、
エラー訂正方法と  を含むことを特徴とする請求項５に記載の方法。
【請求項７】
プロセッサと、メモリと、前記プロセッサによって実行されるコードを有し、トランスポート・ストリームを介して受信ステーションのクライアントにバイトコードを配信するように構成された伝送ステーションにおけるコンピュータと、
受信ステーションにおけるコンピュータと  を備え、
前記伝送ステーションにおけるコンピュータは、
メディア・データを、それぞれが第一次パケットのヘッダ部と第一次パケット・データを有する、少なくとも１つの第一次パケットに分割する手段と、
前記少なくとも１つの第一次パケットのそれぞれを、固定長の複数の第二次パケットに分割するための手段であって、前記複数の第二次パケットは前記トランスポート・ストリームのヘッダ部とペイロード部を有し、前記トランスポート・ストリームは前記複数の第二次パケットを有する手段と、
前記第一次パケットの前記ヘッダでバイトコードを埋め込む手段と  を備え、
前記受信ステーションにおけるコンピュータは、
前記メディア・データから前記バイトコードを分離するために、受信ステーションで前記トランスポート・ストリームをデコーディングするための手段と、
前記受信ステーションで前記メディア・データの再生を制御するために前記バイトコードを使用する手段と  を備えることを特徴とするシステム。
【請求項８】
前記トランスポート・ストリームのヘッダは、前記バイトコードが埋め込まれた適応フィールド部とヘッダー部を有することを特徴とする請求項７に記載のシステム。
【請求項９】
前記トランスポート・ストリームのペイロード部は、前記バイトコードが埋め込まれているプライベート・ストリーム・フィールドを有することを特徴とする請求項７または８に記載のシステム。
【請求項１０】
トランスポート・ストリームを介して受信ステーションにいるクライアントへの送信用のメディア・データを取得する手段と、
前記メディア・データの再生制御に必要なバイトコードを取得する手段と、
前記バイトコードを複数のバイトコード・パケットに分割する手段と  を含み、
前記複数のバイトコード・パケットはバイトコード・ヘッダとクラス・ファイルを有することを特徴とする請求項７乃至９のいずれかに記載のシステム。
【請求項１１】
前記第一次パケットのヘッダ部は、前記少なくとも１つの第一次パケットのそれぞれに関する解釈情報を有し、前記システムは前記バイトコードを複数のバイトコード・パケットに分割する手段をさらに有し、前記複数のバイトコード・パケットのそれぞれはバイトコード・ヘッダとクラス・ファイルを有し、前記バイトコード・ヘッダはバージョン識別情報、デコーディングするための同調ポイント、前記クラス・ファイルの再伝送時間をさらに含むことを特徴とする請求項１０に記載のシステム。
【請求項１２】
前記解釈情報は、
前記ヘッダの長さと、
バージョン識別子と、
前記少なくとも１つの第一次パケット内のデータのタイプと、
複数のタイム・スタンプと、
前記少なくとも１つの第一次パケットのサイズと、
使用された圧縮のタイプと、
使用されたセキュリティ・スキームと、
エラー訂正方法と  を含むことを特徴とする請求項１１に記載のシステム。
【請求項１３】
トランスポート・ストリーム内にバイトコードを配信するために、埋め込まれたコンピュータ可読プログラム・コードを有するコンピュータ使用可能な媒体を備えるコンピュータ・プログラムであって、前記コンピュータ可読プログラム・コードはコンピュータをして、
トランスポート・ストリームを介して受信ステーションのクライアントに送るためのメディア・データを取得させ、
第一次パケット・ヘッダと第一次パケット・データを含んだ、少なくとも１つの第一次パケットに前記メディア・データを分割させ、
前記少なくとも１つの第一次パケットを固定長の複数の第二次パケットに分割させ、
前記第一次パケットのヘッダにバイトコードを埋め込ませ、
前記メディア・データから前記バイトコードを分離するために前記受信ステーションで前記トランスポート・ストリームをデコードさせ、
前記バイトコードを使用して、前記受信ステーションで前記メディア・データの再生制御を行わせるように構成され、
前記第二次パケットはトランスポート・ストリームのヘッダ部とペイロード部を有し、前記トランスポート・ストリームは前記複数の第二次パケットを有することを特徴とするコンピュータ・プログラム。
【請求項１４】
前記トランスポート・ストリームのヘッダは、前記バイトコードが埋め込まれた適応フィールド部およびヘッダ部を有することを特徴とする請求項１３記載のコンピュータ・プログラム。
【請求項１５】
前記トランスポート・ストリームのペイロード部は、前記バイトコードが埋め込まれたプライベート・ストリーム・フィールドを有することを特徴とする請求項１３または１４記載のコンピュータ・プログラム。
【請求項１６】
前記コンピュータ可読プログラムコードは、さらに、コンピュータをして、
メディア・データの再生制御に必要なバイトコードを取得させ、
前記バイトコードを複数のバイトコード・パケットに分割させるように構成され、
前記複数のバイトコード・パケットのそれぞれは、バイトコード・ヘッダとクラス・フファイルを有することを特徴とする請求項１３乃至１５のいずれかに記載のコンピュータ・プログラム。
【請求項１７】
前記コンピュータ可読プログラムコードは、コンピュータをして、それぞれがバイトコード・ヘッダとクラス・ファイルを有する前記複数のバイトコード・パケットに前記バイトコードを分割させるようにさらに構成され、前記バイトコード・ヘッダはバージョン識別情報と、デコーダのための同調ポイントと、前記クラス・ファイルのための再伝送時間を含み、前記第一次パケット・ヘッダは前記少なくとも１つの第一次パケットのそれぞに関する解釈情報を有することを特徴とする請求項１６に記載のコンピュータ・プログラム。
【請求項１８】
前記解釈情報は  前記ヘッダの長さと、
バージョン識別情報と、
前記少なくとも１つの第一次パケット内のデータのタイプと、
複数のタイム・スタンプと、
前記少なくとも１つの第一次パケットのサイズと、
使用された圧縮タイプと、
使用されたセキュリティ・スキームと、
エラー訂正方法と  を含むことを特徴とする請求項１７に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【０００１】
発明の背景
Ａ．発明の分野
本発明は、データ通信の分野に関する。本件特許書類の開示の一部は、著作権保護に係る資料を含んでいる。
【０００２】
著作権者は、特許商標庁の書類あるいは記録として現れる場合であれば、特許書類もしくは特許の開示の第三者によるそのままの複製を拒絶する理由を持たないが、それ以外は、いかなる場合であってもすべての権利を留保する。Ｓｕｎ、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ、Ｓｕｎのロゴ、Ｓｏｌａｒｉｓ、ＳＰＡＲＣ、「Ｗｒｉｔｅ  Ｏｎｃｅ，  Ｒｕｎ  Ａｎｙｗｈｅｒｅ」、ＪａｖａＯＳ、ＪａｖａＳｔａｔｉｏｎおよびすべてのＪａｖａベースの商標ならびにロゴは、米国ならびにその他諸外国におけるＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ（サン・マイクロシステムズ）社の商標もしくは登録商標である。
【０００３】
Ｂ．背景技術
インターネットの用途の１つに、ユーザに向けたメディア情報（動画またはサウンド・ファイル等）の配信がある。現在のメディア配信スキームに伴う１つの問題は、メディア・データが送られている間における別のデータの配信が困難なことが挙げられる。メディア・データとその他のデータ（コントロール・データ等）を同時に送るプロセスは「コンカレント（同時）配信」と呼ばれ、場合によってはそれが望ましいとされる。現在のところ、メディア・データおよびコントロール・データのコンカレント配信に適したスキームは存在しない。メディア・データおよびコントロール・データのコンカレント配信の実施に関連する問題は、メディア配信システムを概観することによって理解することができる。
【０００４】
メディア配信
マルチメディア・アプリケーションにおいては、ビデオまたはオーディオ情報等のメディア・データがサーバ・コンピュータからクライアント・コンピュータ（たとえばユーザの自宅あるいはオフィスにあるコンピュータ）に「トランスポート・ストリーム」を介して伝達される。トランスポート・ストリームは、一連のバーストまたはメディア・データのパケットからなる。メディア・データは、伝送の前に、伝送に適したフォーマットに変換することによって準備される。メディア・トランスポート・ストリームとして伝送するために行うメディア・データ（たとえばオーディオ、ビデオ等）の準備には、多数のスキームが存在する（たとえば、ＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４等のＭｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ；モーション・ピクチャ・エキスパート・グループ）標準）。
【０００５】
メディア・データは、しばしば「タイム・アウェア（time aware：時間が知覚に影響を与える）」または「タイム・センシティブ（time sensitive：時間の影響を受けやすい）」データであると言われる。これは、所定のレートでおよび／または所定の時間にデータが利用できることが重要であり、あるいは要求されるためである。たとえば、ビデオ・ストリームを鑑賞する場合を考えると、表示されているビデオ・データにギャップが生じたり、途切れるのを防止するために、必要時に新しいビデオ・フレームが使用できることが重要になる。たとえば、動画データの伝送される速度が非常に遅いときには、クライアント・コンピュータが新しい動画データを待っている間、表示されている動画がフリーズし、あるいはブランクを生じる。同様にオーディオ・データに関しても、新しいオーディオ・データが連続して提供されなければ、再生の間に音の途切れを招く。これらの途切れは、オーディオの再生時の無音を生じることがあり、サウンドのクリッピングつまり音および言葉の抜けの原因となる。（タイム・アウェア・データがメディア・データに限られないことに注意する必要がある。タイム・アウェア・データは、そのデータの使用に関連するタイミングを表す追加情報とともに運ばれるデータである。たとえば、タイム・アウェア・データに、データを処理するべきデッドラインを示したタイム・スタンプを含めることができる。）
【０００６】
状況によっては、メディア・データの再生を補助するため、もしくはメディア・データの再生をコントロールするためにコントロール・アプリケーションが求められる。いくつかのケースにおいては、その種のコントロール・アプリケーションが（Ｊａｖａ（商標）プログラミング言語アプレットまたはアプリケーションのような）アプレットまたはアプリケーションになる。このアプレットは、バイトコードとしてサーバからユーザ・コンピュータに伝送され、ユーザ・コンピュータは、メディア・データの再生をコントロールするためにこのアプレットを使用する。バイトコードまたはその他のシリアル化されたデータまたはオブジェクトは、メディア情報と同時にクライアントに対する配信が求められることがある。
【０００７】
バイトコード・インストラクションとメディア・データを同時に配信するための効率的なメカニズムは、現在のところ存在しない。通常、バイトコード・データは、必要なすべてのメディア・データが伝送された後に伝送される。ある種の環境、すなわちアプレットまたはコントロール・アプリケーションが使用可能になるとただちに処理される必要がある環境においては、これでは遅すぎる。従来技術における１つの解決策は、メディアまたはタイム・アウェア・データの伝送に先行してコントロール・アプリケーションを最初に送る方法である。しかしながらこれは、メディア・データの再生に望ましくない遅延を招くことになる。ユーザは、ビデオ・データを見ることを期待しているが、コントロール・データが受信されるまで待たなければならない。この遅延は望ましくない。
【０００８】
このように、バイトコード・インストラクションをメディア情報に先行して、あるいはそれに続いて伝送するのではなく、メディア・データと同時に伝送することが求められている。
【０００９】
発明の要約
トランスポート・ストリームにバイトコード・データを埋め込む方法および装置を開示する。本発明の実施態様は、トランスポート・ストリームを介してメディア情報を受信しているユーザに対して、同時にＪａｖａ（商標）バイトコードを（クラス・ファイル内において）使用可能にする機能を提供する。バイトコード情報は、トランスポート・ストリーム内に割り当てられるスペースの中、もしくはメディア・データを搬送するパケットの中に埋め込まれる。
【００１０】
本発明の一実施態様においては、メディア・データが、パケット化エレメンタリ・ストリーム（ＰＥＳ）パケットと呼ばれる構造化パケットにグループ化される。バイトコード・データは、各ＰＥＳパケット内の予め決められたスペース内に埋め込まれる。本発明の一実施態様においては、この決められたスペースがＰＥＳパケットのヘッダ・セグメント内に割り当てられている。別の実施態様においては、バイトコード・インストラクションがＰＥＳパケットのプライベート・ストリーム・セグメントの中に埋め込まれる。
【００１１】
別の実施態様においては、バイトコード・データの伝送がプライベート・ストリーム・セグメント内でなされ、バイトコード・データの再伝送がＰＥＳパケットの別の領域においてなされる。さらに別の実施態様においては、バイトコード・データの伝送が適応フィールド内においてなされ、ＰＥＳヘッダのプライベート・データとして再伝送データが送られる。
【００１２】
本発明とともに使用される１つのトランスポート・ストリームは、ＭＰＥＧ−２トランスポート・ストリームであり、ＰＥＳパケットをトランスポートする構造化パケットを含む。一方、これらのトランスポート・ストリーム・パケットは、それら自体の中に、トランスポート・ストリーム内のスペースに埋め込まれたバイトコード・データを有している。本発明の実施態様の１つにおいては、トランスポート・ストリーム・ヘッダまたはトランスポート・ストリーム・ペイロード・セグメント内にバイトコードを埋め込むことができる。
【００１３】
本発明の実施態様においては、この発明の方法による情報の埋め込みは、ＭＰＥＧ−２準拠デコーダが、当該デコーダによる埋め込みバイトコード情報の利用の有無とは無関係に、このストリームを使用することができるように行われる。また、トランスポート・ストリームが、長さならびに周波数という点に関してビット・レートにおける最小の変更を伴って伝送され、また許容最大帯域幅を超えることもない。さらに本発明の実施態様は、デコーダがデコーディングおよびバイトコード情報の提供を開始できる同調ポイントを決めることができる。
【００１４】
発明の詳細な説明
本発明は、トランスポート・ストリーム内にバイトコード・データを埋め込むための方法および装置を提供する。以下の説明においては、本発明のより完全な理解に資するべく、各種の具体的な詳細を示している。しかしながら、当業者であれば、これらの具体的な詳細から離れても本発明を実施し得ることを認識されるであろう。一方、周知の特徴については、不必要に本発明の不明瞭化を招くことのないように詳細な説明を省略している。
【００１５】
本発明は、クライアント・コンピュータ・システムに対するメディア・データの伝送との関連から説明されている。しかしながらこれは、例示のみを目的としたものである。本発明は、セットトップ・ボックス、ＰＤＡ（パーソナル・ディジタル・アシスタント）、スマート・アプライアンス、テレコミュニケーション・デバイス、財務端末、あるいはこの種のあらゆるデバイスを含めたデータの受け取りが可能な任意のデバイスに等しく適用することができる。それに加えて本発明は、メディア・データに限定されることなく、電子商取引に関連するデータを含めて任意形式のデータに等しく適用することができる。
【００１６】
メディア・データ・トランスポート・ストリーム内におけるバイトコード・データの伝送
本発明は、メディア・データ・トランスポート・ストリームを介したメディア・データおよびバイトコード・データのコンカレント配信を提供する。本発明は、トランスポート・ストリーム内の予め定めたスペース内にバイトコード・データを埋め込む。受信時には、このバイトコード・データを分離し、受信メディア・データの再生またはコントロールのサポートに使用することができる。
【００１７】
本件発明者等が知るところによれば、現存するメディア・ストリームの適時配信のためのテクニックとして、本件にも参照を通じて採り入れられている、１９９８年６月２６日に米国特許庁に出願された「ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＴＩＭＥＬＹ  ＤＥＬＩＶＥＲＹ  ＯＦ  Ａ  ＢＹＴＥＣＯＤＥ  ＡＮＤ  ＳＥＲＩＡＬＩＺＥＤ  ＯＢＪＥＣＴＳ  ＳＴＲＥＡＭ（バイトコードおよびシリアル化したオブジェクト・ストリームの適時配信のための方法および装置）」と題する米国特許出願第０９／１０５，９６３号がある。トランスポート・ストリーム内に埋め込まれたバイトコード情報を配信するための現在の方法は、前記出願に開示された方法によってタイム・アウェアとなったストリームを利用することができる。
【００１８】
本発明においては、伝送レートの周波数ならびに最大長の安定性が維持される態様において、バイトコードがトランスポート・ストリーム内に埋め込まれる。またトランスポート・ストリーム内におけるバイトコード情報の埋め込みは、デコーダが埋め込まれたバイトコード情報を利用できないときであっても、ストリームのメディア・データ部分のデコーディングが可能となる態様でなされる。本発明の一実施態様においては、バイトコード・データが、ＭＰＥＧ−２プロトコルを使用してエンコードされたメディア・トランスポート・ストリーム内に埋め込まれる。この実施態様について次に説明する。
【００１９】
ＭＰＥＧ−２
本発明は、任意タイプのトランスポート・ストリームに等しく適用可能であるが、例示目的から、ＭＰＥＧ−２トランスポート・ストリームの部分としての伝送に関連させて本発明の説明を行う。
【００２０】
図３は、ＭＰＥＧ−２トランスポート・ストリームを介してメディア・データの伝送が行われるプロセスを図示している。このストリームは、ヘッダおよびデータ・ストレージ・セグメントからなるトランスポート・ストリーム・パケット（ＴＳＰ）を包含する。トランスポート・ストリーム・ヘッダ（ＴＳヘッダ）とも呼ばれるそのヘッダには、オプションとして「適応フィールド」を含めることができる。トランスポート・ストリーム・ペイロード（ＴＳペイロード）とも呼ばれるデータ・ストレージ・セグメントは、パケット化エレメンタリ・ストリーム（ＰＥＳ）パケットから構成される。各ＰＥＳパケットは、ＰＥＳヘッダおよびエレメンタリ・ストリーム・データからなる。ヘッダにはペイロードが続くか否かを示すデリミタを含む。
【００２１】
トランスポート・ストリームについては、ＰＥＳパケットに変換され、ＴＳＰパケットにアッセンブルされるデータ・ソースの観点から図３に示した。参照番号１０００は、クライアント・コンピュータに伝送されるオーディオ、ビデオ、イメージまたはその他のデータ等のメディア・データのソースを表している。メディア・データ１０００は、パケット化エレメンタリ・ストリーム（ＰＥＳ）パケット１１００と呼ばれる１ないし複数の可変サイズ・パッケージ内に収められる。各ＰＥＳパケットは２つの領域、すなわちヘッダ領域およびデータ領域から構成される。ＰＥＳヘッダ１１１０に「エレメンタリ・ストリーム・データ」１１２０が続く。
【００２２】
ＰＥＳヘッダ領域
ヘッダ領域はＰＥＳヘッダ１１１０を含んでいる。ＰＥＳヘッダ１１１０は、データ領域にストアされているデータの属性を識別する。この属性には、データ型、伝送されるデータのサイズ、伝送されるデータの開始位置と終了位置、および可能性としては伝送されるデータの解釈に必要なその他のデータが含まれる。たとえば、一実施形態におけるＰＥＳヘッダ１１１０は、ヘッダの長さ、バージョン、クラスであるかオブジェクトであるかを示すフラグ、必要なクラスの数、「スタート・ローディング」タイムスタンプ、「ロード・バイ」タイムスタンプ、そのクラスのサイズ、使用されている圧縮のタイプ、使用されているセキュリティ・スキームのタイプ、使用されているエラー訂正のタイプ、その他のタイプ情報、クラス識別子（ＩＤ）の長さ、クラス識別子（ＩＤ）、必要な各クラスに関するクラスＩＤの長さ、および必要な各クラスに関するクラスＩＤを表す情報を包含することができる。
【００２３】
メディア・データ領域
エレメンタリ・ストリーム・データ１１２０の領域は、エレメンタリ・メディア・データを含んでいる。エレメンタリ・データ１０００は、ソース・データ（つまりオーディオ・データ、ビデオ・データ）の全体またはその一部からなる。このデータは、エレメンタリ・ストリーム・データ１１２０の解凍に必要な適切な識別情報をＰＥＳヘッダ１１１０に含めて（必要に応じて）圧縮することができる。
【００２４】
トランスポート・ストリーム
前述したようにトランスポート・ストリームは、ヘッダおよびデータ・ストレージ・セグメントを含んでなるＴＳＰパケットを含んでいる。ＭＰＥＧ−２トランスポート・ストリーム１２００は、多重化されたビット・ストリームであり、個別のＭＰＥＧ−２トランスポート・ストリーム・パケット（ＭＰＥＧ−２  ＴＳＰ）１２１０の集合である。各ＭＰＥＧ−２  ＴＳＰ  １２１０は、１８８バイトの固定長であり、トランスポート・ストリーム・ヘッダ（ＴＳヘッダ）１２２０およびそれに続くデータ・ストレージ・セグメント（ＴＳペイロード）１２３０を含んでいる。（ＴＳペイロードは、ＰＥＳパケット１１００からなる。）
【００２５】
ＴＳヘッダ１２２０
ＴＳヘッダは、ＭＰＥＧ−２  ＴＳＰ  １２１０を受け取り、デコードするために必要な情報を含んでいる。すべてのトランスポート・ストリーム・パケットは、トランスポート・ストリーム・ヘッダ（３２ビット）を伴って開始する。以下の表１に示すように、このトランスポート・ストリーム・ヘッダは、１３ビットのパケットＩＤ（ＰＩＤ）を含んでいる。ＰＩＤが単一のトランスポート・ストリーム・パケットは、唯一のエレメンタリ・ストリームのデータを搬送する。ＰＩＤは、プログラム固有情報（ＰＳＩ）テーブルを介してトランスポート・ストリーム・パケットに含まれるデータのコンテンツを識別する。トランスポート・ストリーム内で運ばれるＰＳＩテーブルは４つ、すなわち、プログラム結合テーブル（ＰＡＴ）、プログラム・マップ・テーブル（ＰＭＴ）、条件アクセス・テーブル（ＣＡＴ）、およびネットワーク情報テーブル（ＮＩＴ）である。これらのテーブルには、プログラムを逆多重化し、呈示するために必要な情報が含まれている。
【００２６】
ここで言うプログラムとは、同期して呈示されるべきエレメンタリ・ストリームの集合を意味する。ｐｒｏｇｒａｍ＿ｎｕｍｂｅｒ（プログラム・ナンバ）は、プログラムに関連付けされた数値ラベルである。プログラムの定義は、そのプログラムのプログラム・マップ・テーブルを含むトランスポート・ストリーム・パケットとして搬送される。プログラム・マップ・テーブルは、特に、各プログラムにいずれのＰＩＤが関連付けされているか、したがって、いずれのエレメンタリ・ストリームが関連付けされているかということについての情報を指定する。プログラム結合テーブルは、ｐｒｏｇｒａｍ＿ｎｕｍｂｅｒ（プログラム・ナンバ）とプログラム・マップ・テーブルの間の対応関係を与える。またＰＭＴは、各プログラムに関するＰＣＲ（プログラム・クロック・リファレンス）を搬送するトランスポート・ストリーム・パケットのＰＩＤを表示する。条件アクセス・テーブルは、スクランブル情報を含み、またネットワーク情報テーブルは、ネットワーク情報を提供することができるが、標準によるそのコンテンツの定義はなされていない。
【００２７】
【表１】
0004444510.tif 000002
【００２８】
適応フィールド
前述したように、トランスポート・ストリーム・ヘッダには、オプションにより適応フィールドを含めることができる。ＴＳＨ内の適応フィールド・コントロール・ビットは、適応フィールドおよび／またはペイロードの有無を表示する。適応フィールド・コントロール値を表２に示す。
【００２９】
【表２】
0004444510.tif 000003
【００３０】
適応フィールドが存在するときは、次の表４に示す記述が用いられる。
【００３１】
【表３】
0004444510.tif 000004
【００３２】
ＰＥＳパケット
ＰＥＳパケットは、次の表４に示す構造を有している。
【００３３】
【表４】
0004444510.tif 000005
【００３４】
プライベート・データ
ＭＰＥＧ−２トランスポート・ストリームは、ユーザ・データを搬送することができる。ユーザ・データは、パケットのトランスポート・ヘッダの適応フィールド内にプライベート・データとして詰め込むことができる。これは、プログラムのプライベート・エレメンタリ・ストリームとして配信が可能である。また、トランスポート・ストリームのＰＥＳヘッダ内のプライベート・データとして配信することもできる。さらにＭＰＥＧ−２では、プログラム結合テーブル内のプログラム・マップ・テーブルＰＩＤとしてＰＩＤ値を指定することによってトランスポート・ストリーム・パケット内においてプライベート・データを送ることを許容している。
【００３５】
本発明は、トランスポート・ストリーム内のプライベート・データを配信する能力を利用して、配信のためにバイトコードを埋め込む。
【００３６】
バイトコードの埋め込み
ＭＰＥＧ−２トランスポート・ストリームにおけるバイトコードおよびそのほかのユーザ・データのトランスポートは、パケットの異なるセグメント内にデータを埋め込むことによって達成される。実施形態には、（１）ＭＰＥＧ−２  ＴＳＰ  １２１０のＴＳヘッダ１２２０（つまりヘッダ）の適応フィールド１２２２にプライベート・データとしてデータを埋め込む方法、（２）ＭＰＥＧ−２  ＴＳＰ  １２１０のＴＳペイロード１２３０（つまりデータ・ストレージ・セグメント）内にプライベート・データとしてデータを埋め込む方法、（３）ＰＥＳパケット１１００のＰＥＳヘッダ１１１０内に含められるプライベート・エレメンタリ・ストリームとしてデータをトランスポートする方法、および、（４）以上列挙した方法の組み合わせを使用してデータをトランスポートする方法が含まれる。
【００３７】
１．適応フィールドによる方法
図４に示されるように、本発明の一実施形態においては、バイトコード・データをプライベート・データとしてＭＰＥＧ−２  ＴＳパケットの適応フィールド１２２２（ヘッダ１２２０に含まれている）にパッケージングすることができる。各パケット内のデータを最大化するためにＭＰＥＧ−２  ＴＳパケット１２１０は、ＴＳペイロード１２３０なしで送ることが認められいる。ａｄａｐｔａｔｉｏｎ＿ｆｉｅｌｄ＿ｃｏｎｔｒｏｌ（適応フィールド・コントロール）フィールドが’１０であれば、適応フィールド１２２２の長さが１８３バイトになる。このようなＭＰＥＧ−２  ＴＳパケット１２１０には、合計で１８１バイトのバイトコード・データを埋め込むことができる。この実施形態のパケット長が最大１８８バイトに固定されていることから、ビット・レートは一定であり、再伝送および同調時間は計算が可能である。
【００３８】
プログラムのＰＣＲ情報を擁しているＰＣＲ  ＰＩＤトランスポート・ストリーム・パケットは、最小公称レートを有する。これは、ストリーム内におけるこれらのＰＣＲの最多反復を定義する。しかしながら、バイトコード・データを搬送する追加のパケットをＰＣＲ  ＰＩＤパケットとして挿入することができる。これらのパケットは、同調時間およびそのバイトコード・データ・ストリームに必要な帯域幅を使用して計算されるレートで導入される。ａｄａｐｔａｔｉｏｎ＿ｆｉｅｌｄ＿ｃｏｎｔｒｏｌ（適応フィールド・コントロール）フラグが’１０のときは、ａｄａｐｔａｔｉｏｎ＿ｆｉｅｌｄ＿ｌｅｎｇｔｈの値が１８３になる（トランスポート・ストリーム・ヘッダの残りに４バイト、ａｄａｐｔａｔｉｏｎ＿ｆｉｅｌｄ＿ｌｅｎｇｔｈに１バイト）。他の適応フィールド・フラグ用に１バイトを、プライベート・データ長の指定に１バイトをそれぞれ使用するため、このパケットを用いて、合計で１８１バイトのバイトコード・データを送ることができる。
【００３９】
図４を再度参照すると、バイトコードのパケットはバイトコード・トランスポート・ヘッダ６０１とバイトコード・ストリーム・ヘッダ６０２を伴って開始する。本発明の一実施形態においては、バイトコード・トランスポート・ヘッダ６０１に次のデータを含ませることができる。
バージョン（Ｖ）（２ビット）
将来使用するための予約（２ビット）
次の同調時間（６４ビット）
次の再伝送時間（６０ビット）
【００４０】
「次の同調時間」は、デコーダがデコーディングを開始できる次の同調ポイントである。これは、セッションに必要なすべてのクラス／オブジェクトの再伝送の開始をマークする。ＭＰＥＧ−２実装においては、この時間が９０メガヘルツ・クロックのティックを単位として測定される。つまり、ティック数が、そのセッションの開始から測定される。オール・ゼロを用いれば、同調時間が未定義であることが示される。
【００４１】
「次の再伝送時間」は、クラス／オブジェクトに関する次の再伝送の時間である。この時間は、９０メガヘルツ・クロックのティックを単位として測定される。同調時間が未定義であることを示すときにはオール・ゼロを使用する。このフィールドは、３２ビットにそろえるために用いられる。これは、同一チャンネル内における次のＴＳペイロード１２３０の再伝送を反映している。正常なチャンネルと再伝送のチャンネルが異なる場合には、次の再伝送時間より早い時期において、同調のために正常チャンネル内におけるクラス・ファイルの再伝送を行ってもよい。
【００４２】
２．ペイロードによる方法
ユーザ・データは、プログラムのプライベート・エレメンタリ・ストリームとして送ることもできる。ＭＰＥＧ−２では、２つのプライベート・エレメンタリ・ストリーム・タイプ、すなわちＰｒｉｖａｔｅ＿Ｓｔｒｅａｍ１／Ｐｒｉｖａｔｅ＿Ｓｔｒｅａｍ２が許容されている。これらの違いは、これらのストリームで搬送するＰＥＳヘッダのフォーマットにある。
【００４３】
バイトコード・データは、Ｊａｖａ（ジャバ）ストリーム・ヘッダもしくはそのほかのプライベート・ストリームＰＥＳヘッダ等のその等価を伴うタイプＰｒｉｖａｔｅ＿Ｓｔｒｅａｍ２のプライベート・データとして送ることができる。図５に示されるように、本発明の別の実施形態においては、ＭＰＥＧ−２  ＴＳパケットのＴＳペイロード１２３０（データ・ストレージ・セグメント）内のデータとしてバイトコード・データをパッケージ化することができる。ＭＰＥＧ−２トランスポート・ストリーム１２００のＴＳペイロード１２３０セグメントにデフラグメントされるべきエレメンタリ・ストリーム・データ１１２０が不充分な場合には、それに代えてバイトコード・データを置換することができる。
【００４４】
３．ＰＥＳヘッダによる方法
特定ストリーム・タイプのエレメンタリ・ストリームに関するＭＰＥＧ−２  ＰＥＳフォーマットは、プライベート・データがＰＥＳヘッダ内で送られるためのフィールドを有している。ＰＥＳヘッダ内においてＰＥＳ＿ｐｒｉｖａｔｅ＿ｄａｔａ（ＰＥＳプライベート・データ）フラグがセットされているときには、各ＰＥＳヘッダ内におけるプライベート・データとしてバイトコード・データの１６バイトを送ることができる。ＰＥＳヘッダは、ＰＥＳパケットの先頭にのみ現れ、各ＰＥＳパケットは、複数のトランスポート・ストリーム・パケットに分割される。したがって、必ずしもそのＰＩＤのすべてのトランスポート・ストリーム・パケットがＰＥＳヘッダを搬送することにはならない。ユーザ・データを配信するこのテクニックは、送るべき情報があまり帯域幅を必要としないときに使用することができる。その場合、ビット・レートがわずかに変化することがある。
【００４５】
図８に示されるように、バイトコード・データは、ＰＥＳパケット１１００のＰＥＳヘッダ１１１０内に埋め込まれる。特定ストリーム・タイプのエレメンタリ・ストリームに関するＭＰＥＧ−２  ＰＥＳフォーマットは、ＰＥＳヘッダ１１１０内で送られるプライベート・データ用のフィールドを有している。ＰＥＳ＿ｐｒｉｖａｔｅ＿ｄａｔａ（ＰＥＳプライベート・データ）フラグがセットされているときには、各ＰＥＳヘッダ１１１０内におけるプライベート・データとしてバイトコード・データの１６バイトを送ることができる。
【００４６】
ＰＥＳヘッダ１１１０は、ＰＥＳパケット１１００の先頭にのみ現れる。ＰＥＳパケット１１００のフラグメント化の一部として、各パケットは、複数のＭＰＥＧ−２  ＴＳパケット１２１０に分割される。したがって、必ずしもそのＭＰＥＧ−２トランスポート・ストリーム１２００内のすべてのＭＰＥＧ−２  ＴＳパケット１２１０がＰＥＳヘッダ１１１０を搬送することにはならない。
【００４７】
４．伝送および再伝送のためのバイトコード・データ・トランスポートのハイブリッド方法
本発明の別の実施形態においては、上記の方法の組み合わせを使用することができる。組み合わせのテクニックは、最初に伝送されるバイトコード・データの配信レートもしくはメディア・データのそれに影響を与えることなく、バイトコード・データを再伝送する機会を与える。
【００４８】
トランスポート・ストリーム・マルチプレクサは、パケットが配信されるレートを一定に維持する。一定のビット・レートを維持するために、適応フィールド内のあらかじめ定義済みのスタッフィング・バイトを使用するバイトコート・データで、ＰＥＳパケットならびにその他の情報がトランスポート・ストリーム・パケットに詰め込まれる（スタッフィング）。スタッフィングは、トランスポート・ストリーム・パケットのペイロード・バイトを完全に満たさなければならないＰＥＳパケットが不充分な場合にも行われる。この方法においては、プライベート・ストリーム（前述）による方法を使用してバイトコード・データの正常な伝送が行われる一方、上記のスタッフィング・バイトを置き換えることによって、同一のバイトコード・データの再伝送を達成することができる。したがって、この再伝送が帯域幅の増加をもたらすことはなく、ビット・レートを一定に維持することが可能になる。
【００４９】
別のテクニックは、適応フィールドによる方法をバイトコード・データの正常な伝送に使用する。同じバイトコード・データの再伝送が、ＰＥＳヘッダ・プライベート・データとして送られる。正常な伝送は、適応フィールド内においてなされ、すべてのデータが固定レートで送られることが保証される。再伝送は、ＰＥＳヘッダを使用してなされ、その結果、帯域幅が極端に増加することはない。
【００５０】
別のスキームにおいては、プライベート・ストリーム・テクニックとＰＥＳヘッダ・テクニックが組み合わされる。バイトコード・データの再伝送は、上記のテクニックと同様にＰＥＳヘッダ・プライベート・データとしてなされるが、バイトコード・データの正常な伝送は、プライベート・ストリームによる方法を用いてなされる。
【００５１】
エラー訂正
上述のハイブリッド・スキームは再伝送の機能を提供する。トランスポート・ストリーム・パケットが欠落するとバイトコード・データが壊れることから、欠落したパケットを再提示するために再伝送手段が実装される。可能性のある１つのアプローチは、バック・チャンネルのない間に通常の間隔で全クラスの再伝送を行う方法に関する。これは、メディアの場合のランダム・アクセス・ポイントを助長する上で役立つ。しかしながら、クライアント数が非常に多いとき、あるいはクラス（またはオブジェクト）が非常に大きく、再伝送が妨げられるときに可能性を失う。
【００５２】
バック・チャンネルが存在するとき、サーバに対してパケットの欠落を通知することが可能になり、欠落したパケットを再伝送することが可能になる。信頼性のあるマルチキャスト・スキームが使用されているときは、サーバ以外の場所からデータを再伝送することも可能である。
【００５３】
部分的なパケットの欠落を回復するために有効な組み込み冗長性を伴うエラー回復スキームは数多く存在する。たとえば、フォワード・エラー訂正等のスキームを使用することができる。パケット欠落の問題は、ある種の信頼性のあるマルチキャスト・スキームを使用することによっても部分的に解決することが可能である。本発明の実施形態は、パケットの欠落を解決するための、任意のエラー回復あるいは任意の高信頼性マルチキャスト・アルゴリズムの使用を容易にする。
【００５４】
本発明によるこの方法のオペレーション手段を提供する環境は、ハードウエア・システム、ソフトウエア・コンポーネント、および以下の説明を考究することによって理解可能となるデータ構造を含む。ハードウエア環境、オブジェクト指向プログラミング、およびＪａｖａ（商標）プログラミング言語の概要についてつぎに述べる。
【００５５】
オブジェクト指向プログラミング
オブジェクト指向プログラミングは、特定の基本的なビルディング・ブロックを組み合わせ、ビルディング・ブロックの間の関係を構築することによってコンピュータ・プログラムを記述する方法である。オブジェクト指向プログラミング・システムにおけるビルディング・ブロックは、「オブジェクト」と呼ばれる。オブジェクトは、データ構造（１ないし複数のインスタンス変数）およびそのデータを使用し、あるいはそれに影響をあたえることができるオペレーション（メソッド）をグループ化したプログラミング・ユニットである。すなわち、オブジェクトは、データおよび、そのデータに関して実行可能な１ないし複数のオペレーションまたはプロシージャからなる。データおよびオペレーションを単元的なビルディング・ブロックに結合することを「カプセル化」と呼んでいる。
【００５６】
オブジェクトにインストラクションを与えて、それが「メッセージ」を受け取ったとき、そのメソッドを実行させることができる。メッセージは、そのオブジェクトに送られて特定のメソッドを実行するコマンドまたはインストラクションである。メッセージは、メソッドの選択（たとえばメソッドの名前）および複数の引数からなる。メッセージは、受け取り側のオブジェクトに対して実行するべきオペレーションを伝える。
【００５７】
オブジェクト指向プログラミングの１つの利点は、メソッドを起動する方法にある。メッセージがオブジェクトに送られたとき、メッセージをオブジェクトに送るとき、それによって特定のメソッドをどのように実行するかということをオブジェクトに伝える必要はない。必要なことは、そのオブジェクトにメソッドの実行を要求することだけである。これは、プログラム開発を著しく簡素化する。
【００５８】
オブジェクト指向プログラミング言語は、「クラス」スキームに基づくものが支配的である。クラス−ベースのオブジェクト指向プログラミング・スキームについては、１９８６年９月のＯＯＰＳＬＡ  ８６会報の２１４〜２２３ページにあるＬｉｅｂｅｒｍａｎ（リーベルマン）による「Ｕｓｉｎｇ  Ｐｒｏｔｏｔｙｐｉｃａｌ  Ｏｂｊｅｃｔｓ  ｔｏ  Ｉｍｐｌｅｍｅｎｔ  Ｓｈａｒｅｄ  Ｂｅｈａｖｉｏｒ  ｉｎ  Ｏｂｊｅｃｔ−Ｏｒｉｅｎｔｅｄ  Ｓｙｓｔｅｍｓ（プロトタイプのオブジェクトを使用したオブジェクト指向システムにおける共有の振る舞いの実装）」に包括的に述べられている。
【００５９】
クラスは、通常はそのクラスの変数ならびにメソッドをともに含むオブジェクトのタイプを定義する。オブジェクト・クラスは、オブジェクトの特定のインスタンスを生成するために使用される。オブジェクト・クラスのインスタンスは、そのクラス用に定義された変数およびメソッドを含む。１つのオブジェクト・クラスから、同一クラスの複数のインスタンスを生成することができる。同じオブジェクト・クラスから生成された各インスタンスには、タイプまたはクラスが同じであるという表現が用いられる。
【００６０】
ここで説明のため、「ｎａｍｅ（名前）」ならびに「ｓａｌａｒｙ（サラリー）」インスタンス変数および「ｓｅｔ＿ｓａｌａｒｙ（サラリー設定）」メソッドを含むことができる「ｅｍｐｌｏｙｅｅ（従業員）」オブジェクト・クラスを考える。「ｅｍｐｌｏｙｅｅ（従業員）」オブジェクト・クラスから、組織の各従業員に関するインスタンスを生成、つまり実例を作ることができる。このとき、各オブジェクトのインスタンスは「ｅｍｐｌｏｙｅｅ（従業員）」タイプであると言う。各「ｅｍｐｌｏｙｅｅ（従業員）」オブジェクトのインスタンスは、それぞれ「ｎａｍｅ（名前）」ならびに「ｓａｌａｒｙ（サラリー）」インスタンス変数および「ｓｅｔ＿ｓａｌａｒｙ（サラリー設定）」メソッドを含んでいる。各「ｅｍｐｌｏｙｅｅ（従業員）」オブジェクトのインスタンスに含まれる「ｎａｍｅ（名前）」ならびに「ｓａｌａｒｙ（サラリー）」変数に関連付けされた値は、その組織における従業員の名前およびサラリーである。ある従業員の「ｅｍｐｌｏｙｅｅ（従業員）」オブジェクトのインスタンスにメッセージを送り、「ｓｅｔ＿ｓａｌａｒｙ（サラリー設定）」メソッドを起動してその従業員のサラリー（つまり、その従業員の「ｅｍｐｌｏｙｅｅ（従業員）」オブジェクト内の「ｓａｌａｒｙ（サラリー）」変数に関連付けされた値）を修正することができる。
【００６１】
オブジェクト・クラス定義が１ないし複数のサブクラスを含むように、クラスの階層構造を定義することができる。サブクラスは、その親（およびさらにその上の親等）の定義を継承する。階層構造内の各サブクラスは、その親クラスによって指定された振る舞いに対する追加もしくは修正を行うことができる。一部のオブジェクト指向プログラミング言語は、多重継承をサポートしており、それは、サブクラスが複数の親クラスからクラス定義を継承することができる。そのほかのプログラミング言語は、単一の継承のみをサポートしており、それは、クラス定義の継承が単一の親クラスからだけに限定される。Ｊａｖａ（商標）プログラミング言語では、「インターフェース」として知られる定数およびアブストラクト・メソッド宣言のセットを構成するメカニズムの提供も行われる。オブジェクト・クラスは、インターフェース内に定義されているアブストラクト・メソッドを実装することができる。単一および多重継承は、ともにインターフェースに対して有効である。つまり、インターフェースは、複数の親インターフェースからインターフェース定義を継承することができる。
【００６２】
オブジェクトは、関連コードおよび変数を含むモジュールを参照するためのオブジェクト指向プログラミング環境で使用される包括的な用語である。オブジェクト指向プログラミング言語を使用してソフトウエア・アプリケーションを記述することは可能であり、その結果、オブジェクトを使用してそのプログラムの機能を実装することができる。
【００６３】
Ｊａｖａ（商標）のプログラミングおよび実行
Ｊａｖａ（商標）は、多数のクラスおよびインターフェースから構成される。プログラムがマシン依存の実行可能プログラム・コードにコンパイルされる多くのプログラミング言語と異なり、Ｊａｖａ（商標）クラスは、マシン非依存のバイトコード・クラス・ファイルにコンパイルされる。各クラスは、クラス・ファイル・フォーマットと呼ばれるプラットフォーム非依存のフォーマットによるコードおよびデータを包含している。実行ビークルとして機能するコンピュータ・システムは、仮想マシンと呼ばれるプログラムを搭載し、それがＪａｖａ（商標）クラスのコードの実行を担当する。この仮想マシンは、バイトコード・クラスのマシン非依存性と、基礎となるコンピュータ・ハードウエアのマシン依存インストラクション・セットの間のアブストラクションのレベルを提供する。仮想マシン内の「クラス・ローダ」は、必要に応じてバイトコード・クラス・ファイルのロードを行い、インタープリタがそのバイトコードを直接実行するか、もしくはプロセッサがそれを実行できるように、ジャスト・イン・タイム（ＪＩＴ）コンパイラによって、そのバイトコードがマシン・コードに変換される。
【００６４】
Ｊａｖａ（商標）ネットワーク・アプリケーション環境の例
図１は、Ｊａｖａ（商標）アプリケーションまたはアプレットの実行のために、Ｊａｖａ（商標）クラス・ファイルにアクセスすることを目的としてネットワーク１０１を介してサーバ１００に接続されるクライアント・プラットフォーム１０２を包含するＪａｖａ（商標）ネットワーク環境の例を示している。
【００６５】
図１においてサーバ１００は、所定のアプリケーション用のＪａｖａ（商標）クラス・ファイルの生成において使用するためのＪａｖａ（商標）開発環境１０４を包含している。このＪａｖａ（商標）開発環境１０４は、エディタおよびアプレット・ビューワといったクラス・ファイルの生成およびアプレットのプレビューのためのメカニズムを提供する。Ｊａｖａ（商標）コア・クラス１０３のセットは、別の／新しいＪａｖａ（商標）クラスを含むソース・ファイルが参照することができるＪａｖａ（商標）クラスのライブラリを構成する。Ｊａｖａ（商標）開発環境１０４から、１ないし複数のＪａｖａ（商標）ソース・ファイル１０５が生成される。Ｊａｖａ（商標）ソース・ファイル１０５は、プログラマ可読クラス定義を包含し、それにはデータ構造、メソッドの実装、およびほかのクラスに対する参照が含まれる。Ｊａｖａ（商標）ソース・ファイル１０５は、Ｊａｖａ（商標）コンパイラ１０６に提供され、それにおいてＪａｖａ（商標）ソース・ファイル１０５は、Ｊａｖａ（商標）仮想マシンによって実行可能なバイトコードを含むコンパイル済み「．ｃｌａｓｓ」（クラス拡張子付き）ファイル１０７にコンパイルされる。バイトコード・クラス・ファイル１０７は、サーバ１００上に（たとえば一時ストレージまたはパーマネント・ストレージに）ストアされ、ネットワーク１０１を介してそのダウンロードが可能になる。
【００６６】
クライアント・プラットフォーム１０２は、Ｊａｖａ（商標）仮想マシン（ＪＶＭ）１１１を包含しており、この仮想マシンは、有効なネイティブ・オペレーティング・システム（Ｏ／Ｓ）呼び出し１１２の使用を通じてバイトコード・クラス・ファイルを実行し、かつ実行間の必要に応じてＯ／Ｓ呼び出しを実行することができる。
【００６７】
Ｊａｖａ（商標）クラス・ファイルは、しばしばＨＴＭＬ（ハイパーテキスト・マークアップ言語）ドキュメント内においてアプレット・タグによって識別される。ウェブ・サーバ・アプリケーション１０８は、「ウェブ・ページ」とも呼ばれるＨＴＭＬドキュメントに対するＵＲＬ（ユニバーサル・リソース・ロケータ）を含むＨＴＴＰ（ハイパーテキスト・トランスファ・プロトコル）要求に応答してサーバ１００上において実行される。クライアント・プラットフォーム１０２上で実行されるブラウザ・アプリケーションが、ウェブ・サーバ１０８に対するＵＲＬ  １０９の転送等によってＨＴＭＬドキュメントを要求するとき、ブラウザは、そのＨＴＭＬドキュメントのアプレット・タグによって識別されたクラス・ファイル１０７のダウンロードを自動的に起動する。クラス・ファイル１０７は、通常、サーバからダウンロードされ、必要に応じて個別に仮想マシン１１１にロードされる。
【００６８】
通常、Ｊａｖａ（商標）プログラムのクラスは、プログラムの実行間において可能な限り遅い時期にロードされる；これらは、Ｊａｖａ（商標）プログラムの実行間において最初に参照されたとき、オン−デマンドでネットワーク（サーバ上にストアされている場合）からロードされるか、ローカル・ファイル・システムからロードされる。仮想マシンは、各クラス・ファイルのロケートおよびロードを行い、クラス・ファイル・フォーマットのパーズを行い、そのクラスの各種コンポーネントにメモリを割り当て、そのクラスと、すでにロード済みのクラスのリンクを行う。このプロセスは、仮想マシンによるそのクラス内のコードの容易な実行を可能にする。
【００６９】
コンピュータ実行環境の実施形態
本発明の１つの実施形態は、図２に示すコンピュータ２００等の汎用コンピュータ上で実行されるコンピュータ可読プログラム・コードの形式、あるいはその種のコンピュータ上で動作する仮想マシンによって実行されるバイトコード・クラス・ファイルの形式のコンピュータ・ソフトウエアとして実装することができる。キーボード２１０およびマウス２１１が双方向システム・バス２１８に接続されている。キーボードおよびマウスは、ユーザ入力をコンピュータ・システムに導入するため、および中央処理ユニット（ＣＰＵ）２１３にユーザ入力を伝達するために備わっている。マウス２１１およびキーボード２１０に代えて、あるいはそれに加えて、このほかの適当な入力デバイスを使用してもよい。双方向システム・バス２１８に接続されているＩ／Ｏ（入力／出力）ユニット２１９は、プリンタ、Ａ／Ｖ（オーディオ／ビデオ）Ｉ／Ｏ等のＩ／Ｏエレメントを表している。
【００７０】
コンピュータ２００は、ビデオ・メモリ２１４、メイン・メモリ２１５および大容量ストレージ２１２を備え、これらがすべて、キーボード２１０、マウス２１１およびＣＰＵ  ２１３に加えて双方向システム・バス２１８に接続されている。大容量ストレージ２１２には、磁気、光または光磁気ストレージ・システム等の固定ならびに移動可能メディア、もしくはその他の使用可能な大容量ストレージ・テクノロジを含めることができる。バス２１８は、たとえばビデオ・メモリ２１４あるいはメイン・メモリ２１５をアドレスするための３２本のアドレス・ラインを含むものとすることができる。システム・バス２１８は、たとえばＣＰＵ  ２１３、メイン・メモリ２１５、ビデオ・メモリ２１４および大容量ストレージ２１２等のコンポーネント間においてデータを転送するための３２ビットのデータ・バスを含むこともできる。なお、このように個別に備えるデータ・ラインとアドレス・ラインに代えて、多重データ／アドレス・ラインを使用してもよい。
【００７１】
本発明の一実施形態においては、ＣＰＵ  ２１３を、６８０Ｘ０プロセッサ等のＭｏｔｏｒｏｌａ（登録商標）によって製造されているマイクロプロセッサ、８０Ｘ８６あるいはＰｅｎｔｉｕｍ（登録商標）プロセッサ等のＩｎｔｅｌ（登録商標）によって製造されているマイクロプロセッサ、もしくはＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ（登録商標）のＳＰＡＲＣ（登録商標）とする。しかしながら、そのほかの任意の適切なマイクロプロセッサないしマイクロコンピュータを使用してもよい。メイン・メモリ２１５は、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）から構成される。ビデオ・メモリ２１４は、デュアル・ポート付きビデオ・ランダム・アクセス・メモリである。ビデオ・メモリ２１４の一方のポートは、ビデオ増幅器２１６に接続されている。ビデオ増幅器２１６は、陰極線管（ＣＲＴ）ラスタ・モニタ２１７のドライブに使用される。ビデオ増幅器２１６は、この分野において周知であり、任意の適切な装置によって実装することができる。この回路は、ビデオ・メモリ２１４内にストアされるピクセル・データを、モニタ２１７による使用に適したラスタ信号に変換する。モニタ２１７は、グラフィック・イメージの表示に適したタイプのモニタとする。
【００７２】
コンピュータ２００は、バス２１８に接続される通信インターフェース２２０を備えている。通信インターフェース２２０は、ネットワーク・リンク２２１を介してローカル・ネットワーク２２２に接続する双方向データ通信を行う。たとえば、通信インターフェース２２０を総合ディジタル通信サービス（ＩＳＤＮ）カードまたはモデムとするとき、通信インターフェース２２０は、ネットワーク・リンク２２１の一部を構成する、対応するタイプの電話回線に対するデータ通信接続を行う。また、通信インターフェース２２０がローカル・エリア・ネットワーク（ＬＡＮ）カードの場合に通信インターフェース２２０は、ネットワーク・リンク２２１を介して、互換性のあるＬＡＮに対するデータ通信接続を行う。ワイヤレス・リンクも可能である。通信インターフェース２２０は、これらのいずれの実装態様においても、各種タイプの情報を表すディジタル・データ・ストリームを搬送する電気的、電気磁気的または光学的信号を送受する。
【００７３】
ネットワーク・リンク２２１は、通常、１ないし複数のネットワークを介して別のデータ・デバイスにデータを通信する。たとえばネットワーク・リンク２２１は、ローカル・ネットワーク２２２を介してホスト・コンピュータ２２３または、インターネット・サービス・プロバイダ（ＩＳＰ）２２４によって運用されるデータ装置と通信することが考えられる。一方、ＩＳＰ  ２２４は、現在は広く「インターネット」２２５と呼ばれているワールド・ワイド・パケット・データ通信ネットワークを通じてデータ通信サービスを実施する。ローカル・ネットワーク２２２およびインターネット２２５は、ともにディジタル・データ・ストリームを搬送する電気的、電気磁気的または光学的信号を使用する。コンピュータ２００からおよびそこへディジタル・データを搬送する、これら各種ネットワークを通る信号、ネットワーク・リンク２２１上の信号、および通信インターフェース２２０を通る信号は、情報を伝達する搬送波の形式の一例である。
【００７４】
コンピュータ２００は、ネットワーク（１ないし複数）、ネットワーク・リンク２２１、および通信インターフェース２２０を介して、メッセージを送信し、プログラム・コードを含めたデータを受信する。インターネットの場合を例にとれば、サーバ２２６が、要求されたアプリケーション・プログラム用のコードをインターネット２２５、ＩＳＰ  ２２４、ローカル・ネットワーク２２２および通信インターフェース２２０を介して伝送することが考えられる。
【００７５】
受信されたコードは、ＣＰＵ  ２１３がその受信時に実行し、かつ／または後の実行のために、大容量ストレージ２１２もしくは別の不揮発性ストレージに内にストアする。このようにしてコンピュータ２００は、搬送波の形式でアプリケーション・コードを獲得することができる。
【００７６】
なお、上に述べたコンピュータ・システムは、例示のみを目的としたものである。本発明の実施形態は、任意のタイプのコンピュータ・システムまたはプログラミングもしくはプロセス環境において実装することができる。
【００７７】
以上、バイトコード・ストリームの適時配信を提供するための方法および装置について、１ないし複数の具体的な実施形態との関連から説明してきた。本発明については、特許請求の範囲によって、およびそれと等価であるすべて範囲によって定義される。
【図面の簡単な説明】
【図１】  Ｊａｖａ（商標）ネットワーク・アプリケーション環境の実施形態を示す。
【図２】  本発明の実施形態に適切な実行環境を提供することができるコンピュータ・システムの実施形態を示したブロック図である。
【図３】  本発明の一実施形態に従ったデータのパケット化、フラグメント化、および伝送の方法を示したブロック図である。
【図４】  本発明の一実施形態に従ったパケットの適応フィールド内にバイトコード・データを埋め込む方法を図示している。
【図５】  本発明の一実施形態に従ったＭＰＥＧ−２トランスポート・ストリーム・パケットのペイロード・セグメント内にバイトコードを埋め込む方法を図示している。
【図６】  ＰＥＳパケットのＰＥＳヘッダ内にバイトコード・データを埋め込む方法を図示している。
【図１】
0004444510.tif 000006
【図２】
0004444510.tif 000007
【図３】
0004444510.tif 000008
【図４】
0004444510.tif 000009
【図５】
0004444510.tif 000010
【図６】
0004444510.tif 000011