JP2000172509A - プログラム協調実行装置 - Google Patents

プログラム協調実行装置

Info

Publication number
JP2000172509A
JP2000172509A JP11277522A JP27752299A JP2000172509A JP 2000172509 A JP2000172509 A JP 2000172509A JP 11277522 A JP11277522 A JP 11277522A JP 27752299 A JP27752299 A JP 27752299A JP 2000172509 A JP2000172509 A JP 2000172509A
Authority
JP
Japan
Prior art keywords
bytecode
program
unit
home
communication path
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
JP11277522A
Other languages
English (en)
Inventor
Nobuteru Tominaga
宣輝 富永
Naosuke Haruna
修介 春名
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP11277522A priority Critical patent/JP2000172509A/ja
Publication of JP2000172509A publication Critical patent/JP2000172509A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 コンピュータアーキテクチャの相違には依存
しない共通プログラムの流通による様々な種類の電子機
器の連係動作を可能とする装置を提供する。 【解決手段】 家庭230内に設置されたTVチューナ&
ホームサーバ270は、開発用コンピュータ210から
衛星通信によって配送されてきた協調動作のためのJava
バイトコード280cを受信し、バイトコード変換部2
72において目的とする家電機器(エアコン240)を
特定した後に、その家電機器が備えるマイクロプロセッ
サ(第2実マシン部241)向けのネイティブコード2
82aに変換し、家電機器ネットワーク290を介して
エアコン240にダウンロードして実行させる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、通信ネットワーク
を介してプログラムを転送することによって目的とする
電子機器に特定の動作を行わせるプログラム協調実行装
置に関し、特に、家電機器の如く比較的処理能力の低い
マイクロプロセッサと記憶容量の小さい実メモリを備え
る電子機器を対象とする。
【0002】
【従来の技術】マイクロプロセッサによる制御の下で動
作する複数の電子機器を協調して動作させたい場合があ
る。例えば、デジタル放送において放送局が番組データ
等の付加的な情報の配信サービスを開始したことに伴っ
て、各家庭内に設置されたTVチューナの不揮発メモリに
格納されている制御プログラムをアップデートしたい場
合や、電力会社、ガス会社、病院等の社会インフラが大
規模なネットワーク(WAN)を通じて各家庭内の家電
機器の使用状況を収集することで、これまでにない木目
の細かいサービスを行ないたい場合等がある。
【0003】そのためには、協調動作を指示した新たな
プログラムをそれら家電機器等にダウンロードして実行
させればよいが、それら家電機器は同一アーキテクチャ
の下で設計された製品とは限らない。つまり、全く異な
るハードウェアから構成されていたり、内蔵されている
マイクロプロセッサが同一品種ではない。そのために、
それらアーキテクチャの相違を吸収する技術が必要とさ
れる。
【0004】インターネット等のネットワークを介して
接続されたコンピュータ間のアーキテクチャの違いを吸
収する技術として、JavaSoft社のJava(商標)に代表さ
れる仮想マシンがある。仮想マシンは、特定のマイクロ
プロセッサ(「実マシン」とも呼ぶ)上で実行されるプ
ログラムであり、その仮想マシン専用の動作コード(バ
イトコード)を逐次解釈して実行する仮想的なマイクロ
プロセッサである。なお、Javaに関しては、「The Java
Virtual Machine Specification」(Tim Lindholm, Fra
nk Yellin 著、Addison Wesley出版)あるいはhttp://j
ava.sun.comに詳述されている。
【0005】図17は、仮想マシンによって実行される
共通のプログラムの配送により異機種のコンピュータを
協調動作させる従来のコンピュータネットワークを示
す。協調動作のためのアプリケーションプログラム13
0は、開発側のコンピュータ100においてJava言語を
用いて作成された後に、Javaコンパイラ101によって
Javaバイトコード131aに変換され、ネットワーク1
02、110、123を介してアーキテクチャの異なる
他のコンピュータ120に配送される。配送されたJava
バイトコード131cは、そのコンピュータ120の実
マシン122の制御下で稼動するJava仮想マシン121
によって解釈され実行される。これによって、アーキテ
クチャの異なるコンピュータであっても、Java仮想マシ
ンを介在させることで、共通のプログラム(Javaバイト
コード)をそのまま実行することが可能となる。
【0006】このようなコンピュータネットワークで利
用されているJava仮想マシンを家電機器等に適用するこ
とによって、家電機器等を対象とする協調動作システム
を実現することも考えられる。つまり、協調動作させた
い全ての家電機器それぞれに予めJava仮想マシンを実装
しておき、衛星通信や家庭内ネットワーク等を通じて外
部から配送されてきたJavaバイトコードを、対象となっ
ている家電機器にダウンロードして実行させるという方
法である。
【0007】
【発明が解決しようとする課題】しかしながら、Java仮
想マシンをそのまま家電機器に適用した場合には、プロ
グラムの処理速度及び機器に実装すべきメモリ容量の点
で以下のような問題点がある。つまり、仮想マシンはマ
イクロプロセッサやOSの機能を階層的なソフトウェアに
よって実現した技術であるために、その実行対象である
Javaバイトコードは、一般に、実マシンやOS上で直接的
に実行されるネイティブコードのプログラムに比べ、そ
の実行速度が数十倍程度遅くなってしまう。このこと
は、Intel x86,Motorola PowerPC,SUN SPARC等の高速な
マイクロプロセッサを備えたコンピュータでは重大な問
題とはならないとしても、コスト面等の諸事情から低速
なマイクロプロセッサが用いられる家電機器では重大な
問題となる。
【0008】また、Javaバイトコードは、インタネット
に代表される様なオープンな(使用ユーザや運用目的等
を特に限定しない開放型の)ネットワークを介して流通
され、様々な環境下で実行されることを前提として設計
されているために、同一内容の一般的なプログラムに比
べ、コードサイズが極めて大きくなっている。そのため
に、Javaバイトコードを実行する機器は大きな容量の実
メモリを備えることが要求される。
【0009】具体的には、Javaでは、不特定多数のプロ
グラマが作った他のアプリケーションを妨害することな
く安全に動作させる必要から、つまり、Javaバイトコー
ドが他のアプリケーションプログラムやシステムの動作
を妨害してしまうことを防ぐために、関数あるいは変数
の相互参照を、コンスタントプールという名前領域を用
いて行なうよう設計されており、その名前領域は一般に
コード本体の倍以上のサイズに達する。このことは、1
6MB以上のRAMを搭載するコンピュータ分野においては
重大な問題とはならないとしても、コスト面等の諸事情
から搭載メモリ量をできるだけ少なくしなければならな
い家電製品の分野においては重大な問題となる。
【0010】そこで、本発明はかかる問題点に鑑みてな
されたものであり、家電機器に代表されるような低速の
マクロプロセッサと小さいサイズの実メモリを装備した
電子機器にも適用できるプログラム協調実行装置、即
ち、コンピュータアーキテクチャの相違には依存しない
共通プログラムの流通による様々な種類の電子機器の連
係動作を可能とする装置を提供することを目的とする。
【0011】
【課題を解決するための手段】上記目的を達成するため
に、本発明のプログラム協調実行装置は、第1通信路を
介して送信装置と接続されると共に、第2通信路を介し
て複数の電子機器と接続され、前記送信装置から送くら
れてくるプログラムに基づく処理を前記複数の電子機器
に実行させるための制御を行なうプログラム協調実行装
置であって、前記第1通信路を介して前記送信装置から
送くられてくるプログラムであって協調動作をさせるた
めの第1仮想マシン向けのバイトコードを受信する受信
手段と、前記複数の電子機器の中から、前記受信手段に
よって受信されたバイトコードを実行させる対象となる
電子機器を特定する機器特定手段と、前記受信手段によ
って受信されたバイトコードを前記機器特定手段によっ
て特定された電子機器が備えるプロセッサ向けのプログ
ラムコードに変換する変換手段と、前記変換手段によっ
て得られたプログラムコードを前記機器特定手段によっ
て特定された電子機器に前記第2通信路を介して配送す
る配送手段とを備えることを特徴とする。
【0012】ここで、前記複数の電子機器が備えるプロ
セッサは、実マシンであり、前記変換手段は、前記受信
手段によって受信されたバイトコードを前記機器特定手
段によって特定された電子機器が備える実マシン向けの
ネイティブコードに変換し、前記配送手段は、前記変換
手段によって得られたネイティブコードを前記機器特定
手段によって特定された電子機器に前記第2通信路を介
して配送する構成としてもよい。
【0013】また、前記複数の電子機器が備えるプロセ
ッサは、第2仮想マシンであり、前記変換手段は、前記
受信手段によって受信されたバイトコードを前記機器特
定手段によって特定された電子機器が備える第2仮想マ
シン向けのバイトコードに変換し、前記配送手段は、前
記変換手段によって得られたバイトコードを前記機器特
定手段によって特定された電子機器に前記第2通信路を
介して配送する構成としてもよい。
【0014】
【発明の実施の形態】以下、本発明の実施の形態につい
て図面を用いて説明する。 (実施の形態1)実施の形態1は、比較的安価な家電機
器を協調動作させるのに好適なプログラム協調実行シス
テムに関する。
【0015】図1は、実施の形態1のプログラム協調実
行システムの構成を示すブロック図である。本システム
は、協調動作ためのアプリケーションプログラムを開発
する会社(基地局)200に設置された開発用コンピュ
ータ210、そのプログラムを無線通信によって各家庭
230に配送する通信衛星220及び家庭230内に設
置された協調動作の対象となる家電機器(エアコン24
0、冷蔵庫250、電子レンジ260、TVチューナ&ホ
ームサーバ270、リモコン295)から構成される。
これら家電機器240等は、電灯線及び赤外線を伝送媒
体とする家庭内白物家電機器ネットワーク290によっ
て相互に接続され、ホームバスシステム(HBS)を構成
している。
【0016】図2(a)は図1に示された開発用コンピ
ュータ210の機能を示すブロック図であり、図2
(b)は家庭230内に設置された家電機器(エアコン
240及びTVチューナ&ホームサーバ270)の機能を
示すブロック図である。なお、これらブロック図には、
プログラムの協調実行に関連する部分のみが示され、一
般的なコンピュータや家電機器が備える機能・構成は省
略されている。従って、冷蔵庫250、電子レンジ26
0及びリモコン295についても、図2(b)に示され
たエアコン240と同一の機能ブロック図となる。
【0017】開発用コンピュータ210は、協調動作さ
せるためのJavaバイトコードを生成し対象となる機器に
配送する装置であり、Java言語で記述されたアプリケー
ションプログラム213を流通形態であるJavaバイトコ
ード280aに変換するJavaコンパイラ部211と、そ
れによって生成されたJavaバイトコード280aを通信
衛星220を介して家庭230に送信する衛星通信送信
部212とから構成される。本開発用コンピュータ21
0の基本的な機能は図17に示された従来技術における
Java開発用コンピュータ100と同一であるが、送信さ
れたJavaバイトコード280bには協調動作の対象とな
る家電機器に関する情報が埋め込まれている。この情報
は、もともとアプリケーションプログラム213に記述
されていたものである。
【0018】図3は、開発用コンピュータ210から各
家庭230に配送されるJavaバイトコード280bのデ
ータ構造を示す。Javaバイトコード280bは、目的と
する家電機器に関する情報等が収められたヘッダ部と、
その家電機器を協調動作させるための複数のプログラム
モジュールが収められた本体部とからなり、その本体部
を構成する各プログラムモジュールはさらに、命令列と
してのJavaバイトコードが収められたプログラムコード
と、他のプログラムモジュールとの動的なリンクのため
の情報(リンク情報)が収められたコンスタントプール
とからなる。
【0019】TVチューナ&ホームサーバ270は、通信
衛星220からのデジタル放送を受信してTVに映像信号
を出力するTVチューナとしての機能に加えて、本システ
ムの中核となるホームサーバとしての機能、即ち、家庭
内白物家電機器ネットワーク290に接続された各家電
機器を協調動作させるための制御を行う機能を有し、衛
星通信受信部271、バイトコード変換部272、第1
実マシン部273及びネットワークアダプタ274を備
える。
【0020】衛星通信受信部271は、通信衛星220
を介して本開発用コンピュータ210から配送されてき
たバイトコード280cを受信し、バイトコード変換部
272に出力する。バイトコード変換部272は、本シ
ステムの最も特徴的な構成要素であり、衛星通信受信部
271から送られてきたJavaバイトコード280dを、
目的とする家電機器が備える実マシン向けのネイティブ
コードに変換し、目的とする家電機器に配信する。つま
り、入力されたJavaバイトコード280dのヘッダ部に
記述されていた指示に従って、変換後のネイティブコー
ドを第1実マシン部273のプログラム格納領域に格納
したり、ネットワークアダプタ274を介して他の家電
機器に転送したりする。
【0021】第1実マシン部273は、このTVチューナ
&ホームサーバ270を制御する固有の制御マイクロプ
ロセッサ、実行対象となるプログラムの格納領域や一時
的な作業領域としてのメモリ及びシステムライブラリ
(ハードウェア制御を行う基本プログラムの集まり)等
を含むハードウェア及びファームウェアの総称である。
ネットワークアダプタ274は、このTVチューナ&ホー
ムサーバ270を家庭内白物家電機器ネットワーク29
0に接続するインタフェースカードであり、バイトコー
ド変換部272からの指示に従って、そこから送られて
くるネイティブコード282aを他の家電機器に転送し
たりする。
【0022】エアコン240は、室温制御を行う家電機
器であり、第2実マシン部241及びネットワークアダ
プタ242を備える。第2実マシン部241は、このエ
アコンを制御する固有の制御マイクロプロセッサ、実行
対象となるプログラムの格納領域や一時的な作業領域と
してのメモリ及びシステムライブラリ(ハードウェア制
御を行う基本プログラムの集まり)等を含むハードウェ
ア及びファームウェアの総称である。
【0023】ネットワークアダプタ242は、このエア
コン240を家庭内白物家電機器ネットワーク290に
接続するインタフェースカードであり、TVチューナ&ホ
ームサーバ270から転送されてくるネイティブコード
282aを受信し第2実マシン部241のプログラム格
納領域に格納したりする。図4は、図2に示されたバイ
トコード変換部272の詳細な構成を示す機能ブロック
図である。このバイトコード変換部272は、大きく分
けて、変換の目的となる実マシンの種別を特定するヘッ
ダ解析部272bと、入力されたJavaバイトコード28
0dを特定された実マシン向けのネイティブコードに変
換する処理部(中間コード変換部272a、ネイティブ
コード生成部272c、3種類の実マシン用コードテー
ブル272d〜f)とからなる。
【0024】ヘッダ解析部272bは、入力されたJava
バイトコード280dのヘッダ部に置かれた「実マシン
の種別」を参照することで、対応する実マシンテーブル
を3種類の実マシン用コードテーブル272d〜fの中
から特定すると共に、そのヘッダ部に置かれた「製造会
社名」、「機器種別」及び「型名」を参照することで、
このバイトコード変換部272が生成したネイティブコ
ードが、目的とする家電機器に転送されるようネットワ
ークアダプタ274を制御する。
【0025】例えば、Javaバイトコード280bのヘッ
ダ部によって本TVチューナ&ホームサーバ270及び第
1マシンが指定されている場合には、ヘッダ解析部27
2bは、第1実マシン用コードテーブル272dを選択
し、その旨をネイティブコード生成部272cに伝え、
また、ヘッダ部によってエアコン240及び第2マシン
が指定されている場合には、ヘッダ解析部272bは、
第2実マシン用コードテーブル272eを選択し、その
旨をネイティブコード生成部272cに伝えると共に、
ネイティブコード生成部272cによって生成されたネ
イティブコード272hがエアコン240に配信される
ようネットワークアダプタ274を制御する。
【0026】中間コード変換部272aは、一般的なク
ロスアセンブラの中間コード変換部と同様であり、入力
されたJavaバイトコード280dを字句解析して2分木
等による内部表現に変換した後に最適化や資源割り付け
等を行うことによって、中間コード272gを生成す
る。ネイティブコード生成部272cは、一般的なクロ
スアセンブラのオブジェクトコード生成部と同様であ
り、ヘッダ解析部272bによって指定された1個の実
マシンコードテーブルを参照することによって、中間コ
ード変換部272aが生成した中間コード272gを対
応するネイティブコードに変換する。
【0027】3種類の実マシン用コードテーブル272
d〜fは、中間コードの全ての種類について対応する各
実マシン用のネイティブコードを予め記憶しているメモ
リであり、それぞれ、TVチューナ&ホームサーバ270
が備える第1実マシン部273、エアコン240が備え
る第2実マシン部241及び電子レンジ260・リモコ
ン295が備える第3実マシン部に対応する実マシン用
のネイティブコードを記憶している。
【0028】次に、以上のように構成された本プログラ
ム協調実行システム全体の動作について説明する。図5
は、本システム全体の動作手順を示すフローチャートで
ある。まず、本開発用コンピュータ210において、Ja
va言語を用いた協調動作のためのアプリケーションプロ
グラム213、例えば、エアコン240で実行されると
それまでの通電時間を集計するようなアプリケーション
プログラム213が開発され、Javaコンパイラ部211
によってJavaバイトコード280aに変換される(ステ
ップS500)。
【0029】そのJavaバイトコード280aは、開発用
コンピュータ210の衛星通信送信部212、通信衛星
220及びアンテナを介して各家庭230に配信され、
さらに家庭230内にTVチューナ&ホームサーバ270
の衛星通信受信部271を経てバイトコード変換部27
2に転送される(ステップS501)。すると、バイト
コード変換部272において、ヘッダ解析部272b
は、入力されたJavaバイトコード280dのヘッダ部を
解析することによって、このJavaバイトコード280d
はエアコン240をターゲットとするプログラムである
と特定すると共に(ステップS502)、中間コード変
換部272aは、Javaバイトコード280dを中間コー
ド272gに変換する。そして、ネイティブコード生成
部272cは、ヘッダ解析部272bでの特定に従って
第2実マシン用コードテーブル272eを参照すること
によって、その中間コード272gをエアコン240向
けのネイティブコード272hに変換する(ステップS
503)。
【0030】得られたネイティブコード272hは、ヘ
ッダ解析部272bからの指示に基づいてネットワーク
アダプタ274、家庭内白物家電機器ネットワーク29
0及びネットワークアダプタ242を介してエアコン2
40に転送された後に(ステップS504、S50
5)、第2実マシン部241のプログラム格納領域に置
かれ第2実マシン部241のマイクロプロセッサによっ
て実行される(ステップS506)。ここで、もし、開
発用コンピュータ210から配送されてきたJavaバイト
コード280bがTVチューナ&ホームサーバ270向け
であった場合には、ヘッダ解析部272bは、そのヘッ
ダ部の内容からその旨を検出するので(ステップS50
2)、ネイティブコード生成部272cは、第1実マシ
ン部273用のネイティブコード272hを生成し(ス
テップS503)、第1実マシン部273のプログラム
格納領域に格納することで、第1実マシン部273のマ
イクロプロセッサの実行制御下に置く(ステップS50
6)。
【0031】このようにして、開発用コンピュータ21
0で生成されたJavaバイトコード280aは、TVチュー
ナ&ホームサーバ270において目的とする家電機器向
けのネイティブコードに変換された後に、その家電機器
にダウンロードされ、その家電機器が備えるマイクロプ
ロセッサによって直接実行される。従って、開発用コン
ピュータ210からTVチューナ&ホームサーバ270に
転送されてきたJavaバイトコード280aのヘッダ部
に、エアコン240を指定する情報(機器種別等)が格
納され、本体部に、エアコンの通電時間を集計するため
のプログラムが格納されていた場合には、そのような処
理を実行するためのネイティブコード282cがTVチュ
ーナ&ホームサーバ270からエアコン240にダウン
ロードされ、エアコン240の第2実マシン部241に
よって実行される。
【0032】その結果、エアコン240は、通電時間を
集計するための新たな機能を獲得した状態、即ち、内部
の制御プログラムが改訂された状態となる。具体的に
は、それ以降においては、エアコン240は、電源が投
入されている間においては、その通電時間を積算しなが
ら計測し、その結果を内部のメモリに記憶しておく。そ
して、エアコン240は、記憶している通電時間を、操
作者の指示に応じてエアコン240の液晶パネルに表示
したり、家庭内白物家電機器ネットワーク290及びそ
のネットワーク290に接続された電話機等を介して開
発用コンピュータ210に返信する。このようにして、
各家庭に置かれたエアコンの通電時間が開発用コンピュ
ータ210に集計され、保守点検時期の判断等に役立て
られる。
【0033】図6は、本実施の形態におけるアプリケー
ションプログラム213、バイトコード280a(28
0b〜280d)及びネイティブコード281(282
a〜282c)の具体的なリスト例である。本図には、
同一処理内容に係る部分だけが示されている。図6の左
側に示されたアプリケーションプログラム213は、Ja
va言語で記述されており、ここには、1個の仮想関数ba
ll.move(2,1)を呼び出す命令が示されている。
【0034】図6の中央に示されたJavaバイトコード2
80aは、上記アプリケーションプログラム213に対
応するJavaバイトコードであり、ここには、4行のプロ
グラムコードと6個のデータブロックからなるコンスタ
ントプールが示されている。図中の矢印線は、各ポイン
タが示す先を示している。4行のプログラムコードは、
仮想関数を呼び出す準備のための1バイト命令(aload_
0)と、引数を渡すための2個の3バイト命令(bipus
h)と、仮想関数を呼び出すための3バイト命令(invok
evirtual)とからなる合計10バイトのサイズである。
また、コンスタントプールを構成する6個のデータブロ
ックは、各ブロックの型宣言un(unsigned n bytes)及
び文字列長から分かるように、合計39バイトのサイズ
である。よって、このJavaバイトコード280aは、合
計49バイトのサイズとなる。
【0035】図6の右側に示されたネイティブコード2
81は、上記Javaバイトコード280aが通信衛星22
0を介して家庭230内にTVチューナ&ホームサーバ2
70に入力され、そのTVチューナ&ホームサーバ270
内のバイトコード変換部272によって生成されたもの
であり、ここには、6個の機械語命令が示されている。
1個の機械語命令が2バイトとすると、このネイティブ
コード281は、合計12バイトのサイズとなる。
【0036】このように、流通形態の肥大化されたJava
バイトコード280aは、各家庭230に受信された
後、TVチューナ&ホームサーバ270によって、サイズ
の小さな無駄のないネイティブコード281(282a
〜282c)に変換され、家庭内の目的とする家電機器
にダウンロードされ実行される。以上のように、本シス
テムによれば、家庭内白物家電機器ネットワークに接続
された家電機器それぞれは、内部に固有のJava仮想マシ
ンという大きなプログラムを備えることなく、開発用コ
ンピュータ210から配送されてきたJavaバイトコード
を最終的に実行することができる。つまり、本システム
は、家庭内に設置されたTVチューナ&ホームサーバにバ
イトコード変換部を備えることで、家電機器のような低
速のマクロプロセッサと小さいメモリを装備した電子機
器であっても、それら電子機器を対象とするプログラム
協調実行システム、即ち、流通形態としてデファクトス
タンダードとなっているJavaバイトコードの転送による
異機種の電子機器間の連係動作を可能としたシステムで
ある。
【0037】なお、本実施の形態では、バイトコード変
換部272は入力されたJavaバイトコード280dを一
旦中間コードに変換した後にネイティブコードに変換し
たが、本発明はこのプロセスに限定されるものではな
く、Javaバイトコードを直接ネイティブコードに変換し
てもよい。この場合、実マシン用コードテーブル272
d〜fには、中間コードとネイティブコードとの対応関
係に代えて、Javaバイトコードとネイティブコードとの
対応関係を記憶させておけばよい。 (実施の形態2)実施の形態2は、実施の形態1よりも
高機能な(処理能力の高いマイクロプロセッサと大きい
容量の実メモリを備えた)家電機器を協調動作させるの
に好適なプログラム協調実行システムに関する。
【0038】図7は、実施の形態2のプログラム協調実
行システムの構成を示すブロック図である。本システム
は、開発元200、210で作成された協調動作ための
アプリケーションプログラム(Javaバイトコード280
d)を通信衛星220を介して各家庭230内に配送
し、目的とする家電機器にダウンロードして実行させる
ことで開発用コンピュータ210と家電機器との協調動
作や家電機器どうしの協調動作を実現している点におい
て実施の形態1と同じである。異なる点は、家庭230
内に設置されている各家電機器(デジタルTV300、DV
Dサーバ310、デジタルビデオカメラ320、TVチュ
ーナ&ホームサーバ330、リモコン340)の種別及
び機能とそれらを接続するネットワーク350である。
なお、実施の形態1と同じ構成要素については同一符号
を付し、その説明を省略する。
【0039】DVDサーバ310は複数枚のDigital Video
Discに対して動画像等のデジタルデータを読み書きす
るドライブ装置であり、デジタルTV300はDVDサーバ
310等から送り出されてくる動画像データをデコード
し映像再生するTVであり、家庭内AV(Audio Video)家
電機器ネットワーク350はIEEE1394規格に準拠し
たバスである。これら家電機器300、310、32
0、330は、いずれも、内部に、家電機器向けに設計
された仮想マシン(以下、「家電仮想マシン」と言
う。)を有する高機能なAV関連機器である点で共通す
る。
【0040】図8は、家庭230内家電機器のうち、DV
Dサーバ310とTVチューナ&ホームサーバ330の構
成を示す機能ブロック図である。実施の形態1における
図2(b)と比較して分かるように、各家電機器33
0、310は、それぞれ、機器固有のハードウェア資源
である実マシン部333、312の制御下で動作する家
電仮想マシン332、311を備え、さらに、TVチュー
ナ&ホームサーバ330は、衛星通信受信部271が受
信したJavaバイトコード280dをそれら家電仮想マシ
ン332、311によって実行される共通のプログラム
(家電バイトコード335a)に変換するバイトコード
変換部331を備える点で実施の形態1と異なる。
【0041】図9(a)及び(b)は、家電仮想マシン
332、311の設計コンセプトを説明するためのデー
タ及び機能構成図であり、それぞれ、従来の仮想マシン
(Java仮想マシン)、家電仮想マシン332の動作を示
す。図9(a)では、図17に示された従来環境におけ
る開発用コンピュータ100及びバイトコードの転送先
となる目的コンピュータ120それぞれにおけるJavaバ
イトコード及びJava仮想マシンそれぞれの内部構成が示
されている。つまり、従来では、バイトコードを構成す
る各プログラムモジュール(ByteCode1、ByteCode2)
は、プログラムコードだけではなく、リンク情報も伴っ
た形態で開発環境から端末に配送され、端末において
は、Java仮想マシンが有する動的リンク装置によってそ
れらプログラムモジュールや端末固有のシステムライブ
ラリ間の参照関係が解決されながら実行される。
【0042】図9(b)では、本実施の形態2のTVチュ
ーナ&ホームサーバ330及びバイトコードの転送先と
なるDVDサーバ310それぞれにおけるJavaバイトコー
ド280d、家電バイトコード335a、335c及び
家電仮想マシン311それぞれの内部構成が示されてい
る。つまり、本実施の形態では、Javaバイトコード28
0dを構成する各プログラムモジュール(ByteCode1、B
yteCode2)はバイトコード変換部331においてリンク
情報が削除され、そのように軽量化された家電バイトコ
ード335aが端末(DVDサーバ310)に転送され、
その転送先310で稼動している家電仮想マシン332
によって解釈され実行される。
【0043】これは、Javaバイトコード280dに付加
されているリンク情報がもはや必要とされなくなった時
点、即ち、安全で確実な伝送が要求されるオープンなネ
ットワーク上での流通が終了した時点においてそのリン
ク情報を削除してしまうことで、従来のJava仮想マシン
で必要とされた動的リンク機能を持たないスリムな仮想
マシン(家電仮想マシン)によるスリムなバイトコード
の実行を可能とするものである。つまり、クローズな
(使用ユーザや運用目的等が限定されている閉鎖型の)
ネットワーク環境でのプログラムの流通や実行において
は予期しないプログラムとの衝突を考慮する必要がない
ので、Javaバイトコードに含まれていたリンク情報はも
はや必要とされないことを利用したものである。
【0044】図10は、TVチューナ&ホームサーバ33
0の家電仮想マシン332及第1実マシン部333の詳
細な構成を示す機能ブロック図である。この家電仮想マ
シン332は、図9(a)及び(b)から分かるよう
に、従来のJava仮想マシンから動的リンク機能に相当す
る部分を取り除いた構成に相当し、バイトコード読込み
部332a、PC記憶部332b、ジャンプ先決定部3
32c、ジャンプ先テーブル332d及び実行制御部3
32eから構成される。
【0045】実行制御部332eに置かれた実マシンプ
ログラム記憶部332fは、一般的なマイクロプロセッ
サのマイクロプログラムに相当し、この家電仮想マシン
332が解読実行する全ての種類のバイトコード(オペ
レーション)に対応する実マシンプログラム(第1実マ
シン部333のマイクロプロセッサによって直接実行さ
れる命令によって記述されたプログラム)を予め記憶し
ている。
【0046】ジャンプ先テーブル332dは、上記全て
の種類のバイトコード(オペレーション)について、各
バイトコードと、対応する上記実マシンプログラムへの
ジャンプ先(実マシンプログラム記憶部332fにおけ
る個々の実マシンプログラムの先頭アドレス)との組を
予め記憶するテーブルである。PC記憶部332bは、
この家電仮想マシン332のプログラムカウンタに相当
し、バイトコード読込み部332aは、そのPC記憶部
332bに格納されたアドレスが示すバイトコードを実
行対象である家電バイトコード335aの中から逐一に
読み出す。ジャンプ先決定部332cは、ジャンプ先テ
ーブル332dを参照することで、バイトコード読込み
部332aから送られてきた1個のバイトコーのオペレ
ーションに対応する1個の実マシンプログラムへのジャ
ンプ先を特定し、そのジャンプ先と付加情報(バイトコ
ードに含まれているオペランド等)と共に実行制御部3
32eに伝える。
【0047】実行制御部332eは、第1実マシン部3
33のハードウェア333b(マイクロプロセッサ)に
よる実行制御を、ジャンプ先決定部332cが指示した
プログラム、即ち、実マシンプログラム記憶部332f
中の1個の実マシンプログラムとオペランド等によって
特定されるプログラムに移すことで、1個のバイトコー
ドに対応する実行サイクルを遂行する。このとき、実マ
シンプログラム記憶部332f中の実マシンプログラム
においてシステムライブラリ333aを呼び出す記述が
置かれている場合には、実行制御部332eは、そのよ
うな呼び出しに従って、第1実マシン部333のマイク
ロプロセッサによる実行制御をシステムライブラリ33
3a中の処理プログラムにも移す。
【0048】以上のようにして、家電仮想マシン332
は、実行対象の家電バイトコード335aを構成する全
ての家電バイトコードについて、順次に家電バイトコー
ドを読み出し、対応する実マシンプログラムへのジャン
プ先を決定し、そのジャンプ先に第1実マシン部333
の実行制御を移すという制御を繰り返す。なお、図10
に示されたTVチューナ&ホームサーバ330における家
電仮想マシン332及び第1実マシン部333の構成
は、それぞれ、他の家電機器、例えば、DVDサーバ31
0における家電仮想マシン311及び第2実マシン部3
12についても同様である。つまり、家電仮想マシン3
32、311については、各家電仮想マシン332、3
11自身(プログラム)のオブジェクトコードが異なる
(それぞれ第1実マシン部333及び第2実マシン部3
12向けのネイティブコードで記述されている)だけで
あり、それらの有する機能構成、即ち、家電バイトコー
ドを逐一に読み出し、ジャンプ先を決定し、該当する実
マシンプログラムに実行制御を移す点において共通する
からである。
【0049】図11は、TVチューナ&ホームサーバ33
0が備えるバイトコード変換部331の詳細な構成を示
す機能ブロック図である。このバイトコード変換部33
1は、大きく2つの処理部分、つまり、入力されたJava
バイトコード280dを軽量化する前置処理部(軽量化
部331a)と、軽量化されたJavaバイトコード280
d(軽量化バイトコード331f)を各家電機器30
0、310、320、330が解読実行できる共通の家
電バイトコード331hに変換する、即ち、Java仮想マ
シン向けのバイトコードを家電仮想マシン向けのバイト
コードに変換する言語変換部(中間コード変換部331
b、家電バイトコード生成部331c、家電仮想マシン
用コードテーブル331d)とから構成される。
【0050】軽量化部331aは、図12のフローチャ
ートに示されるように、まず、入力されたJavaバイトコ
ード280dを構成する全てのプログラムモジュールの
リンク情報を参照することによって、各プログラムモジ
ュール間の参照関係を示すクロスリファレンスを作成す
る(ステップS520〜S522)。具体的には、全て
のプログラムモジュールの全ての参照元について、その
参照先となっているシンボルを順次辿っていくことによ
って最終的な参照先を特定し、その結果得られた参照元
に関する情報(プログラムモジュール名、変数名及び参
照箇所)と、最終的な参照先に関する情報(プログラム
モジュール名、変数名及び参照箇所)との組を示すテー
ブルを生成する。つまり、中間的な参照や間接的な参照
を排除し、直接的な参照だけで表現したクロスリファレ
ンステーブル(参照元とその参照先それぞれをプログラ
ムコードの具体的な位置によって特定したもの)を生成
する。
【0051】次に、そのクロスリファレンスを参照する
ことで、各プログラムモジュールの参照元で指定されて
いた参照先(リンク先)を、クロスリファレンスに登録
されている最終的な参照先に書き換える(ステップS5
23)。つまり、プログラムモジュール間の間接的な参
照を直接的な参照に書き換える。このようにして、Java
バイトコード280d中のリンク情報は用い尽くされ不
要となるので、最後に、軽量化部331aは、各プログ
ラムモジュールのリンク情報を除く部分、即ち、プログ
ラムコードに相当する部分だけを抜き出し、軽量化バイ
トコード331fとして中間コード変換部331bに出
力する(ステップS524)。
【0052】中間コード変換部331bは、一般的なク
ロスアセンブラの中間コード変換部と同様であり、入力
された軽量化バイトコード331fを字句解析して2分
木等による内部表現に変換した後に最適化や資源割り付
け等を行うことによって、中間コード331gを生成す
る。家電仮想マシン用コードテーブル331dは、中間
コード変換部331bが生成する中間コードの全ての種
類について、対応する家電仮想マシンのバイトコードを
予め記憶している。
【0053】家電バイトコード生成部331cは、一般
的なクロスアセンブラのオブジェクトコード生成部と基
本的な機能が同一であり、家電仮想マシン用コードテー
ブル331dを参照することによって、中間コード変換
部331bが生成した中間コード331gを特定のマイ
クロプロセッサ(ここでは、家電仮想マシン)向けのコ
ードに変換する。
【0054】ヘッダ解析部331eは、このバイトコー
ド変換部331に入力されたJavaバイトコード280d
のヘッダ部に置かれた「製造会社名」、「機器種別」及
び「型名」を参照することで、このバイトコード変換部
331が生成した家電バイトコード331hが、目的と
する家電機器に転送されるようネットワークアダプタ3
34を制御する。これによって、バイトコード変換部3
31によって生成された家電バイトコード331hは、
目的とする家電機器に供給され、その家電機器で稼動し
ている家電仮想マシンによって実行される。なお、目的
とする家電機器がTVチューナ&ホームサーバ330であ
る場合には、バイトコード変換部331は、生成した家
電バイトコード335aを直接家電仮想マシン332に
供給し実行させる。
【0055】次に、以上のように構成された本プログラ
ム協調実行システム全体の動作について説明する。図1
3は、本システム全体の動作手順を示すフローチャート
である。協調動作のためのJavaバイトコードは、開発用
コンピュータ210で生成され、通信衛星220等を介
して各家庭230のTVチューナ&ホームサーバ330に
配信されると(ステップS530、S531)、そこに
内蔵されているバイトコード変換部331によって、家
電バイトコード335aに変換されると共に(ステップ
S532)、そのJavaバイトコード内のヘッダ部を参照
することで目的とする家電機器が特定される(ステップ
S533)。
【0056】その結果、目的とする家電機器がTVチュー
ナ&ホームサーバ330自身である場合には、バイトコ
ード変換部331は、生成した家電バイトコード335
aをこの家電機器の家電仮想マシン332に供給して実
行させ(ステップS534、S536)、一方、目的と
する家電機器が他の家電機器、例えば、DVDサーバ31
0である場合には、バイトコード変換部331は、ネッ
トワークアダプタ334を制御することによって、家庭
内AV家電機器ネットワーク350及びネットワークアダ
プタ313を介して家電バイトコード335aをDVDサ
ーバ310に転送し、そこの家電仮想マシン311にて
実行させる(ステップS534〜S536)。
【0057】このようにして、開発用コンピュータ21
0で生成されたJavaバイトコード280aは、TVチュー
ナ&ホームサーバ330において、もはや不要となった
リンク情報が削除され、家電バイトコード335aとし
て目的の家電機器に供給され、その家電機器が備える家
電仮想マシンによって実行されることによって、開発元
の機器と家電機器との協調動作や家電機器どうしの協調
動作が実現される。
【0058】図14は、本実施の形態におけるアプリケ
ーションプログラム213、バイトコード280a(2
80b〜280d)及び家電バイトコード335a(3
35b〜335c)の具体的なリストを示す。本図に
は、同一処理内容に係る部分だけが示されている。な
お、図中の左側及び中央に示されたアプリケーションプ
ログラム213及びJavaバイトコード280aは、図6
に示された実施の形態1における例と同一である。つま
り、流通形態のJavaバイトコード280aは、合計49
バイトのサイズである。
【0059】図6の右側に示された家電バイトコード3
35aは、上記Javaバイトコード280aが通信衛星2
20を介して家庭230内にTVチューナ&ホームサーバ
330に入力され、そのTVチューナ&ホームサーバ33
0内のバイトコード変換部331によって生成されたも
のであり、ここには、4行のプログラムコードと1個の
仮想関数テーブルが示されている。
【0060】4行のプログラムコードは、仮想関数を呼
び出す準備のための1バイト命令(aload_0)と、引数
を渡すための2個の3バイト命令(bipush)と、仮想関
数を呼び出すための4バイト命令(invokevirtual)と
からなる合計11バイトのサイズである。また、仮想関
数テーブルを構成する1個のエントリには4バイトの分
岐先アドレスが格納されている。よって、この家電バイ
トコード335aは、合計15バイトのサイズとなる。
【0061】このように、流通形態の肥大化されたJava
バイトコード280aは、各家庭230に受信された
後、TVチューナ&ホームサーバ330によって、サイズ
の小さな無駄のない家電バイトコード335a(335
b〜335c)に変換され、家庭内の目的とする家電機
器にダウンロードされ実行される。以上のように、本シ
ステムによれば、家庭内AV家電機器ネットワーク350
に接続された家電機器300、310、320、330
は、従来の仮想マシン(Java仮想マシン)よりもスリム
な仮想マシン(家電仮想マシン)を備えるにも拘わら
ず、結果的にはJavaバイトコードを実行することができ
る。また、各家電機器にダウンロードされる家電バイト
コードは同一内容のJavaバイトコードよりもサイズが小
さくなっている。従って、本システムは、一般的なコン
ピュータシステムに比べて処理能力の劣るマイクロプロ
セッサと小さいサイズの実メモリを備える家電機器に好
適なプログラム協調実行システムである。但し、各家電
機器は、少なくとも、家電仮想マシンを備え、家電バイ
トコードを実行するのに必要な性能を有することが要求
されるので、本システムは、実施の形態1よりも高機能
な家電機器に向いていると言える。 (実施の形態3)実施の形態3は、実施の形態2に係る
システムの変形に相当し、協調動作の対象となる家電機
器それぞれが家電仮想マシンを備える点で実施の形態2
と共通するが、家電バイトコードの転送に用いられるク
ローズなネットワーク環境が電力会社等の社会インフラ
に係るWANである点で実施の形態2と相違する。以
下、相違点だけを説明する。
【0062】図15は、実施の形態3のプログラム協調
実行システムの構成を示すブロック図である。本システ
ムは、協調動作ためのアプリケーションプログラム(Ja
vaバイトコード)を開発する会社に設置された開発用コ
ンピュータ100、そのプログラムの配送のためのイン
タネット等のネットワーク110、そのプログラムの供
給を受ける電力会社430に設置された家電バイトコー
ド作成用コンピュータ440、家電バイトコードを配送
するための電力会社430の所有に係る衛星通信網を構
成する通信衛星220、家庭230に設置された協調動
作の対象となるTVチューナ&ホームサーバ450から構
成される。つまり、本システムは、Javaバイトコード1
31bの転送に用いられる図17に示される従来と同様
のオープンなネットワーク110環境と、家電バイトコ
ード460bの転送に用いられるクローズなネットワー
ク環境との結合である。
【0063】図16(a)及び(b)は、それぞれ、図
15における家電バイトコード作成用コンピュータ44
0及びTVチューナ&ホームサーバ450の構成を示す機
能ブロック図である。家電バイトコード作成用コンピュ
ータ440は、協調動作のための家電バイトコードを各
家電機器に配送するサーバーとしての役割を有し、実施
の形態2におけるTVチューナ&ホームサーバ330と同
様の機能(バイトコード変換部331)、即ち、開発用
コンピュータ100から配送されてきたJavaバイトコー
ド410bを家電バイトコード460aに変換する機能
(バイトコード変換部440a)を備え、この変換によ
って得られた家電バイトコード460aを衛星通信送信
部440b、通信衛星220を経て各家庭230に配送
する。
【0064】TVチューナ&ホームサーバ450は、本シ
ステムにおいては協調動作の対象となる家電機器であ
り、家電仮想マシンを備える実施の形態2におけるDVD
サーバ310に相当する。以上のような構成によって、
本システムでは、協調動作のためのプログラムは、オー
プンなネットワーク110上においては安全な動作に好
適な流通形態(Javaバイトコード)で配送され、一方、
そのような配慮が厳格には必要とされないクローズなネ
ットワーク上においてはリンク情報が削除された軽量な
流通形態(家電バイトコード)で配送される。これによ
って、家電機器に代表されるようなマイクロプロセッサ
組込みの電子機器、即ち、コンピュータシステムに比較
して処理能力が低いマイクロプロセッサと小さい容量の
実メモリを備える電子機器に好適なプログラム協調実行
システムが実現される。
【0065】以上、本発明に係るプログラム協調実行シ
ステムについて実施の形態1〜3に基づいて説明した
が、本発明はこれら実施の形態に限られない。実施の形
態1、2では、バイトコード変換部272、331はそ
れぞれTVチューナ&ホームサーバ270、330に内蔵
されたが、TVチューナーとは分離された独立の装置であ
ってもい。例えば、家電機器ネットワーク290、35
0と公衆電話網に接続されたスタンドアローンな変換装
置であって、公衆電話網を経て送られてくるJavaバイト
コードを受信し、それを目的の家電機器が備える実マシ
ン用のネイティブコード又は家電バイトコードに変換し
た後に、その家電機器に配送する装置であってもよい。
【0066】また、実施の形態1では、ヘッダ解析部2
72bは、入力されたJavaバイトコード280dのヘッ
ダ部に置かれた「実マシンの種別」を参照することで、
対応する実マシンテーブルを特定したが、ヘッダ部に置
かれた転送先機器に関する情報(機器種別や型名など)
に基づいて間接的に実マシンテーブルを特定してもよ
い。その場合には、バイトコード変換部272は、複数
の器機種別や型名と実マシン種別との対応を示すテーブ
ルを予め記憶し、そのテーブルを参照することで、ヘッ
ダ部の器機種別等から実マシンテーブルを特定すればよ
い。
【0067】また、実施の形態2では、家庭内家電機器
ネットワーク350に接続された家電機器300、31
0、320、330は、いずれも、共通の家電仮想マシ
ンを有したが、異なる種別の家電仮想マシンを有しても
よい。例えば、リンク情報が削除された軽量なバイトコ
ードを実行する点で共通するが、異なる種別の実マシン
のアーキテクチャそれぞれに特化した異なる命令体系を
実行する3種類の家電仮想マシンを定義しておき、各家
電機器それぞれは、それら3種類の家電仮想マシンのい
ずれかを有するとしてもよい。その場合には、実施の形
態1においてTVチューナ&ホームサーバ270がJavaバ
イトコード280cを転送先機器の種別に対応したネイ
ティブコードに変換したのと同様に、実施の形態2にお
けるTVチューナ&ホームサーバ330がJavaバイトコー
ド280cを転送先機器の種別に対応した家電仮想マシ
ンのバイトコードに変換すればよい。
【0068】また、本発明に係るバイトコード変換部や
家電仮想マシン自体は、専用のハードウェア(論理回
路)で実現することができるだけでなく、汎用のマイク
ロプロセッサで実行されるプログラムとして実現するこ
とも可能である。従って、本発明に係るプログラム協調
実行装置のためのプログラムをCD−ROM等の記録媒
体に格納して流通させたり、電波によって流通させるこ
ともできるのは言うまでもない。
【0069】
【発明の効果】上記目的を達成するために、本発明のプ
ログラム協調実行装置は、第1通信路を介して送信装置
と接続されると共に、第2通信路を介して複数の電子機
器と接続され、前記送信装置から送くられてくるプログ
ラムに基づく処理を前記複数の電子機器に実行させるた
めの制御を行なうプログラム協調実行装置であって、前
記第1通信路を介して前記送信装置から送くられてくる
プログラムであって協調動作をさせるための第1仮想マ
シン向けのバイトコードを受信する受信手段と、前記複
数の電子機器の中から、前記受信手段によって受信され
たバイトコードを実行させる対象となる電子機器を特定
する機器特定手段と、前記受信手段によって受信された
バイトコードを前記機器特定手段によって特定された電
子機器が備えるプロセッサ向けのプログラムコードに変
換する変換手段と、前記変換手段によって得られたプロ
グラムコードを前記機器特定手段によって特定された電
子機器に前記第2通信路を介して配送する配送手段とを
備えることを特徴とする。
【0070】これによって、送信装置から送られてきた
プログラムは、プログラム協調実行装置によって中継さ
れるだけでなく、コード変換された後に、目的とする電
子機器に配信されるので、家電機器に代表されるような
低速のマクロプロセッサと小さいサイズの実メモリを装
備した電子機器にも適用できるプログラム協調実行装置
が実現される。
【0071】ここで、前記複数の電子機器が備えるプロ
セッサは、実マシンであり、前記変換手段は、前記受信
手段によって受信されたバイトコードを前記機器特定手
段によって特定された電子機器が備える実マシン向けの
ネイティブコードに変換し、前記配送手段は、前記変換
手段によって得られたネイティブコードを前記機器特定
手段によって特定された電子機器に前記第2通信路を介
して配送する構成としてもよい。
【0072】これによって、協調実行の対象となる電子
機器は、ネイティブコードを実行するだけで済むので、
仮想マシンという大きなプログラムを装備する必要がな
くなる。また、前記受信手段は、前記バイトコードと共
に、そのバイトコードの転送先に関するヘッダ情報を受
信し、前記機器特定手段は、前記受信手段が受信したヘ
ッダ情報に基づいて前記電子機器を特定する構成として
もよい。
【0073】これによって、協調実行の対象となる電子
機器は、送信装置から送られてくるヘッダ情報によって
特定されるので、送信装置は、協調実行させたい電子機
器を確実に指定することが可能となる。また、前記変換
手段は、前記複数の電子機器が備える実マシンそれぞれ
について、前記バイトコードを各実マシン向けのネイテ
ィブコードに変換するための両コードの対応関係を予め
記憶している複数の変換テーブルと、前記機器特定手段
によって特定された電子機器に対応する前記変換テーブ
ルを参照することによって前記バイトコードを前記ネイ
ティブコードに変換するコード変換部とからなる構成と
してもよい。
【0074】これによって、対象となるマイクロプロセ
ッサごとにバイトコードとネイティブコードとの対応が
予めテーブル化されているので、そのテーブルを参照す
るだけで容易にコード変換がなされることから、その変
換処理が高速化されたり、テーブルの更新や追加などの
メンテナンスが容易になるという効果が発揮される。ま
た、前記複数の電子機器が備えるプロセッサは、第2仮
想マシンであり、前記変換手段は、前記受信手段によっ
て受信されたバイトコードを前記機器特定手段によって
特定された電子機器が備える第2仮想マシン向けのバイ
トコードに変換し、前記配送手段は、前記変換手段によ
って得られたバイトコードを前記機器特定手段によって
特定された電子機器に前記第2通信路を介して配送する
構成としてもよい。
【0075】これによって、協調実行の対象となる機器
は、送信されてきたバイトコードを実行する第1仮想マ
シンとは異なる第2仮想マシンを備えるにも拘わらず、
そのバイトコードを実行した場合と等しい動作を行うこ
とができるので、例えば、第2仮想マシンとして家電機
器の如く低速のマクロプロセッサと小さいメモリを装備
した電子機器でも実行可能なコンパクトな仮想マシンと
しておくことで、家電機器に好適なプログラム協調実行
装置が実現される。
【0076】また、前記第1仮想マシン向けのバイトコ
ードには、そのバイトコードを構成する複数のプログラ
ムモジュールを動的にリンクするための付加情報が含ま
れ、前記変換手段は、前記受信手段により受信されたバ
イトコードに含まれる前記付加情報を参照して前記複数
のプログラムモジュールをリンクすることにより前記付
加情報を含まない第2仮想マシン向けのバイトコードを
生成する構成としてもよい。
【0077】これによって、従来のJavaバイトコードに
付加されていたコンスタントプールの如く肥大化された
リンク情報が削除されたスリムなバイトコードが目的の
電子機器にダウンロードされるので、目的の電子機器
は、動的なリンク機能を持たない軽量な仮想マシンと比
較的小さい実メモリを装備すればよい。また、前記第1
通信路は、その通信路を使用するユーザが限定されてい
ない開放型のネットワークであり、前記第2通信路は、
その通信路を使用するユーザが一定の条件を満たす者に
限定されている閉鎖型のネットワークである構成として
もよい。
【0078】これによって、前記第2通信路でのプログ
ラム配送は、第1通信路の場合よりも安全性を確保する
必要性が少なくなり、よりスリムなバイトコードの転送
に好適なネットワークとなるので、複数の電子機器それ
ぞれは、必要最低限の機能を有する軽量な仮想マシンと
比較的小さい実メモリを装備すればよい。従って、家電
機器ネットワーク等のクローズなネットワークに接続さ
れた低速小メモリの家電機器に好適なプログラム協調実
行装置が実現される。
【0079】以上のように、本発明によって、ワークス
テーションやパーソナルコンピュータ等の高性能コンピ
ュータだけでなく、低性能なCPUが組み込まれた電子
機器をも対象として、同一プログラム(Javaバイトコー
ド)の流通による機器の連係動作が可能となり、これに
よって、優れたプログラム資源の容易な共有化が促進さ
れ、その実用的効果は極めて大きい。
【図面の簡単な説明】
【図1】実施の形態1のプログラム協調実行システムの
構成を示すブロック図である。
【図2】(a)は、図1における開発用コンピュータ、
(b)は、図1における家庭内に設置された家電機器
(エアコン及びTVチューナ&ホームサーバ)の機能を示
すブロック図である。
【図3】開発用コンピュータから各家庭に配送されるJa
vaバイトコードのデータ構造図である。
【図4】図2に示されたバイトコード変換部の詳細な構
成を示す機能ブロック図である。
【図5】同システム全体の動作手順を示すフローチャー
トである。
【図6】アプリケーションプログラム、バイトコード及
びネイティブコードの具体的なリスト例である。
【図7】実施の形態2のプログラム協調実行システムの
構成を示すブロック図である。
【図8】図7における家庭内に設置された家電機器(DV
Dサーバ及びTVチューナ&ホームサーバ)の構成を示す
機能ブロック図である。
【図9】(a)は従来の仮想マシン(Java仮想マシン)
の機能構成を示し、(b)は本発明に係る家電仮想マシ
ンの機能構成を示す図である。
【図10】TVチューナ&ホームサーバの家電仮想マシン
及第1実マシン部の詳細な構成を示す機能ブロック図で
ある。
【図11】TVチューナ&ホームサーバが備えるバイトコ
ード変換部の詳細な構成を示す機能ブロック図である。
【図12】バイトコード変換部の軽量化部の動作手順を
示すフローチャートである。
【図13】同システム全体の動作手順を示すフローチャ
ートである。
【図14】アプリケーションプログラム、バイトコード
及び家電バイトコードの具体的なリストを示す。
【図15】実施の形態3のプログラム協調実行システム
の構成を示すブロック図である。
【図16】(a)は、図15における家電バイトコード
作成用コンピュータ、(b)は、図15におけるTVチュ
ーナ&ホームサーバの構成を示す機能ブロック図であ
る。
【図17】従来のプログラム協調実行システムの構成を
示すブロック図である。
【符号の説明】
200 開発元(会社) 210 開発用コンピュータ 211 Javaコンパイラ部 212 衛星通信送信部 213 アプリケーションプログラム 220 通信衛星 230 家庭 240 エアコン 241 第2実マシン部 242 ネットワークアダプタ 250 冷蔵庫 260 電子レンジ 270 TVチューナ&ホームサーバ 271 衛星通信受信部 272 バイトコード変換部 272a 中間コード変換部 272b ヘッダ解析部 272c ネイティブコード生成部 272d〜f 実マシン用コードテーブル 273 第1実マシン部 274 ネットワークアダプタ 290 家庭内白物家電機器ネットワーク 290 家電機器ネットワーク 295 リモコン 300 デジタルTV 310 DVDサーバ 311 家電仮想マシン 312 第2実マシン部 313 ネットワークアダプタ 320 デジタルビデオカメラ 330 TVチューナ&ホームサーバ 331 バイトコード変換部 331a 軽量化部 331b 中間コード変換部 331c 家電バイトコード生成部 331d 家電仮想マシン用コードテーブル 331e ヘッダ解析部 332 家電仮想マシン 332a バイトコード読込み部 332b PC記憶部 332c ジャンプ先決定部 332c 命令ジャンプ先決定部 332d ジャンプ先テーブル 332e 実行制御部 332f 実マシンプログラム記憶部 333 第1実マシン部 333a システムライブラリ 333b ハードウェア 334 ネットワークアダプタ 340 リモコン 350 家庭内AV家電機器ネットワーク 430 電力会社 440 家電バイトコード作成用コンピュータ 440a バイトコード変換部 440b 衛星通信送信部 440c ネットワークアダプタ 450 ホームサーバ

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 第1通信路を介して送信装置と接続され
    ると共に、第2通信路を介して複数の電子機器と接続さ
    れ、前記送信装置から送くられてくるプログラムに基づ
    く処理を前記複数の電子機器に実行させるための制御を
    行なうプログラム協調実行装置であって、 前記第1通信路を介して前記送信装置から送くられてく
    るプログラムであって協調動作をさせるための第1仮想
    マシン向けのバイトコードを受信する受信手段と、 前記複数の電子機器の中から、前記受信手段によって受
    信されたバイトコードを実行させる対象となる電子機器
    を特定する機器特定手段と、 前記受信手段によって受信されたバイトコードを前記機
    器特定手段によって特定された電子機器が備えるプロセ
    ッサ向けのプログラムコードに変換する変換手段と、 前記変換手段によって得られたプログラムコードを前記
    機器特定手段によって特定された電子機器に前記第2通
    信路を介して配送する配送手段とを備えることを特徴と
    するプログラム協調実行装置。
  2. 【請求項2】 前記複数の電子機器が備えるプロセッサ
    は、実マシンであり、 前記変換手段は、前記受信手段によって受信されたバイ
    トコードを前記機器特定手段によって特定された電子機
    器が備える実マシン向けのネイティブコードに変換し、 前記配送手段は、前記変換手段によって得られたネイテ
    ィブコードを前記機器特定手段によって特定された電子
    機器に前記第2通信路を介して配送することを特徴とす
    る請求項1記載のプログラム協調実行装置。
  3. 【請求項3】 前記受信手段は、前記バイトコードと共
    に、そのバイトコードの転送先に関するヘッダ情報を受
    信し、 前記機器特定手段は、前記受信手段が受信したヘッダ情
    報に基づいて前記電子機器を特定することを特徴とする
    請求項2記載のプログラム協調実行装置。
  4. 【請求項4】 前記変換手段は、 前記複数の電子機器が備える実マシンそれぞれについ
    て、前記バイトコードを各実マシン向けのネイティブコ
    ードに変換するための両コードの対応関係を予め記憶し
    ている複数の変換テーブルと、 前記機器特定手段によって特定された電子機器に対応す
    る前記変換テーブルを参照することによって前記バイト
    コードを前記ネイティブコードに変換するコード変換部
    とからなることを特徴とする請求項3記載のプログラム
    協調実行装置。
  5. 【請求項5】 前記複数の電子機器が備えるプロセッサ
    は、第2仮想マシンであり、 前記変換手段は、前記受信手段によって受信されたバイ
    トコードを前記機器特定手段によって特定された電子機
    器が備える第2仮想マシン向けのバイトコードに変換
    し、 前記配送手段は、前記変換手段によって得られたバイト
    コードを前記機器特定手段によって特定された電子機器
    に前記第2通信路を介して配送することを特徴とする請
    求項1記載のプログラム協調実行装置。
  6. 【請求項6】 前記第1仮想マシン向けのバイトコード
    には、そのバイトコードを構成する複数のプログラムモ
    ジュールを動的にリンクするための付加情報が含まれ、 前記変換手段は、前記受信手段により受信されたバイト
    コードに含まれる前記付加情報を参照して前記複数のプ
    ログラムモジュールをリンクすることにより前記付加情
    報を含まない第2仮想マシン向けのバイトコードを生成
    することを特徴とする請求項5記載のプログラム協調実
    行装置。
  7. 【請求項7】 前記第1通信路は、その通信路を使用す
    るユーザが限定されていない開放型のネットワークであ
    り、 前記第2通信路は、その通信路を使用するユーザが一定
    の条件を満たす者に限定されている閉鎖型のネットワー
    クであることを特徴とする請求項1記載のプログラム協
    調実行装置。
  8. 【請求項8】 第1通信路を介して送信装置と接続され
    ると共に、第2通信路を介して複数の電子機器と接続さ
    れ、前記送信装置から送くられてくるプログラムに基づ
    く処理を前記複数の電子機器に実行させるための制御を
    行なう装置におけるプログラム協調実行方法であって、 前記第1通信路を介して前記送信装置から送くられてく
    るプログラムであって協調動作をさせるための第1仮想
    マシン向けのバイトコードを受信する受信ステップと、 前記複数の電子機器の中から、前記受信ステップにおい
    て受信されたバイトコードを実行させる対象となる電子
    機器を特定する機器特定ステップと、 前記受信ステップにおいて受信されたバイトコードを前
    記機器特定ステップにおいて特定された電子機器が備え
    るプロセッサ向けのプログラムコードに変換する変換ス
    テップと、 前記変換ステップによって得られたプログラムコードを
    前記機器特定ステップにおいて特定された電子機器に前
    記第2通信路を介して配送する配送ステップとを含むこ
    とを特徴とするプログラム協調実行方法。
  9. 【請求項9】 前記複数の電子機器が備えるプロセッサ
    は、実マシンであり、 前記変換ステップでは、前記受信ステップにおいて受信
    されたバイトコードを前記機器特定ステップにおいて特
    定された電子機器が備える実マシン向けのネイティブコ
    ードに変換し、 前記配送ステップでは、前記変換ステップにおいて得ら
    れたネイティブコードを前記機器特定ステップにおいて
    特定された電子機器に前記第2通信路を介して配送する
    ことを特徴とする請求項8記載のプログラム協調実行方
    法。
  10. 【請求項10】 前記複数の電子機器が備えるプロセッ
    サは、第2仮想マシンであり、 前記変換ステップでは、前記受信ステップにおいて受信
    されたバイトコードを前記機器特定ステップにおいて特
    定された電子機器が備える第2仮想マシン向けのバイト
    コードに変換し、 前記配送ステップでは、前記変換ステップにおいて得ら
    れたバイトコードを前記機器特定ステップにおいて特定
    された電子機器に前記第2通信路を介して配送すること
    を特徴とする請求項8記載のプログラム協調実行方法。
  11. 【請求項11】 第1通信路を介して送信装置と接続さ
    れると共に、第2通信路を介して複数の電子機器と接続
    され、前記送信装置から送くられてくるプログラムに基
    づく処理を前記複数の電子機器に実行させるための制御
    を行なうプログラム協調実行装置のための制御プログラ
    ムを記録したコンピュータ読み取り可能な記録媒体であ
    って、 前記制御プログラムは、 前記第1通信路を介して前記送信装置から送くられてく
    るプログラムであって協調動作をさせるための第1仮想
    マシン向けのバイトコードを受信する受信ステップと、 前記複数の電子機器の中から、前記受信ステップにおい
    て受信されたバイトコードを実行させる対象となる電子
    機器を特定する機器特定ステップと、 前記受信ステップにおいて受信されたバイトコードを前
    記機器特定ステップにおいて特定された電子機器が備え
    るプロセッサ向けのプログラムコードに変換する変換ス
    テップと、 前記変換ステップによって得られたプログラムコードを
    前記機器特定ステップにおいて特定された電子機器に前
    記第2通信路を介して配送する配送ステップとをコンピ
    ュータに実行させることを特徴とする記録媒体。
  12. 【請求項12】 前記複数の電子機器が備えるプロセッ
    サは、実マシンであり、 前記変換ステップでは、前記受信ステップにおいて受信
    されたバイトコードを前記機器特定ステップにおいて特
    定された電子機器が備える実マシン向けのネイティブコ
    ードに変換し、 前記配送ステップでは、前記変換ステップにおいて得ら
    れたネイティブコードを前記機器特定ステップにおいて
    特定された電子機器に前記第2通信路を介して配送する
    ことを特徴とする請求項11記載の記録媒体。
  13. 【請求項13】 前記複数の電子機器が備えるプロセッ
    サは、第2仮想マシンであり、 前記変換ステップでは、前記受信ステップにおいて受信
    されたバイトコードを前記機器特定ステップにおいて特
    定された電子機器が備える第2仮想マシン向けのバイト
    コードに変換し、 前記配送ステップでは、前記変換ステップにおいて得ら
    れたバイトコードを前記機器特定ステップにおいて特定
    された電子機器に前記第2通信路を介して配送すること
    を特徴とする請求項11記載の記録媒体。
  14. 【請求項14】 プログラム協調実行システムであっ
    て、 送信装置と、 複数の電子機器と、 第1通信路を介して前記送信装置と接続されると共に、
    第2通信路を介して前記複数の電子機器と接続され、前
    記送信装置から送くられてくるプログラムに基づく処理
    を前記複数の電子機器に実行させるための制御を行なう
    中継装置とからなり、 前記送信装置は、 ソースプログラムから第1仮想マシン向けのバイトコー
    ドを生成する手段と、 生成されたバイトコードを前記第1通信路を介して前記
    中継装置に送信する送信手段とを備え、 前記中継装置は、 前記送信装置から送くられてくるバイトコードを受信す
    る受信手段と、 前記複数の電子機器の中から、前記受信手段によって受
    信されたバイトコードを実行させる対象となる電子機器
    を特定する機器特定手段と、 前記受信手段によって受信されたバイトコードを前記機
    器特定手段によって特定された電子機器が備えるプロセ
    ッサ向けのプログラムコードに変換する変換手段と、 前記変換手段によって得られたプログラムコードを前記
    機器特定手段によって特定された電子機器に前記第2通
    信路を介して配送する配送手段とを備え、 前記複数の電子機器それぞれは、 前記中継装置から配送されてきたプログラムコードを受
    信する受信手段と、 受信した前記プログラムコードを実行するプロセッサと
    を備えることを特徴とするプログラム協調実行システ
    ム。
