(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-17
(45)【発行日】2022-01-26
(54)【発明の名称】ラッピング方法、登録方法、装置、レンダリングディバイス、及びプログラム
(51)【国際特許分類】
G06F 8/40 20180101AFI20220119BHJP
【FI】
G06F8/40
(21)【出願番号】P 2020087902
(22)【出願日】2020-05-20
【審査請求日】2020-05-20
(31)【優先権主張番号】201911001948.8
(32)【優先日】2019-10-21
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】512015127
【氏名又は名称】バイドゥ オンライン ネットワーク テクノロジー(ペキン) カンパニー リミテッド
(73)【特許権者】
【識別番号】521235408
【氏名又は名称】シャンハイ シャオドゥ テクノロジー カンパニー リミテッド
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100108213
【氏名又は名称】阿部 豊隆
(72)【発明者】
【氏名】ザン,ヤンヤン
(72)【発明者】
【氏名】リ,ロンロン
(72)【発明者】
【氏名】チェン,ジンチー
(72)【発明者】
【氏名】フゥー,ジアンチー
(72)【発明者】
【氏名】ゾウ,シボ
【審査官】金田 孝之
(56)【参考文献】
【文献】特表2016-514880(JP,A)
【文献】特開2013-109675(JP,A)
【文献】米国特許出願公開第2004/0172640(US,A1)
【文献】天野 憲樹,擬似的な適応メソッドの実現,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2005年12月13日,Vol. 105, No. 491,pp.7-12
【文献】内藤 謙一,Web全盛の今だからおぼえたい 基本からしっかり学ぶJavaScript,日経ソフトウエア,日本,日経BP社,2016年04月24日,Vol. 19, No. 7,pp.102-109
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/40-8/54
G06F 9/44-9/455
G06F 3/048-3/0489
(57)【特許請求の範囲】
【請求項1】
ラッパーモジュールに適用されるラッピング方法であって、
オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子を含む作成指令を、登録コンポーネントから受信することと、
前記オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子に基づき、前記ラッパーモジュールにおいて、対応するラッパーオブジェクトを作成することと、を含む、
ことを特徴とするラッピング方法。
【請求項2】
前記ラッパーモジュールは、作成インタフェースを含み、
前記作成指令を登録コンポーネントから受信することは、
前記作成インタフェースを介して、作成指令を登録コンポーネントから受信することを含み、
前記ラッピング方法は、
前記作成インタフェースを介して、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を、前記登録コンポーネントに送信すること、をさらに含む、
ことを特徴とする請求項1に記載のラッピング方法。
【請求項3】
前記ラッパーモジュールは、呼出しインターフェースをさらに含み、
前記ラッピング方法は、
前記呼出しインターフェースを介して、実行すべきラッパーオブジェクトの識別子、メソッド名およびパラメータを含む呼び出し指令を、呼び出しコンポーネントから受信することと、
オペレーションシステムにおいて実行すべきラッパーオブジェクトに対応するネイティブコードを実行するように、前記ラッパーモジュールにおいて、実行すべきラッパーオブジェクトの識別子に対応するラッパーオブジェクトを検索して得られた後、実行すべきラッパーオブジェクトのメソッド名に対応するメソッドを呼び出し、実行すべきラッパーオブジェクトのパラメータをロードすること、を含む、
ことを特徴とする請求項1に記載のラッピング方法。
【請求項4】
前記ラッパーモジュールは、フィードバックインタフェースをさらに含み、
前記ラッピング方法は、
前記フィードバックインタフェースを介して、前記ラッパーモジュールがオペレーションシステムから取得した実行結果を含むフィードバック情報を、仮想マシンに送信すること、を含む、
こと特徴とする請求項1に記載のラッピング方法。
【請求項5】
オペレーションシステムにおけるネイティブコードを予めラッピングして、各ラッパーオブジェクトの対応する識別子およびメソッド名を得る、ことを含む、
こと特徴とする請求項1に記載のラッピング方法。
【請求項6】
登録コンポーネントに適用される登録方法であって、
オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子を含む登録指令を、仮想マシンから受信することと、
前記ラッパーオブジェクトの識別子に基づき、ラッパーモジュールおいて、対応するラッパーオブジェクトを作成するように、前記ラッパーオブジェクトの識別子を含む作成指令を
前記ラッパーモジュールに送信することと、を含む、
ことを特徴とする登録方法。
【請求項7】
前記登録指令を仮想マシンから受信することは、
登録コンポーネントにおける登録インタフェースを介して、登録指令を仮想マシンから受信することを含み、
前記作成指令をラッパーモジュールに送信することは、
前記ラッパーモジュールにおける
作成インタフェースを介して、作成指令をラッパーモジュールに送信することを含む、
ことを特徴とする請求項6に記載の登録方法。
【請求項8】
前記作成インタフェースを介して、前記ラッパーモジュールから返送された、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を、受信することと、
前記仮想マシンにおいて、コンパイルにより前記オブジェクトコードに対応する実行コードを得るように、前記登録インタフェースを介して、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を、前記仮想マシンに送信すること、をさらに含む、
ことを特徴とする請求項7に記載の登録方法。
【請求項9】
ラッパーモジュールに適用されるラッピング装置であって、
オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子を含む作成指令を、登録コンポーネントから受信する第1受信ユニットと、
前記オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子に基づき、前記ラッパーモジュールにおいて、対応するラッパーオブジェクトを作成する作成ユニットと、を含む、
ことを特徴とするラッピング装置。
【請求項10】
前記ラッパーモジュールは、作成インタフェースを含み、
前記第1受信ユニットは、
前記作成インタフェースを介して、作成指令を登録コンポーネントから受信することにさらに用いられ、
前記ラッピング装置は、
前記作成インタフェースを介して、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を、前記登録コンポーネントに送信する第1送信ユニット、をさらに含む、
ことを特徴とする請求項9に記載のラッピング装置。
【請求項11】
前記ラッパーモジュールは、呼出しインターフェースをさらに含み、
前記ラッピング装置は、
前記呼出しインターフェースを介して、実行すべきラッパーオブジェクトの識別子、メソッド名およびパラメータを含む呼び出し指令を、呼び出しコンポーネントから受信する第2受信ユニットと、
オペレーションシステムにおいて実行すべきラッパーオブジェクトに対応するネイティブコードを実行するように、前記ラッパーモジュールにおいて、実行すべきラッパーオブジェクトの識別子に対応するラッパーオブジェクトを検索して得られた後、実行すべきラッパーオブジェクトのメソッド名に対応するメソッドを呼び出し、実行すべきラッパーオブジェクトのパラメータをロードする呼び出しユニットと、を含む、
ことを特徴とする請求項9に記載のラッピング装置。
【請求項12】
前記ラッパーモジュールは、フィードバックインタフェースをさらに含み、
前記ラッピング装置は、
前記フィードバックインタフェースを介して、前記ラッパーモジュールがオペレーションシステムから取得した実行結果を含むフィードバック情報を、仮想マシンに送信する第2送信ユニット、を含む、
こと特徴とする請求項9に記載のラッピング装置。
【請求項13】
オペレーションシステムにおけるネイティブコードを予めラッピングして、各ラッパーオブジェクトの対応する識別子およびメソッド名を得る事前ラッピングユニット、を含む、
こと特徴とする請求項9に記載のラッピング装置。
【請求項14】
登録コンポーネントに適用される登録装置であって、
オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子を含む登録指令を、仮想マシンから受信する第3受信ユニットと、
前記ラッパーオブジェクトの識別子に基づき、ラッパーモジュールおいて、対応するラッパーオブジェクトを作成するように、前記ラッパーオブジェクトの識別子を含む作成指令を
前記ラッパーモジュールに送信する第3送信ユニットと、を含む、
ことを特徴とする登録装置。
【請求項15】
前記第3受信ユニットは、
登録コンポーネントにおける登録インタフェースを介して、登録指令を仮想マシンから受信することにさらに用いられ、
前記第3送信ユニットは、
前記ラッパーモジュールにおける
作成インタフェースを介して、作成指令をラッパーモジュールに送信することにさらに用いられる、
ことを特徴とする請求項14に記載の登録装置。
【請求項16】
前記作成インタフェースを介して、前記ラッパーモジュールから返送された、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を、受信する第4受信ユニットと、
前記仮想マシンにおいて、コンパイルにより前記オブジェクトコードに対応する実行コードを得るように、前記登録インタフェースを介して、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を、前記仮想マシンに送信する第4送信ユニットと、をさらに含む、
ことを特徴とする請求項15に記載の登録装置。
【請求項17】
実行エンジンと、仮想マシンと、登録コンポーネントと、を備え、
前記実行エンジンは、オブジェクトコードをロードして得られた初期化指令を、仮想マシンに送信し、前記仮想マシンから返送された、前記オブジェクトコードに対応する実行コードを受信することに用いられ、
前記仮想マシンは、
前記実行エンジンがオブジェクトコードをロードして得られた初期化指令を、前記実行エンジンから受信し、
前記初期化指令に基づき、オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子を含む登録指令を、登録コンポーネントに送信し、
前記ラッパーオブジェクトとオペレーティングシステムにおけるネイティブコードとのマッピング関係に基づき、コンパイルにより前記オブジェクトコードに対応する実行コードを得、
前記実行コードを前記実行エンジンに送信することに用いられ、
前記登録コンポーネントは、請求項6~8のいずれかの1項に記載の登録方法を実行することに用いられる、
ことを特徴するレンダリングデバイス。
【請求項18】
前記実行エンジンは、前記実行コードを実行して得られた実行指令を前記仮想マシンに送信することに用いられ、
前記レンダリングデバイスは、
ラッパーモジュールにおけるラッパーオブジェクトを呼び出すように、前記仮想マシンからの呼び出し指令を受信する呼び出しコンポーネントと、
請求項1~5のいずれかの1項に記載のラッピング方法を実行するラッパーモジュールと、をさらに含む、
ことを特徴とする請求項17記載のレンダリングデバイス。
【請求項19】
前記実行エンジンからの前記初期化指令を仮想マシンに送信し、前記仮想マシンからの前記実行コードを前記実行エンジンに送信するブリッジを、さらに含む、
ことを特徴とする請求項17または18に記載のレンダリングデバイス。
【請求項20】
少なくとも1つのプロセッサと、
少なくとも1つのプロセッサに通信接続するメモリを備え、
前記メモリは、前記少なくとも1つのプロセッサに実行される命令を記憶し、上記命令は、前記少なくとも1つのプロセッサに実行される場合、前記少なくとも1つのプロセッサに請求項1~5のいずれか1項に記載のラッピング方法または請求項6~8のいずれか1項に記載の登録方法を実行させる、
ことを特徴とする電子機器。
【請求項21】
コンピュータ命令を記憶している非一過性のコンピュータ可読記憶媒体であって、
前記コンピュータ命令は、コンピュータに請求項1~5のいずれか1項に記載のラッピング方法または請求項6~8のいずれか1項に記載の登録方法を実行させる、
ことを特徴とする非一過性のコンピュータ可読記憶媒体。
【請求項22】
コンピュータにおいて、プロセッサにより実行される場合、請求項1~5のいずれか1項に記載のラッピング方法または請求項6~8のいずれか1項に記載の登録方法を実現することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ分野に関し、特にコンピュータ表示分野に関する。
【背景技術】
【0002】
レンダリングエンジンの主な作用はリソースファイルをユーザの可視できる結果に変換することである。関連技術において、レンダリング効果を実現するよう、装置端末にてレンダリングエンジンによってリソースファイルをコンパイルする。しかし、レンダリングエンジンによるコンパイル処理は大量の計算を行う必要があり、レンダリング速度が遅いなどの問題が存在している。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本発明は、上記の技術課題を解決するために、ラッピング方法、登録方法、装置およびレンダリングディバイスを提供する。
【課題を解決するための手段】
【0004】
第1態様において、本発明の実施形態は、ラッピング方法を提供している。当該ラッピング方法は、ラッパーモジュールに適用され、
オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子を含む作成指令を、登録コンポーネントから受信することと、
オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子に基づき、ラッパーモジュールにおいて、対応するラッパーオブジェクトを作成することと、を含む。
【0005】
本発明の実施形態によれば、オブジェクトコードにおける登録すべきラッパーオブジェクトの識別子に基づき、ラッパーモジュールにおいて、ラッパーオブジェクトを素早く作成することができ、ラッパーオブジェクトの再利用の実現に役立ち、コードの実行効率を向上させることができる。
【0006】
1つの実施形態において、ラッパーモジュールは、作成インタフェースを含み、
作成指令を登録コンポーネントから受信することは、
作成インタフェースを介して、作成指令を登録コンポーネントから受信することを含み、
当該ラッピング方法は、作成インタフェースを介して、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を、登録コンポーネントに送信すること、をさらに含む。
【0007】
本発明の実施形態によれば、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を登録コンポーネントに返送された後、登録コンポーネントは上記のマッピング関係を仮想マシンに送信することができる。仮想マシンが登録コンポーネントにラッパーモジュールにおいてラッパーオブジェクトを作成させるように制御することにより、ラッパーオブジェクトとオペレーティングシステムのネイティブコードとのマッピング関係に基づいて、コンパイルによりオブジェクトコードに対応する実行コードを得ることができる。これにより、コードのコンパイル効率及び実行効率の向上に役立つ。
【0008】
1つの実施形態において、ラッパーモジュールは、呼出しインターフェースをさらに含み、当該ラッピング方法は、
呼出しインターフェースを介して、実行すべきラッパーオブジェクトの識別子、メソッド名およびパラメータを含む呼び出し指令を、呼び出しコンポーネントから受信することと、
オペレーションシステムにおいて実行すべきラッパーオブジェクトに対応するネイティブコードを実行するように、ラッパーモジュールにおいて、実行すべきラッパーオブジェクトの識別子に対応するラッパーオブジェクトを検索して得られた後、実行すべきラッパーオブジェクトのメソッド名に対応するメソッドを呼び出し、実行すべきラッパーオブジェクトのパラメータをロードすること、を含む。
【0009】
本発明の実施形態によれば、呼び出しコンポーネントは既に作成されたラッパーオブジェクトを呼び出すことができ、更にオペレーティングシステムは、呼び出されたラッパーオブジェクトに対応するネイティブコードを実行することができるため、コードのコンパイルとコードの実行とをを分けることができ、コードのコンパイル効率と実行効率を向上させることができる。
【0010】
1つの実施形態において、ラッパーモジュールは、フィードバックインタフェースをさらに含み、当該ラッピング方法は、
フィードバックインタフェースを介して、ラッパーモジュールがオペレーションシステムから取得した実行結果を含むフィードバック情報を、仮想マシンに送信すること、を含む。
【0011】
本発明の実施形態によれば、ラッパーモジュールは仮想マシンを介して、オペレーションシステムの実行結果等を実行エンジンにフィードバックするため、実行エンジンはフィードバック情報と合わせて後続の実行コードを続けて実行することができる。
【0012】
1つの実施形態において、当該ラッピング方法は、
オペレーションシステムにおけるネイティブコードを予めラッピングして、各ラッパーオブジェクトの対応する識別子およびメソッド名を得る、ことを含む。
【0013】
本発明の実施形態によれば、オペレーションシステムにおけるネイティブコードを予めラッピングしておくため、後にラッパーオブジェクトを素早く作成することができ、ラッパーオブジェクトの再利用に役立つ。
【0014】
第2態様において、本発明の実施形態は、登録方法を提供している。当該登録方法は、登録コンポーネントに適用され、
オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子を含む登録指令を、仮想マシンから受信することと、
ラッパーオブジェクトの識別子に基づき、ラッパーモジュールおいて、対応するラッパーオブジェクトを作成するように、ラッパーオブジェクトの識別子を含む作成指令をラッパーモジュールに送信することと、を含む。
【0015】
1つの実施形態において、登録指令を仮想マシンから受信することは、登録コンポーネントにおける登録インタフェースを介して、登録指令を仮想マシンから受信することを含み、
作成指令をラッパーモジュールに送信することは、ラッパーモジュールにおける作成インターフェスを介して、作成指令をラッパーモジュールに送信することを含む。
【0016】
1つの実施形態において、ラッパーモジュールは、作成インターフェスを含み、当該登録方法は、
作成インタフェースを介して、ラッパーモジュールから返送された、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を、受信することと、
仮想マシンにおいて、コンパイルによりオブジェクトコードに対応する実行コードを得るように、登録インタフェースを介して、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を、仮想マシンに送信すること、をさらに含む。
【0017】
第3態様において、本発明の実施形態は、ラッピング装置を提供している。当該ラッピング装置は、ラッパーモジュールに適用され、
オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子を含む作成指令を、登録コンポーネントから受信する第1受信ユニットと、
オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子に基づき、ラッパーモジュールにおいて、対応するラッパーオブジェクトを作成する作成ユニットと、を含む。
【0018】
1つの実施形態において、ラッパーモジュールは、作成インタフェースを含み、
第1受信ユニットは、作成インタフェースを介して、作成指令を登録コンポーネントから受信することにさらに用いられ、
当該ラッピング装置は、作成インタフェースを介して、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を、登録コンポーネントに送信する第1送信ユニット、をさらに含む。
【0019】
1つの実施形態において、ラッパーモジュールは、呼出しインターフェースをさらに含み、当該ラッピング装置は、
呼出しインターフェースを介して、実行すべきラッパーオブジェクトの識別子、メソッド名およびパラメータを含む呼び出し指令を、呼び出しコンポーネントから受信する第2受信ユニットと、
オペレーションシステムにおいて実行すべきラッパーオブジェクトに対応するネイティブコードを実行するように、ラッパーモジュールにおいて、実行すべきラッパーオブジェクトの識別子に対応するラッパーオブジェクトを検索して得られた後、実行すべきラッパーオブジェクトのメソッド名に対応するメソッドを呼び出し、実行すべきラッパーオブジェクトのパラメータをロードする呼び出しユニットと、を含む。
【0020】
1つの実施形態において、ラッパーモジュールは、フィードバックインタフェースをさらに含み、当該ラッピング装置は、
フィードバックインタフェースを介して、ラッパーモジュールがオペレーションシステムから取得した実行結果を含むフィードバック情報を、仮想マシンに送信する第2送信ユニット、を含む。
【0021】
1つの実施形態において、当該ラッピング装置は、
オペレーションシステムにおけるネイティブコードを予めラッピングして、各ラッパーオブジェクトの対応する識別子およびメソッド名を得る事前ラッピングユニット、を含む。
【0022】
第4態様において、本発明の実施形態は、登録装置を提供している。当該登録装置は、登録コンポーネントに適用され、
オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子を含む登録指令を、仮想マシンから受信する第3受信ユニットと、
ラッパーオブジェクトの識別子に基づき、ラッパーモジュールおいて、対応するラッパーオブジェクトを作成するように、ラッパーオブジェクトの識別子を含む作成指令をラッパーモジュールに送信する第3送信ユニットと、を含む。
【0023】
1つの実施形態において、第3受信ユニットは、登録コンポーネントにおける登録インタフェースを介して、登録指令を仮想マシンから受信することにさらに用いられ、
第3送信ユニットは、ラッパーモジュールにおける作成インターフェスを介して、作成指令をラッパーモジュールに送信することにさらに用いられる。
【0024】
1つの実施形態において、当該登録装置は、
作成インタフェースを介して、ラッパーモジュールから返送された、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を、受信する第4受信ユニットと、
仮想マシンにおいて、コンパイルによりオブジェクトコードに対応する実行コードを得るように、登録インタフェースを介して、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を、仮想マシンに送信する第4送信ユニットと、をさらに含む。
【0025】
第5態様において、本発明の実施形態は、レンダリングデバイスを提供する。該レンダリングデバイスは、実行エンジンと、仮想マシンと、登録コンポーネントと、を備え、
実行エンジンは、オブジェクトコードをロードして得られた初期化指令を、仮想マシンに送信し、仮想マシンから返送された、オブジェクトコードに対応する実行コードを受信することに用いられ、
仮想マシンは、
実行エンジンがオブジェクトコードをロードして得られた初期化指令を、実行エンジンから受信し、
初期化指令に基づき、オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子を含む登録指令を、登録コンポーネントに送信し、
ラッパーオブジェクトとオペレーティングシステムにおけるネイティブコードとのマッピング関係に基づき、コンパイルによりオブジェクトコードに対応する実行コードを得、
実行コードを実行エンジンに送信することに用いられ、
登録コンポーネントは、本願の実施形態における登録方法を実行することに用いられる。
【0026】
1つの実施形態において、実行エンジンは、実行コードを実行して得られた実行指令を仮想マシンに送信することに用いられ、
当該レンダリングデバイスは、
ラッパーモジュールにおけるラッパーオブジェクトを呼び出すように、仮想マシンからの呼び出し指令を受信する呼び出しコンポーネントと、
本発明の実施形態におけるラッピング方法を実行するラッパーモジュールと、
をさらに含む。
【0027】
1つの実施形態において、当該ラッピングディバイスは、実行エンジンからの初期化指令を仮想マシンに送信し、仮想マシンからの実行コードを実行エンジンに送信するブリッジを、さらに含む。
【0028】
第6態様において、本発明の実施形態は、電子機器を提供している。当該電子機器は、
少なくとも1つのプロセッサと、
少なくとも1つのプロセッサに通信接続するメモリを備え、
メモリは、少なくとも1つのプロセッサに実行される命令を記憶し、上記命令は、少なくとも1つのプロセッサに実行される場合、少なくとも1つのプロセッサに第1態様または第2態様におけるいずれか1項のラッピング方法または登録方法を実行させる。
【0029】
第7態様において、本発明の実施形態は、コンピュータに第1態様または第態様におけるいずれか1項のラッピング方法または登録方法を実行させるコンピュータ命令を記憶している非一過性のコンピュータ可読記憶媒体を提供している。
【発明の効果】
【0030】
上記本発明の実施形態のうちの少なくとも1つの実施形態は、下記のメリット及び有益な効果を有する。
【0031】
すなわち、本発明の実施形態によれば、オブジェクトコードにおける登録すべきラッパーオブジェクトの識別子に基づき、ラッパーモジュールにおいて、ラッパーオブジェクトを素早く作成することができ、ラッパーオブジェクトの再利用の実現に役立ち、コードの実行効率を向上させることができる。
【0032】
上記の選択可能な実施形態によるその他の効果は、具体的な実施形態とあわせて後述する。
【図面の簡単な説明】
【0033】
添付図面は、本開示の理解を促すためのものであり、いかなる限定を目的としない。
【
図1】本発明の実施形態に係るラッピング方法のフローチャートである。
【
図2A】本発明の実施形態に係るラッピング方法におけるコードを示す図である。
【
図2B】本発明の実施形態に係るラッピング方法におけるコードを示す図である。
【
図3】本発明の実施形態に係るラッピング方法の適用例を示す図である。
【
図4】本発明の実施形態に係るラッピング方法のフローチャートである。
【
図5】本発明の実施形態に係るラッパーモジュールのラッピングインタフェースの概略図である。
【
図6】本発明の実施形態に係る登録方法のフローチャートである。
【
図7】本発明の実施形態に係る登録方法のフローチャートである。
【
図8】本発明の実施形態に係るラッピング装置の構成のブロック図である。
【
図9】本発明の実施形態に係るラッピング装置の構成のブロック図である。
【
図10】本発明の実施形態に係る登録装置の構成のブロック図である。
【
図11】本発明の実施形態に係る登録装置の構成のブロック図である。
【
図12】本発明の実施形態に係るレンダリングディバイスの構成のブロック図である。
【
図13】本発明の実施形態に係るレンダリングディバイスの構成のブロック図である。
【
図14】本発明の実施形態に係るレンダリングディバイスの応用シーンを示す図である。
【
図15】本発明の実施形態を実現するための電子機器のブロック図である。
【発明を実施するための形態】
【0034】
以下、図面を参照しながら本発明の例示的な実施形態を説明するが、本発明の実施形態の様々な詳細が理解を容易にするために含まれており、それらは単なる例示的と考えられるべきである。したがって、当業者は、本発明の範囲及び旨から逸脱することなく、本発明明細書に記載された実施形態に対して様々な変更及び修正を行うことができることを理解すべきである。同様に、以下の説明では、公知な機能及び構造についての説明は、明瞭かつ簡明のために省略される。
【0035】
図1は、本発明の実施形態によるラッピング方法のフローチャートである。
図1に示すように、このラッピング方法は、ラッパーモジュールに適用することができ、以下のステップS11~S12を含むことができる。
【0036】
ステップS11において、オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子を含む作成指令を、登録コンポーネントから受信する。
【0037】
ステップS12において、オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子に基づき、ラッパーモジュールにおいて、対応するラッパーオブジェクトを作成する。
【0038】
本発明の実施形態では、ラッパーオブジェクトは、事前にオペレーティングシステムのネイティブコードをラッピングして得られたのもであってもよい。各ラッパーオブジェクトは、対応する識別子及びメソッド名を有する。ラッパーオブジェクトのタイプは、複数があり、イメージコンポーネント(Image)、ビューコンポーネント(View)、テキストコンポーネント(Text)、イメージビューコンポーネント(ImageView)、ページコンポーネント(Pager)、ページマネージャコンポーネント(PageManager)、コンテナコンポーネント(Container)、スライドウィンドウコンポーネント(ScrollView)、フレームコンポーネント(Frame)、リストコンポーネント(List)、ネットワークコンポーネント(Network)などを含むが、これに限定されない。1つの実施形態において、該ラッピング方法は、オペレーションシステムにおけるネイティブコードを予めラッピングして、各ラッパーオブジェクトの対応する識別子およびメソッド名を得る、ことをさらに含む。後にラッパーオブジェクトを素早く作成することができ、さらにラッパーオブジェクトの再利用にも役立つ。
【0039】
一例では、オブジェクトコードは、例えば、レンダリング効果などの機能を実現するのに必要なコードを含んでもよい。例えば、
図2Aに示すように、オブジェクトコードには、あるイメージコンポーネント(Image,ピクチャコンポーネントとも言う)のレンダリングに要するコードが含まれてもよく、このコードには、当該イメージコンポーネントのタイプ「type」、イメージアドレス「source」、伸縮方式「scale」、幅「width」、高さ「height」などの属性が含まれてもよい。また、
図2Bに示すように、オブジェクトコードには、あるスライドウィンドウコンポーネント(ScrollView)のレンダリングに要するコードが含まれてもよく、このコードには、当該スライドウィンドウコンポーネントのタイプ「type」、項目「item」などの属性が含まれてもよく、方向「direction」、幅「width」、高さ「height」などの属性が含まれてもよい。
【0040】
一例では、サーバにおいてレンダリングテンプレートを用いて、デバイス端末の実行しやすいオブジェクトコードを作成することができる。デバイス端末は、オブジェクトコードを受信した後、これらのコードを実行し、スクリーンに表示することができる。
図3に示すように、実行エンジン31は、JavaScript(JSと略称される)フォーマットのオブジェクトコード、例えばプロダクトコード(product code)を受信した後に、当該オブジェクトコードのロード中において、仮想マシン32(例えば、Atom VM)に初期化指令を送信することができる。
【0041】
一実施形態において、初期化指令には、初期化すべきラッパーオブジェクトの識別子が含まれている。他の実施形態では、初期化指令には、ラッパーオブジェクトの識別子に加えて、ラッパーオブジェクトのメソッド名及び/又はパラメータが含まれてもよい。ここで、異なるオブジェクトコードについて、初期化すべきラッパーオブジェクトの数量及びタイプは異なる場合がある。1つのラッパーオブジェクトには、1つまたは複数のメソッド名が含まれてもよく、各メソッド名は、オペレーティングシステムにおける、やり取りに関するある関数名に対応してもよい。例えば、1つのピクチャのラッパーオブジェクトとして、Androidシステムにおいて対応するものは、Image(イメージコンポーネント)となり、イメージリソースを設置する方法は、ImageオペレーティングシステムにおけるsetImageメソッドに対応する。パラメータには、あるメソッド名に対応するメソッドの実行に要するリソース、例えば、あるイメージのユニフォームリソースロケータ(uniform resource locator、URL)アドレスが含まれてもよい。
【0042】
仮想マシンは必要に応じて、オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子を含む登録指令を、登録コンポーネントに送信することができる。登録コンポーネントは登録指令を受信した後、登録すべきラッパーオブジェクトの識別子を含む作成指令をラッパーモジュールに送信することができる。ラッパーモジュールは作成指令を受信した後、ラッパーモジュールおいて、この識別子に対応するラッパーオブジェクトを作成することができる。
【0043】
他の実施形態では、登録指令には、ラッパーオブジェクトの識別子に加えて、ラッパーオブジェクトのメソッド名及び/又はパラメータが含まれてもよい。作成指令には、ラッパーオブジェクトの識別子に加えて、ラッパーオブジェクトのメソッド名及び/又はパラメータが含まれてもよい。
【0044】
また、初期化指令と登録指令と作成指令との内容やフォーマットは、同じでも異なっていてもよい。つまり、仮想マシンは、受信した初期化指令の内容及びフォーマットを修正して登録コンポーネントに送信してもよいし、修正せずに初期化指令を登録指令として登録コンポーネントに直接転送してもよい。登録コンポーネントは、仮想マシンから受信した登録指令の内容及びフォーマットを修正してラッパーモジュールに送信してもよいし、修正せずに登録指令を作成指令としてラッパーモジュールに直接転送してもよい。
【0045】
一例では、
図3に示すように、仮想マシン32は、初期化指令を受信した後に、登録指令を登録コンポーネント33、例えば、ラッパーレジストリコンポーネント(Wrapper Registry)に送信してもよい。登録コンポーネント33は、登録指令を受信した後に、ラッパーモジュール(Wrapper)34に作成指令を送信することができ、作成指令には、オブジェクトコードに登録すべきラッパーオブジェクトの識別子、メソッド名、及びパラメータが含まれる。ラッパーモジュール34は、この作成指令に基づいて、オブジェクトコードの実行に要するラッパーオブジェクト341を作成することができる。ラッパーオブジェクトのタイプは、複数があり、イメージコンポーネント(Image)、ビューコンポーネント(View)、テキストコンポーネント(Text)、イメージビューコンポーネント(ImageView)、ページコンポーネント(Pager)、ページマネージャコンポーネント(PageManager)、コンテナコンポーネント(Container)、スライドウィンドウコンポーネント(ScrollView)、フレームコンポーネント(Frame)、リストコンポーネント(List)、ネットワークコンポーネント(Network)などを含むが、これに限定されない。
【0046】
一例では、あるオブジェクトコードの一部に対応するラッパーオブジェクトがイメージコンポーネント(Image)である場合、該ラッパーオブジェクトの識別子は、「Image」であってもよく、メソッド名は、setImageであってもよく、パラメータとして、幅、長さ、及びURLアドレスなどを含んでもよい。
【0047】
ラッパーモジュールにおいて各ラッパーオブジェクトを作成することで、各ラッパーオブジェクトとオペレーティングシステムのネイティブコードとのマッピング関係を得ることができる。ラッパーオブジェクトが登録かつ作成された後、ラッパーモジュールがこのマッピング関係を登録コンポーネントに返送し、登録コンポーネントが該マッピング関係を仮想マシンに返送し、仮想マシンが該マッピング関係に基づいて、コンパイルによりオブジェクトコードに対応する実行コードを得ることができる。その後、仮想マシンは、該実行コードを実行エンジンに実行させるように送信することができる。
【0048】
本発明の実施例において、オブジェクトコードにおける登録すべきラッパーオブジェクトの識別子に基づき、ラッパーモジュールにおいて、ラッパーオブジェクトを素早く作成することができ、ラッパーオブジェクトの再利用の実現に役立ち、コードの実行効率を向上させることができる。また、仮想マシンが登録コンポーネントにラッパーモジュールにおいてラッパーオブジェクトを作成させるように制御することにより、ラッパーオブジェクトとオペレーティングシステムのネイティブコードとのマッピング関係に基づいて、コンパイルによりオブジェクトコードに対応する実行コードを得るため、コードのマッピングと呼び出しとをを分けることができ、複数のラッパーオブジェクトを連続的に呼び出すことができ、オブジェクトの再利用の実現のみにならず、コードのコンパイル効率と実行効率を向上させることもできる。
【0049】
一実施形態では、
図4に示すように、ラッパーモジュールは、作成インタフェースを含み、ステップS11において、作成インタフェースを介して、作成指令を登録コンポーネントから受信することを含む。
この方法は、ステップS13において、作成インタフェースを介して、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を、登録コンポーネントに送信すること、をさらに含む。
【0050】
一実施形態では、
図4に示すように、ラッパーモジュールは、呼出しインターフェースをさらに含み、当該方法は、
ステップS14において、呼出しインターフェースを介して、実行すべきラッパーオブジェクトの識別子、メソッド名およびパラメータを含む呼び出し指令を、呼び出しコンポーネントから受信することと、
ステップS15において、オペレーションシステムにおいて実行すべきラッパーオブジェクトに対応するネイティブコードを実行するように、ラッパーモジュールにおいて、実行すべきラッパーオブジェクトの識別子に対応するラッパーオブジェクトを検索して得られた後、実行すべきラッパーオブジェクトのメソッド名に対応するメソッドを呼び出し、実行すべきラッパーオブジェクトのパラメータをロードすること、を含む。
【0051】
一実施形態では、実行エンジンは、実行コードを受信した後、実行すべきラッパーオブジェクトの識別子、メソッド名、及びパラメータを含む実行指令を仮想マシンに送信することができる。仮想マシンは実行エンジンからの実行指令を受信した後、呼出しインターフェースを介して、実行すべきラッパーオブジェクトの識別子、メソッド名およびパラメータを含む呼び出し指令を、呼び出しコンポーネントに送信することができる。呼び出しコンポーネントは、実行すべきラッパーオブジェクトの識別子、メソッド名およびパラメータを含む呼び出し指令をラッパーモジュールに送信することができる。この実施例において、仮想マシンが受信した実行指令と送信した呼び出し指令とは、その内容やフォーマットが同じでも異なっていてもよい。つまり、仮想マシンは、受信した実行指令の内容及びフォーマットを修正して呼び出しコンポーネントに送信してもよいし、修正せずに実行指令を呼び出し指令として呼び出しコンポーネントに直接転送してもよい。仮想マシンが呼び出しコンポーネントに送信した呼び出し指令と、呼び出しコンポーネントがラッパーモジュールに送信した呼び出し指令とは、その内容やフォーマットが同じでも異なっていてもよい。つまり、呼び出しコンポーネントは、受信した呼び出し指令の内容及びフォーマットを修正して呼び出しコンポーネントに送信してもよいし、修正せずに呼び出し指令をラッパーモジュールに直接転送してもよい。
【0052】
本発明の実施形態では、オブジェクトコードの実行に要するラッパーオブジェクトは、1つまたは複数ある場合がある。オブジェクトコードの実行に要するラッパーオブジェクトが複数である場合、登録と呼び出しの実行は、シリアルであってよいし、パラレルであってもよい。
図3に示すように、仮想マシン32は、登録コンポーネントによってすべてのラッパーオブジェクトをシリアルに作成した後、インヴォーカー(Invoker)35などの呼び出しコンポーネントによって各ラッパーオブジェクトを呼び出してもよいし、登録コンポーネントによって各ラッパーオブジェクトを作成するプロセスにおいて、呼び出しコンポーネントによって作成されたラッパーオブジェクトをパラレルに呼び出してもよい。
【0053】
一実施形態では、呼び出しコンポーネントは、インヴォーカー(Invoker)である。仮想マシンが、ラッパーオブジェクトの識別子、メソッド名、及びパラメータを利用して、ラッパーモジュールにおいて各ラッパーオブジェクトを呼び出し、オペレーティングシステムにおいて各ラッパーオブジェクトの対応するネイティブコードを実行するように、インヴォーカーを制御するため、コードのマッピングと呼び出しとが、コードのマッピングと呼び出しとを分けることができ、複数のラッパーオブジェクトを連続的に呼び出すことができ、コードの実行効率を向上させることもできる。
【0054】
インヴォーカーは、呼び出し指令を受信した後、ラッパーモジュールにおいて、実行すべきラッパーオブジェクトの識別子「Image」に対応するラッパーオブジェクトやイメージコンポーネントを検索して得ることができる。そして、そのイメージコンポーネントのメソッド名に対応するメソッドを呼び出し、そのイメージコンポーネントの長さ、幅、及びURLアドレスにおけるイメージなどをロードする。さらに、オペレーティングシステムにおいてイメージコンポーネントを必要とするネイティブコードを実行することにより、このイメージコンポーネントのレンダリング効果をスクリーンに表示する。
【0055】
実行コードにおいて実行すべき複数のラッパーオブジェクトが含まれている場合、実行エンジンは実行コードの論理的な順序で仮想マシンに複数の実行指令を送信し、さらに、仮想マシンはインヴォーカーに複数の呼び出し指令を送信し、これらのラッパーオブジェクトを順次に呼び出すことができる。例えば、実行すべきラッパーオブジェクトにイメージコンポーネント、スライドウィンドウコンポーネント、及びリストコンポーネントが含まれている場合、実行エンジンは、実行コードの論理的な順序に従って、イメージコンポーネント、スライドウィンドウコンポーネント、リストコンポーネントという順番で表示するようにこれらのコンポーネントの呼び出しを制御することができる。実行エンジンは、仮想マシンとインヴォーカーを介して、この順番でこれらのイメージコンポーネント、スライドウィンドウコンポーネント、及びリストコンポーネントを順次に呼び出すことができる。
【0056】
1つの実施形態では、ラッパーモジュールは、フィードバックインタフェースをさらに含み、該ラッピング方法は、フィードバックインタフェースを介して、ラッパーモジュールがオペレーションシステムから取得した実行結果を含むフィードバック情報を、仮想マシンに送信すること、を含む。
【0057】
ラッパーモジュールは、オペレーティングシステムからラッパーオブジェクトに対応するネイティブコードの実行結果を取得した後に、その実行結果を含むフィードバック情報を仮想マシンに送信することができる。オペレーティングシステムに他の変化があり、例えば、システムの電力量が低い場合、ラッパーモジュールは、フィードバック情報を介してこの変化を仮想マシンに送信することもできる。その後、仮想マシンは、フィードバック情報を実行エンジンに送信することができる。実行エンジンは、フィードバック情報と合わせて後続の実行コードを続けて実行することができる。例えば、実行エンジンは、システムの電力量が低いというフィードバックメッセージを受信した後、現在のコードを実行した時点で、電力量が低いというメッセージをユーザーにフィードバックする。
【0058】
一実施形態では、
図5に示すように、デバイス端末のオペレーティングシステムにおけるネイティブコードを事前にラッピングした後、各ラッパーオブジェクトに対応する識別子及びメソッド名を得ることができる。例えば、ラッパー(wrapper)クラスによって、デバイス端末のコンポーネント及び能力をラッピングすることで、上位層の呼び出しに適すインターフェースを提供し、デバイス端末のラッパーオブジェクトの管理を容易にする。ラッパー(wrapper)オブジェクトは、内部実現とサードパーティ開発者拡張を含むことができる。ラッパーレジストリコンポーネント(wrapper registry)33が各ラッパーオブジェクトを上位層に登録できるようにすることにより、実行エンジンに、特定のラッパーオブジェクトがどのコンポーネントを含むか、及びラッパーオブジェクトにおいてどのようなメソッドがあるかを知らせることができる。ラッパーレジストリコンポーネント(wrapper registry)は、ラッパーモジュール34において各種のラッパーオブジェクト341を作成できるように、各種のラッパーオブジェクトを作成するためのインターフェースも提供している。ラッパーオブジェクトが作成された後、実行エンジン31は、仮想マシン32とインヴォーカー35とを介してラッパーオブジェクトを操作し、ラッパーオブジェクト341のメソッドを呼び出すことができる。
【0059】
上記のオペレーティングシステムにおけるすべてのラッパーオブジェクトは、ラッパーオブジェクトプールを構成している。異なるオブジェクトコードは、異なるラッパーオブジェクトを作成すべき場合がある。オブジェクトコードに基づいて作成された、1つまたは複数のラッパーオブジェクトを含む動的モジュールは、ラッパーモジュール34と呼ばれてもよい。
図5に示すように、ラッパーモジュール34は、作成インターフェース342、呼び出しインターフェース343、及びフィードバックインターフェース344などの複数のAPI(application programming interface、アプリケーション・プログラムイ・ンタフェース)を提供することができる。ラッパーレジストリコンポーネント33が提供できるAPIは、登録インターフェース331である。ラッパーレジストリコンポーネント33は、登録インターフェース331を介して仮想マシンからの登録指令を受信することができる。登録指令には、オブジェクトコードにおける登録すべきラッパーオブジェクトの識別子、メソッド名、及びパラメータが含まれてもよい(登録指令には、ラッパーオブジェクトの識別子のみが含まれてもよく、またはラッパーオブジェクトの識別子及びメソッド名のみが含まれてもよく、またはラッパーオブジェクトの識別子及びパラメータのみが含まれてもよい)。ラッパーレジストリコンポーネント33は、作成インターフェース342を介して、オブジェクトコードにおける登録すべきラッパーオブジェクトの識別子、メソッド名、及びパラメータを含む作成指令(登録指令には、ラッパーオブジェクトの識別子のみが含まれてもよく、またはラッパーオブジェクトの識別子及びメソッド名のみが含まれてもよく、またはラッパーオブジェクトの識別子及びパラメータのみが含まれてもよい)をラッパーモジュール34に送信することができる。ラッパーモジュール34は、オブジェクトコードにおける登録すべき各ラッパーオブジェクトの識別子、メソッド名、及びパラメータに基づいて、ラッパーモジュール34において対応する各ラッパーオブジェクト341を作成する。登録が完了した後、ラッパーモジュール34は、作成インターフェース342を介して、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係をラッパーレジストリコンポーネント33に返すことができる。ラッパーレジストリコンポーネント33は、登録インターフェース331を介して、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を仮想マシン32に返す。仮想マシン32は、上記のマッピング関係に基づいてコンパイルによりオブジェクトコードに対応する実行コードを得る。また、仮想マシンは、インヴォーカー35に呼び出し指令を送信することもできる。インヴォーカー35は、呼び出しインターフェース343を介して、ラッパーモジュール34における作成されたラッパーオブジェクト341を呼び出し、ラッパーオブジェクトのオペレーティングシステム36における対応するネイティブコードを実行する。
【0060】
本発明の実施形態では、登録指令と作成指令との内容及びフォーマットは、同一であってもよいし、異なっていてもよい。つまり、登録コンポーネントは、受信した登録指令の内容やフォーマットを修正してラッパーモジュールに送信してもよいし、修正せずに登録指令を作成指令としてラッパーモジュールに直接転送してもよい。
【0061】
本発明の実施形態では、ネイティブコードを直接ラッピングし、登録メカニズムを通じて、登録と呼び出しを外部に開放している。動的登録であるため、ネイティブコードに対するマッチングアップグレードが容易になる。上記のオペレーティングシステムには、例えば、アンドロイド(Android)システム、iOSシステム、またはLinuxベースの他のシステムが含まれるが、これに限定されない。
【0062】
図6は、本発明の実施形態による登録方法のフローチャートである。
図6に示すように、この登録方法は、登録コンポーネントに適用することができ、以下のステップS41~S42を含むことができる。
【0063】
ステップS41において、オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子を含む登録指令を、仮想マシンから受信する。
【0064】
ステップS42において、ラッパーオブジェクトの識別子に基づき、ラッパーモジュールおいて、対応するラッパーオブジェクトを作成するように、ラッパーオブジェクトの識別子を含む作成指令をラッパーモジュールに送信する。
【0065】
一実施形態では、登録コンポーネントは登録インターフェスを含む。ステップS61において、登録インタフェースを介して、登録指令を仮想マシンから受信し、ステップS62において、ラッパーモジュールにおける作成インターフェスを介して、作成指令をラッパーモジュールに送信することを含む。
【0066】
一実施形態では、
図7に示すように、ラッパーモジュールは、作成インターフェースをさらに含み、当該方法は、
ステップS43において、作成インタフェースを介して、ラッパーモジュールから返送された、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を、受信することと、
ステップS44において、仮想マシンにおいて、コンパイルによりオブジェクトコードに対応する実行コードを得るように、登録インタフェースを介して、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を、仮想マシンに送信すること、を含む。
【0067】
本実施形態において、上述したラッピング方法の実施形態と同様な説明は同様な意義を有する場合、例えば登録コンポーネント、ラッパーモジュール等の動作プロセスは、上述の実施形態の関連説明を参照することができる。
【0068】
図8は、本発明の実施形態によるラッピング装置の構成のブロック図である。
図8に示すように、該ラッピング装置は、ラッパーモジュールに適用することができる。該装置は、
オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子を含む作成指令を、登録コンポーネントから受信するための第1受信ユニット51と、
オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子に基づき、ラッパーモジュールにおいて、対応するラッパーオブジェクトを作成するための作成ユニット52と、を含む。
【0069】
一実施形態では、ラッパーモジュールは、作成インタフェースを含み、第1受信ユニット51は、作成インタフェースを介して、作成指令を登録コンポーネントから受信することにさらに用いられ、
図9に示すように、当該ラッピング装置は、作成インタフェースを介して、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を、登録コンポーネントに送信するための第1送信ユニット53をさらに含む。
【0070】
一実施形態では、ラッパーモジュールは、呼出しインターフェースをさらに含み、当該ラッピング装置は、
呼出しインターフェースを介して、実行すべきラッパーオブジェクトの識別子、メソッド名およびパラメータを含む呼び出し指令を、呼び出しコンポーネントから受信するための第2受信ユニット54と、
オペレーションシステムにおいて実行すべきラッパーオブジェクトに対応するネイティブコードを実行するように、ラッパーモジュールにおいて、実行すべきラッパーオブジェクトの識別子に対応するラッパーオブジェクトを検索して得られた後、実行すべきラッパーオブジェクトのメソッド名に対応するメソッドを呼び出し、実行すべきラッパーオブジェクトのパラメータをロードするための呼び出しユニット55と、を含む。
【0071】
一実施形態では、ラッパーモジュールは、フィードバックインタフェースをさらに含み、当該ラッピング装置は、
フィードバックインタフェースを介して、ラッパーモジュールがオペレーションシステムから取得した実行結果を含むフィードバック情報を、仮想マシンに送信するための第2送信ユニット56を含む。
【0072】
一実施形態において、当該ラッピング装置は、
オペレーションシステムにおけるネイティブコードを予めラッピングして、各ラッパーオブジェクトの対応する識別子およびメソッド名を得るための事前ラッピングユニット57、を含む。
【0073】
本実施形態のラッピング装置における各ユニットの機能は叙述したラッパーモジュールに適用されるラッピング方法における対応説明を参照することができるため、ここでは説明を省略する。
【0074】
図10は、本発明の実施形態に係る登録装置の構成のブロック図である。
図10に示すように、当該登録装置は、登録コンポーネントに適用することができる。該装置は、
オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子を含む登録指令を、仮想マシンから受信するための第3受信ユニット61と、
ラッパーオブジェクトの識別子に基づき、ラッパーモジュールおいて、対応するラッパーオブジェクトを作成するように、ラッパーオブジェクトの識別子を含む作成指令をラッパーモジュールに送信するための第3送信ユニット62と、を含む。
【0075】
一実施形態において、第3受信ユニット61は、登録コンポーネントにおける登録インタフェースを介して、登録指令を仮想マシンから受信することにさらに用いられ、
第3送信ユニット62は、ラッパーモジュールにおける作成インターフェスを介して、作成指令をラッパーモジュールに送信することにさらに用いられる。
【0076】
一実施形態において、
図11に示すように、当該登録装置は、
作成インタフェースを介して、ラッパーモジュールから返送された、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を、受信するための第4受信ユニット63と、
仮想マシンにおいて、コンパイルによりオブジェクトコードに対応する実行コードを得るように、登録インタフェースを介して、作成されたラッパーオブジェクトとネイティブコードとのマッピング関係を、仮想マシンに送信するための第4送信ユニット64と、をさらに含む。
【0077】
本実施形態の登録装置における各ユニットの機能は叙述した登録コンポーネントに適用される登録方法における対応説明を参照することができるため、ここでは説明を省略する。
【0078】
図12は、本発明の実施形態に係るレンダリングディバイスの構成のブロック図である。
図12に示すように、該レンダリングデバイスは、実行エンジン81と、仮想マシン82と、登録コンポーネント83と、を備え、
実行エンジン81は、オブジェクトコードをロードして得られた初期化指令を、仮想マシンに送信し、仮想マシンから返送された、オブジェクトコードに対応する実行コードを受信することに用いられ、
仮想マシン82は、
実行エンジンがオブジェクトコードをロードして得られた初期化指令を、実行エンジンから受信し、
初期化指令に基づき、オブジェクトコードにおける、登録すべきラッパーオブジェクトの識別子を含む登録指令を、登録コンポーネントに送信し、
ラッパーオブジェクトとオペレーティングシステムにおけるネイティブコードとのマッピング関係に基づき、コンパイルによりオブジェクトコードに対応する実行コードを得、
実行コードを実行エンジンに送信することに用いられ、
登録コンポーネント83は、本願の実施形態における登録方法を実行することに用いられる。具体的には、登録コンポーネントは、オブジェクトコードの実行に要するラッパーオブジェクトを作成するように、登録指令を仮想マシンから受信することに用いられる。登録コンポーネントは、
図5に示された登録インターフェス331を含んでもよい。登録インターフェスを介して仮想マシンとのイントラクションが行われる。
【0079】
一実施形態では、実行エンジン81は、実行コードを実行して得られた実行指令を仮想マシンに送信することに用いられる。
【0080】
一実施形態では、
図13に示すように、レンダリングデバイスは、
ラッパーモジュールにおけるラッパーオブジェクトを呼び出すように、仮想マシンからの呼び出し指令を受信するための呼び出しコンポーネント84と、ラッパーモジュール85とを含み、
ここで、ラッパーモジュール85は、オブジェクトコードの実行に要する少なくとも1つのラッパーオブジェクト851を含む。ラッパーモジュールは、本発明の上述した実施形態におけるラッパーモジュールに適用されるラッピング方法を実行することに用いられる。具体的には、ラッパーモジュールは、登録コンポーネントからの登録指令を受信し、ラッパーオブジェクトの登録を行い、ラッパーオブジェクトとネイティブコードとのマッピング関係を得ることができる。ラッパーモジュールは、呼び出しコンポーネントからの呼び出し指令を受信し、既に作成されたラッパーオブジェクトを呼び出し、オペレーションシステムにおいて、実行すべきラッパーオブジェクトの対応するネイティブコードを実行することができる。ラッパーモジュールは、
図5に示された作成インターフェス342と、呼び出しインスタンス343と、フィードバックインスタンス344とを含んでもよく、作成インターフェスを介して登録コンポーネントとのやり取りが行われ、呼び出しインスタンスを介して呼び出しコンポーネントとのやり取りが行われ、フィードバックインスタンスを介して各種の情報を仮想マシンにフィードバックする。
【0081】
一実施形態では、当該レンダリングデバイスは、実行エンジンからの初期化指令を仮想マシンに送信し、仮想マシンからの実行コードを実行エンジンに送信するためのブリッジ86をさらに含む。ブリッジ86は、実行エンジンの実行指令を仮想マシンに送信し、仮想マシンから返された実行結果を受信することもできる。実行エンジンと仮想マシンとはブリッジを介して情報のインタラクションを行うため、オブジェクトコードとネイティブコードとの情報伝送が実現され、オペレーティングシステム自身の能力が十分に利用され、コードの実行効率を確保しながら、システムの安全性を確保することができる。
【0082】
一適用例では、
図3に示すように、レンダリングデバイスは、実行エンジン31、仮想マシン32、ラッパーレジストリコンポーネント(wrapper registry)33、インヴォーカー(Invoker)35、及びブリッジ(Bridge)37などを含んでもよい。実行エンジンがV8エンジンで、仮想マシンがAtomVMである場合を例として、レンダリングデバイスがオブジェクトコードを実行するプロセスを説明する。この例では、主にV8エンジンのコード実行機能を利用して、仮想マシンによってコードのコンパイルを完成する。
【0083】
実行エンジン31には、オブジェクトコードがロードされ、初期化指令が作成される。仮想マシン32は、ラッパー(wrapper)オブジェクトを管理し、オブジェクトコードからデバイス端末へのラッパー(wrapper)オブジェクトのマッピングを実現することができる。また、仮想マシン32は、v8エンジンの初期化、フレームワーク(framework)の初期化などを実行するエンジンやオブジェクトコードの実行環境を管理することもできる。仮想マシンは、ブリッジを介してオブジェクトコードとの情報のやり取りを行い、ブリッジ37は、オブジェクトコードとネイティブコードとの間の唯一のメッセージ経路である。
【0084】
実行エンジン31は、オブジェクトコードをロードし、デバイス端末のどのラッパー(wrapper)オブジェクトを呼び出すべきかを決定した後、ブリッジ37を介して初期化指令を仮想マシン32に送信することができる。ここで、各指令は、オブジェクト識別子(Identification、id)、メソッド名、及びパラメータを含んでもよい。例えば、オブジェクト識別子は「image」で、メソッド名は「setImage」で、パラメータは{a,b,c}である。
【0085】
仮想マシン32は、オブジェクト識別子に基づいて対応するラッパーオブジェクト341を検索し得ることができ、インヴォーカー35により、ラッパーオブジェクト341のメソッド名から対応するネイティブコードへの呼び出しを実現し、メソッド名に基づいて対応するメソッドの呼び出しを完成する。
【0086】
メソッドを呼び出した後に、実行結果が呼び出されてオブジェクトコードに返される場合がある。ラッパーオブジェクト341には、さまざまなデバイス端末のイベントが発生する場合もある。この2つの場合は、いずれもVMの統一経路(ブリッジ)を介してメッセージをオブジェクトコードに転送することができる。
【0087】
本発明の実施形態は、仮想マシンに実行エンジンとネイティブコードとのラッピングマッピングを統合することにより、オブジェクトコードの実行効率を確保しながら、システムの安全性を確保することができる。
【0088】
図11は、本発明の実施形態によるレンダリングシステムを示す図である。このレンダリングシステムは、スマート音声デバイス向けの可視レンダリングシステムであってもよい。このレンダリングシステムは、技能サービス、対話型AIシステム、独立レンダリングサービス、CDNサービス、及びスマート音声デバイスなどを含んでもよい。
【0089】
ビジネスプロセスの全体は、以下のとおりである。
【0090】
1)ユーザは、音声でスマート音声デバイスに質問をし、スマート音声デバイスは、ユーザの質問を対話型AIシステムに伝送する。スマート音声デバイスは、上述の実施形態におけるデバイス端末である。デバイス端末は、スクリーン付きであってもよい。
【0091】
2)対話型AIシステムでは、自動音声認識(Automatic Speech Recognition、ASR)、自然言語理解(Natural Language Understanding、NLU)の処理を経て、意図を技能サービスに送信する。技能サービスとは、上記の実施形態におけるレンダリングすべき内容を提供するサーバである。
【0092】
3)技能サービスは、内容とリソースを含むレンダリングすべき内容を対話型AIシステムに返す。
【0093】
4)対話型AIシステムは、レンダリングすべき内容、スマート音声デバイスの情報、技能サービスの情報を独立レンダリングサーバに送信する。
【0094】
5)独立レンダリングサービスは、レンダリングすべき内容の静的データを内容配信ネットワーク(Content Delivery Network、CDN)サービスに送信する。
【0095】
6)独立レンダリングサービスは、ステップ4)において受信した内容に基づいて、スマート音声デバイスに適したレンダリングテンプレートを選択し、選択したレンダリングテンプレートを用いてレンダリングすべき内容をレンダリングし、スマート音声デバイスの実行に便利なオブジェクトコードを作成し、オブジェクトコードを対話型AIシステムに返す。
【0096】
7)対話型AIシステムは、受信したオブジェクトコード及び関連するコンテキスト情報などのデータをスマート音声デバイスに返す。
【0097】
8)スマート音声デバイスにおけるレンダリング実行エンジンは、上記のオブジェクトコードを実行し、スクリーンに表示する。スマート音声デバイスは、レンダリングすべき内容における静的なリソースを、CDNから直接引き出すことができる。
【0098】
ここで、レンダリング実行エンジンの構成については、前述の実施形態におけるレンダリングデバイスを参照してもよい。例えば、
図3に示すように、レンダリング実行エンジンは、実行エンジン31、仮想マシン32、ラッパーレジストリコンポーネント33、インヴォーカー35、及びブリッジ37などを含む。実行エンジン31には、オブジェクトコードがロードされ、ブリッジを介して仮想マシン32にオブジェクトコードの実行に要するラッパーオブジェクトの識別子、メソッド名、及びパラメータが送信される。仮想マシン32は、ラッパーレジストリコンポーネント33を介してラッパーモジュール34において各ラッパーオブジェクトを作成する。作成が完成した後、仮想マシン32は、インヴォーカー35によってラッパー(wrapper)オブジェクト341を呼び出し、ラッパーオブジェクト341のメソッド名から対応するネイティブコードへの呼び出しを実現し、さらにメソッド名に基づいて対応するメソッドの呼び出しを完成することができる。メソッドを呼び出した後、実行結果が呼び出されてオブジェクトコードに返される場合がある。ラッパーオブジェクト341には、さまざまなデバイス端末のイベントが発生する場合もある。ラッパーがこれらのメッセージを仮想マシンにフィードバックした後、仮想マシンは、ブリッジを介してこれらのメッセージを実行エンジンに送信する。
【0099】
レンダリング実行エンジンの具体的な動作原理については、前述の実施形態におけるラッピング方法、ラッピング装置、及びレンダリングデバイス、並びに
図3、
図5、
図14などの関連する説明を参照してもよい。
【0100】
本発明に係る実施形態では、電子デバイスと非一過性のコンピュータ可読取記録媒体をさらに提供する。
【0101】
図15は、本発明の実施形態によるコード実行方法を実現するための電子デバイスのブロック図である。電子デバイスは、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、大型コンピュータ、および他の適切なコンピュータのような様々な形態のデジタルコンピュータを表すことができる。また、電子デバイスはパーソナルデジタル処理、携帯電話、スマートフォン、装着可能デバイス、およびその他の類似のコンピューティングデバイスなどの様々な形態のモバイルデバイスを表すことができる。ここで示した構成要素、それらの接続と関係、およびそれらの機能は例示的なものに過ぎず、本明細書に説明されたものおよび/または要求される本発明の実施を制限する意図がない。
【0102】
図15に示すように、当該電子デバイスは、1つ又は複数のプロセッサ901と、メモリ902と、各構成要素を接続するための高速インターフェースと低速インターフェースとを含むインターフェースとを含む。各構成要素は、異なるバスを用いて互いに接続し、共通のマザーボードに取り付けられてもよいし、必要に応じて他の方法で取り付けられてもよい。プロセッサは、電子デバイス内で実行される命令を処理してもよく、また、外部入出力デバイス(例えば、インターフェースに接続された表示デバイス)にグラフィックユーザインターフェース(Graphical User Interface,GUI)を表示するための、メモリまたはメモリ上に記憶されたグラフィカル情報の命令を含む。他の実施形態では、必要に応じて、複数のプロセッサおよび/または複数のバスを複数のメモリおよび複数のメモリとともに使用することができる。同様に、複数の電子デバイスを接続してもよく、各デバイスは、部分的に必要な動作(例えば、サーバアレイ、ブレードサーバのセット、またはマルチプロセッサシステムとして)を提供する。
図15においてプロセッサ901を例とする。
【0103】
メモリ902は、本発明にて提供された非一過性のコンピュータ可読記憶媒体である。メモリは、本発明で提供されるコード実行方法を少なくとも1つのプロセッサに実行させるように、少なくとも1つのプロセッサによって実行されることができる指令を記憶する。本発明における非一過性のコンピュータ可読記憶媒体は、本発明で提供されたラッピング方法または登録方法をコンピュータに実行させるためのコンピュータ指令を記憶する。
【0104】
メモリ902は、非一過性のコンピュータ可読記憶媒体として、非一過性のソフトウェアプログラム、非一過性のコンピュータ実行可能なプログラム及びモジュールを記憶するために使用されてもよく、本発明の実施形態におけるラッピング方法または登録方法に対応するプログラム指令/モジュール(例えば、
図8に示される第1受信ユニット51及び作成ユニット52、あるいは、
図10に示される第3受信ユニット61及び第3送信ユニット62)のようなものである。プロセッサ901は、メモリ902に記憶されている非一過性のソフトウェアプログラム、指令及びモジュールを実行することにより、サーバの様々な機能アプリケーション及びデータ処理、すなわち上述した方法に関する実施形態に係るラッピング方法または登録方法を実行する。
【0105】
メモリ902は、オペレーティングシステムや少なくとも1つの機能に必要なアプリケーションを記憶することができるプログラムの記憶領域と、ラッピング方法または登録方法に係る電子デバイスの使用によって作成されたデータなどを記憶することができるデータの記憶領域と、を含むことができる。さらに、メモリ902は、高速ランダムアクセスメモリを含んでもよく、非一過性の固体記憶装置を含んでもよい。例えば、少なくとも1つの磁気ディスク記憶装置、フラッシュメモリ装置、または他の非一過性の固体記憶装置を含むことができる。いくつかの実施形態では、メモリ902はオプションとして、プロセッサ901に対して遠隔的に設定されたメモリを含み、これらの遠隔メモリは、ネットワークを介してラッピング方法または登録方法に係る電子デバイスに接続されてもよい。上記のネットワークの例は、インターネット、企業内ネットワーク、ローカルネットワーク、モバイル通信ネットワーク及びその組み合わせを含むが、これらに限定されない。
【0106】
ラッピング方法または登録方法に係る電子デバイスは、入力装置903と出力装置904とをさらに含むことができる。プロセッサ901、メモリ902、入力装置903、及び出力装置904は、バスまたは他の方法で接続されてもよく、
図15ではバスを介して接続されている。
【0107】
入力装置903は、入力された数字または文字を受信し、コード実行方法に係る電子デバイスのユーザ設定及び機能制御に関するキー信号入力を生成することができ、例えば、タッチパネル、キーパッド、マウス、トラックボード、タッチパッド、指示棒、1つまたは複数のマウスボタン、トラックボール、ジョイスティックなどを含むことができる。出力装置904は、表示装置、補助照明装置(例えばLED)、及び触覚フィードバック装置(例えば、振動モータ)などを含むことができる。この表示装置は、液晶ディスプレイ(Liquid Crystal Display、LCD)、発光ダイオード(Light Emitting Diode、LED)ディスプレイ及びプラズマディスプレイを含むことができるがこれらに限定されない。いくつかの実施形態では、表示装置はタッチパネルであってもよい。
【0108】
本発明におけるシステム及び技術に係る様々な実施形態は、デジタル電子回路システム、集積回路システム、専用集積回路(Application Specific Integrated Circuits、ASIC)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はこれらの組み合わせによって実現されることができる。これらの様々な実施形態は、1つまたは複数のコンピュータプログラムにおいて実装されてもよく、この1つまたは複数のコンピュータプログラムは、少なくとも1つのプログラマブルプロセッサを含むプログラム可能なシステム上で実行されてもよく、及び/又は解釈されてもよく、このプログラマブルプロセッサは、専用または汎用のプログラマブルプロセッサであってもよく、記憶システム、少なくとも1つの入力装置、及び少なくとも1つの出力装置より、データとコマンドを受信し、記憶システム、少なくとも1つの入力装置、及び少なくとも1つの出力装置に、データとコマンドを送信する。
【0109】
これらの計算プログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードともいう)は、プログラマブルプロセッサのマシンコマンドを含み、プロセス指向及び/又はオブジェクト指向プログラミング言語、及び/又はアセンブリ/マシン言語を用いてこれらの計算プログラムを実施することができる。本発明で使用されるように、「機械可読媒体」及び「コンピュータ可読媒体」という用語は、マシンコマンド及び/又はデータをプログラマブルプロセッサに提供するための任意のコンピュータプログラム製品、デバイス、及び/又は装置(例えば、磁気ディスク、光ディスク、メモリ、編集可能論理デバイス(programmable logic device、PLD)を意味し、機械読み取り可能な信号としてのマシンコマンドを受信する機械可読媒体を含む。「機械読み取り可能な信号」という用語は、マシンコマンド及び/又はデータをプログラマブルプロセッサに提供するための任意の信号を意味する。
【0110】
ユーザとのイントラクションを提供するために、本発明で説明されているシステムや技術は、コンピュータ上で実施されてもよく、また、ユーザに情報を表示するための表示装置(例えば、CRT(Cathode Ray Tube、ブラウン管)またはLCD(液晶ディスプレイ)モニタ)と、入力をコンピュータに提供するためのキーボード及びポインティングデバイス(例えば、マウスまたはトラックボール)とを備えてもよい。他の種類の装置も、ユーザとのイントラクションを提供するために使用され得る。例えば、ユーザに提供されたフィードバックは、任意の形態のセンシングフィードバック(例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であってもよく、ユーザからの入力は、いかなる形式(音響入力、音声入力、または触覚入力を含む)で受信されてもよい。
【0111】
本発明で説明されているシステム及び技術は、バックグラウンド構成要素を含む計算システム(例えば、データサーバとして)、または中間部構成要素を含む計算システム(例えば、アプリケーションサーバ)、または、フロントエンド構成要素を含む計算システム(例えば、グラフィカルユーザインターフェースまたはネットワークブラウザを備えたユーザコンピュータであって、ユーザがこのグラフィカルユーザインターフェースまたはネットワークブラウザを介して本発明で説明されたシステム及び技術に係る実施形態とインタラクションを行うことができるユーザコンピュータ)に実行されてもよく、または、このようなバックグラウンド構成要素、中間部構成要素、またはフロントエンド構成要素の任意の組合せを含む計算システムにおいて実行されてもよい。システムの構成要素は、任意の形態または媒体のデジタルデータ通信(例えば、通信ネットワーク)によって相互に接続されてもよい。通信ネットワークの例えとして、ローカルネットワーク(Local Area Network、LAN)、広域ネットワーク(Wide Area Network、WAN)及びインターネットを含む。
【0112】
コンピュータシステムは、デバイス端末及びサーバを含むことができる。デバイス端末とサーバは一般的に相互に離れており、通信ネットワークを介してインタラクションを行う。デバイス端末とサーバとの関係を持つコンピュータプログラムがそれぞれのコンピュータ上で実行されることによって、デバイス端末とサーバとの関係は構築される。
【0113】
本発明の実施形態に係るコード実行方法によれば、仮想マシンが登録コンポーネントに既にラッピングされたラッパーオブジェクトを作成させるように制御し、仮想マシンにオブジェクトコードのコンパイル作業を実行させることにより、実行エンジンが主にコードの実行を制御するようになるため、コードの実行効率を向上させることができる。
【0114】
上記の様々な態様のフローを用いて、ステップを新たに順序付け、追加、または削除することが可能であることを理解すべきである。例えば、本発明で記載された各ステップは、並列に実行しても良いし、順次に実行しても良いし、異なる順序で実行しても良い。本発明で開示された技術案が所望する結果を実現することができる限り、本発明ではこれに限定されない。
【0115】
上記具体的な実施形態は、本発明の保護範囲に対する限定を構成するものではない。当業者は、設計事項やその他の要因によって、様々な修正、組み合わせ、サブ組み合わせ、及び代替が可能であることを理解するべきである。本発明の要旨及び原則内における変更、均等な置換及び改善等は、いずれも本発明の保護範囲に含まれるべきである。