JP11277522A 1998-09-30 1999-09-29 プログラム協調実行装置 Pending JP2000172509A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11277522A JP2000172509A (ja) 1998-09-30 1999-09-29 プログラム協調実行装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP10-278782 1998-09-30
JP27878298 1998-09-30
JP11277522A JP2000172509A (ja) 1998-09-30 1999-09-29 プログラム協調実行装置

Publications (1)

Publication Number Publication Date
JP2000172509A true JP2000172509A (ja) 2000-06-23

Family

ID=26552432

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11277522A Pending JP2000172509A (ja) 1998-09-30 1999-09-29 プログラム協調実行装置

Country Status (1)

Country Link
JP (1) JP2000172509A (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003050628A (ja) * 2001-05-16 2003-02-21 Matsushita Electric Ind Co Ltd 遠隔監視システム
KR100438696B1 (ko) * 2001-04-13 2004-07-05 삼성전자주식회사 홈네트워크 환경에서의 디바이스 제어 시스템 및 방법
WO2006009287A1 (ja) * 2004-07-20 2006-01-26 Star Game's Corporation 自動変換用プログラムおよびプログラム変換サーバ
JP2006302031A (ja) * 2005-04-21 2006-11-02 Nippon Telegr & Teleph Corp <Ntt> アプリケーションプログラムの配信方法、およびこれに用いるサーバ装置
JP2008077659A (ja) * 2007-09-18 2008-04-03 Hitachi Ltd コントローラ、コントローラ管理システム及びコントローラ管理方法
JP2009211167A (ja) * 2008-02-29 2009-09-17 Fujitsu Ltd プログラム実行システム
KR100967250B1 (ko) * 2002-10-22 2010-07-01 엘지전자 주식회사 가전 제품의 시스템 소프트웨어 업그레이드 방법
JP2010198630A (ja) * 2010-04-16 2010-09-09 Sharp Corp プログラム管理システム
US8230083B2 (en) 2002-10-02 2012-07-24 Mitsubishi Denki Kabushiki Kaisha Communication adapter apparatus, communication adapter, method of writing data in nonvolatile memory, and electric apparatus and ROM writer used for the method
US8302081B2 (en) 2002-07-08 2012-10-30 Hitachi, Ltd. Data format conversion method and equipment, and controller management system using data format conversion equipment

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100438696B1 (ko) * 2001-04-13 2004-07-05 삼성전자주식회사 홈네트워크 환경에서의 디바이스 제어 시스템 및 방법
JP2003050628A (ja) * 2001-05-16 2003-02-21 Matsushita Electric Ind Co Ltd 遠隔監視システム
US8302081B2 (en) 2002-07-08 2012-10-30 Hitachi, Ltd. Data format conversion method and equipment, and controller management system using data format conversion equipment
US8230083B2 (en) 2002-10-02 2012-07-24 Mitsubishi Denki Kabushiki Kaisha Communication adapter apparatus, communication adapter, method of writing data in nonvolatile memory, and electric apparatus and ROM writer used for the method
KR100967250B1 (ko) * 2002-10-22 2010-07-01 엘지전자 주식회사 가전 제품의 시스템 소프트웨어 업그레이드 방법
WO2006009287A1 (ja) * 2004-07-20 2006-01-26 Star Game's Corporation 自動変換用プログラムおよびプログラム変換サーバ
JP2006302031A (ja) * 2005-04-21 2006-11-02 Nippon Telegr & Teleph Corp <Ntt> アプリケーションプログラムの配信方法、およびこれに用いるサーバ装置
JP4713927B2 (ja) * 2005-04-21 2011-06-29 日本電信電話株式会社 アプリケーションプログラムの配信方法、およびこれに用いるサーバ装置
JP2008077659A (ja) * 2007-09-18 2008-04-03 Hitachi Ltd コントローラ、コントローラ管理システム及びコントローラ管理方法
JP2009211167A (ja) * 2008-02-29 2009-09-17 Fujitsu Ltd プログラム実行システム
JP2010198630A (ja) * 2010-04-16 2010-09-09 Sharp Corp プログラム管理システム

Similar Documents

Publication Publication Date Title
EP0990965A2 (en) Program cooperative execution apparatus
EP1306756B1 (en) Data processing method and device
KR100441115B1 (ko) 정보 단말기의 자바 프로그램 처리 속도 향상을 위한 자바컴파일 온 디멘드 서비스 시스템 및 그 방법
Koshy et al. VMSTAR: synthesizing scalable runtime environments for sensor networks
USRE39486E1 (en) Extensible, replaceable network component system
KR20070121707A (ko) 자원-제약 셋톱 박스 환경에서 애플리케이션을 실행하는시스템
US5864850A (en) Asynchronous-event opening component of a network component system
US20020002605A1 (en) Server/client system and program for implementing application distribution in this server/client system
Kistler et al. A tree-based alternative to Java byte-codes
US20060090157A1 (en) Method of executing virtual machine application program and digital broadcast receiver using the same
CN100414517C (zh) 异构体系结构中的覆盖生成、管理的方法和设备
US9392051B2 (en) Application distribution supplying a dedicated application to a terminal from an application deposited by the developer
US9047101B2 (en) Method for compiling an intermediate code of an application
JP2005202963A (ja) Javaプログラムの処理速度を向上させるシステム及びその方法
KR20020085876A (ko) 객체지향 컴퓨터 프로그램의 로딩
JP2000172509A (ja) プログラム協調実行装置
WO1998038574A1 (en) Replaceable and extensible navigator component of a network component system
US7669197B1 (en) Embedded system employing component architecture platform
JPH0991143A (ja) データ処理方法および装置
CN114296864A (zh) 一种iso镜像转换成容器镜像的方法及设备
JP2005535011A (ja) インタラクティブテレビジョンのためのデータ処理装置および方法
JP2004192038A (ja) 情報処理装置、情報処理システム、情報処理プログラム、および該プログラムを記録した記録媒体
CN116661844A (zh) 配置文件处理方法、应用程序更新方法、装置、服务器
Amano et al. LEAD: A Language for Adaptable Applications
JP2005302055A (ja) データ処理方法および装置