JP2017073036A - Information processing device and control method thereof - Google Patents
Information processing device and control method thereof Download PDFInfo
- Publication number
- JP2017073036A JP2017073036A JP2015200472A JP2015200472A JP2017073036A JP 2017073036 A JP2017073036 A JP 2017073036A JP 2015200472 A JP2015200472 A JP 2015200472A JP 2015200472 A JP2015200472 A JP 2015200472A JP 2017073036 A JP2017073036 A JP 2017073036A
- Authority
- JP
- Japan
- Prior art keywords
- class
- execution environment
- execution
- application
- information processing
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
Description
本発明は、情報処理装置におけるアプリケーションの管理技術に関するものである。 The present invention relates to an application management technique in an information processing apparatus.
従来、情報処理装置上でアプリケーションを実行する為の“アプリケーション実行環境”とそこで実行される“アプリケーション”においては、アプリケーションをアプリケーション実行環境に合わせて作成することが前提であった。一方、アプリケーション実行環境においては、挙動に関する問題や新たな機能に対応する必要性から新しいバージョンが市場に導入されることがある。その際、従来の挙動との互換性が一部失われる(非互換性)場合がある。このように非互換性を含んだ新しいバージョンのアプリケーション実行環境が導入される場合、アプリケーションにおいても、アプリケーション実行環境の変化に合わせた新しいバージョンが作成されるのが通例である。これにより、新しいバージョンのアプリケーションは、新しいバージョンのアプリケーション実行環境との組合せで不具合なく動作することが可能であった。 Conventionally, an “application execution environment” for executing an application on an information processing apparatus and an “application” executed there are based on the premise that the application is created in accordance with the application execution environment. On the other hand, in an application execution environment, a new version may be introduced to the market due to problems related to behavior and the necessity of dealing with new functions. At that time, a part of compatibility with the conventional behavior may be lost (incompatibility). When a new version of an application execution environment including incompatibility is introduced as described above, it is usual that a new version corresponding to a change in the application execution environment is also created in the application. As a result, the new version of the application can be operated without any problems in combination with the new version of the application execution environment.
しかしながら、近年では、アプリケーションの開発が大規模化し高コストとなってきている。その結果、非互換性を含んだ新しいバージョンのアプリケーション実行環境のが導入されたにも関わらず、それに沿った新しいバージョンのアプリケーションを作成するのが困難なケースがある。そこで、非互換性を含んだ新しいバージョンのアプリケーション実行環境においても既存のアプリケーションを不具合なく動作させることを実現する為の技術が提案されている。 However, in recent years, the development of applications has become large and costly. As a result, even though a new version of an application execution environment including incompatibility has been introduced, it may be difficult to create a new version of an application that conforms to the new version of the application execution environment. Therefore, a technique has been proposed for realizing the existing application to operate without any trouble even in a new version of the application execution environment including incompatibility.
例えば、特許文献1では、新しいバージョンのアプリケーション実行環境において、あらかじめ不具合を生ずる既存のアプリケーションの情報を保持するよう構成している。その上で、そのような既存のアプリケーションが読み込まれた時には、当該アプリケーションの起動前に当該アプリケーションと関連するアドレス空間に対してシムライブラリとフックライブラリを挿入する。フックライブラリは、アプリケーション中のどの位置に変更を導入すべきかの情報を有している。また、シムライブラリは、その位置に導入されるべき変更の内容を示す情報を有している。そして、当該アプリケーションの起動前に、これらのライブラリを参照して当該アプリケーションに導入する必要がある変更を特定し、特定された変更を導入する。これにより変更処理がなされたアプリケーションが起動されることになる。 For example, Patent Document 1 is configured to hold information on an existing application that causes a problem in advance in a new version application execution environment. In addition, when such an existing application is read, a shim library and a hook library are inserted into the address space associated with the application before the application is activated. The hook library has information on where in the application the change should be introduced. In addition, the shim library has information indicating the content of the change to be introduced at that position. Then, before the application is started, a change that needs to be introduced into the application is identified by referring to these libraries, and the identified change is introduced. As a result, the application having undergone the change process is started.
しかしながら、上述の従来技術においては、アプリケーション実行環境は、予めどのアプリケーションが不具合を生ずるかについての情報を全て知っている必要があり、その情報をアプリケーション実行環境が予め保持する必要がある。また、アプリケーションを不具合なく実行するために、当該アプリケーションの実行に先立って上述の変更処理を行う必要がある。更に、上述のライブラリの挿入によりリソースが無駄に費やされることがある。そのため、リソース容量や実行速度についての制限が厳しい組み込み向けのアプリケーション実行環境においては上述の従来技術の適用は困難である。 However, in the conventional technique described above, the application execution environment, it is necessary to know all the information about what previously which application generated a problem, it is necessary that information application execution environment held in advance. In addition, in order to execute the application without any trouble, it is necessary to perform the above-described change process before executing the application. Furthermore, resources may be wasted due to the insertion of the library described above. Therefore, it is difficult to apply the above-described conventional technology in an embedded application execution environment in which restrictions on resource capacity and execution speed are severe.
本発明は、このような問題に鑑みてなされたものであり、アプリケーション実行環境における非互換性をより好適に解消可能とする技術を提供することを目的とする。 The present invention has been made in view of such a problem, and an object of the present invention is to provide a technique that can more suitably eliminate incompatibility in an application execution environment.
上述の問題点を解決するため、本発明に係る情報処理装置は以下の構成を備える。すなわち、第1の実行環境上で動作することが想定されたアプリケーションを前記第1の実行環境と少なくとも一部が非互換の第2の実行環境で実行する情報処理装置において、前記第1の実行環境と非互換である前記第2の実行環境における第1のクラスを含む第1のライブラリと、前記第1の実行環境における非互換のクラスと互換の機能を前記第2の実行環境において提供する第2のクラスを含む第2のライブラリと、を格納する第1の格納手段と、前記情報処理装置にインストールされた前記アプリケーションの実行コードとマニフェストとを格納する第2の格納手段と、前記マニフェストを参照して、前記第2の実行環境における前記アプリケーションの動作互換性を判定する判定手段と、前記判定手段により前記アプリケーションが前記第2の実行環境における動作互換性を有していないと判定された場合、前記アプリケーションの実行コードにおける前記第1のクラスを前記第2のクラスに書き換える書換手段と、前記書換手段による書き換えが行われた実行コードを前記第2の実行環境で実行する実行制御手段と、を有する。 In order to solve the above-described problems, an information processing apparatus according to the present invention has the following configuration. That is, in the information processing apparatus that executes an application assumed to operate in the first execution environment in the second execution environment that is at least partially incompatible with the first execution environment, the first execution A first library including a first class in the second execution environment that is incompatible with the environment and a function compatible with the incompatible class in the first execution environment are provided in the second execution environment. A first storage means for storing a second library including a second class; a second storage means for storing an execution code and a manifest of the application installed in the information processing apparatus; and the manifest The determination means for determining the operation compatibility of the application in the second execution environment, and the application by the determination means Rewriting means for rewriting the first class in the execution code of the application to the second class when it is determined that the application does not have operation compatibility in the second execution environment, and rewriting by the rewriting means Execution control means for executing the executed code executed in the second execution environment.
あるいは、第1の実行環境上で動作することが想定されたアプリケーションを前記第1の実行環境と少なくとも一部が非互換の第2の実行環境で実行する情報処理装置において、前記第1の実行環境と非互換である前記第2の実行環境における第1のクラスを含む第1のライブラリと、前記第1の実行環境における非互換のクラスと互換の機能を前記第2の実行環境において提供する第2のクラスを含む第2のライブラリと、を格納する第1の格納手段と、前記情報処理装置にインストールされた前記アプリケーションの実行コードを格納する第2の格納手段と、前記実行コードに含まれる定数プールを参照して、前記第2の実行環境における前記アプリケーションの動作互換性を判定する判定手段と、前記判定手段により前記アプリケーションが前記第2の実行環境における動作互換性を有していないと判定された場合、前記アプリケーションの実行コードにおける前記第1のクラスを前記第2のクラスに書き換える書換手段と、前記書換手段による書き換えが行われた実行コードを前記第2の実行環境で実行する実行制御手段と、を有する。 Alternatively, in the information processing apparatus that executes, in the second execution environment, at least partly incompatible with the first execution environment, the first execution, the application that is supposed to operate in the first execution environment A first library including a first class in the second execution environment that is incompatible with the environment and a function compatible with the incompatible class in the first execution environment are provided in the second execution environment. Included in the execution code, a first storage means for storing a second library including a second class, a second storage means for storing an execution code of the application installed in the information processing apparatus, A determination unit for determining operation compatibility of the application in the second execution environment with reference to the constant pool, and the application by the determination unit. A rewriting unit that rewrites the first class in the execution code of the application to the second class when it is determined that the application does not have operation compatibility in the second execution environment; and Execution control means for executing the rewritten execution code in the second execution environment.
本発明によれば、アプリケーション実行環境における非互換性をより好適に解消可能とする技術を提供することができる。 ADVANTAGE OF THE INVENTION According to this invention, the technique which can eliminate the incompatibility in an application execution environment more suitably can be provided.
以下に、図面を参照して、この発明の好適な実施の形態を詳しく説明する。なお、以下の実施の形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。 Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the drawings. The following embodiments are merely examples, and are not intended to limit the scope of the present invention.
(第1実施形態)
本発明に係る情報処理装置の第1実施形態として、アプリケーション実行環境をバージョンアップ可能な情報処理装置を例に挙げて以下に説明する。
(First embodiment)
As an information processing apparatus according to a first embodiment of the present invention, an information processing apparatus capable of upgrading an application execution environment will be described below as an example.
<装置構成>
図1は、情報処理装置のハードウェア構成を例示的に示す図である。情報処理装置(IPA:Information Processing Apparatus)102はネットワーク101を介して不図示の外部装置と通信可能に構成されている。
<Device configuration>
FIG. 1 is a diagram exemplarily showing a hardware configuration of an information processing apparatus. An information processing apparatus (IPA: Information Processing Apparatus) 102 is configured to be able to communicate with an external apparatus (not shown) via a
IPA102は、中央処理装置(CPU)110、ランダムアクセスメモリ(RAM)112、読み出し専用メモリ(ROM)113を含む。また、IPA102は、二次記憶装置接続インターフェース(I/F)114、二次記憶装置115、人間対話デバイス(HID)I/F116、HID117を含む。IPA102は、更に、ネットワークI/F118、入出力(I/O)ポート119、周辺装置120を含む。IPA102内の各部は、システムバス111を介して相互に接続される。また、ネットワークケーブル121は、ネットワークI/F118とネットワーク101を接続する。
The IPA 102 includes a central processing unit (CPU) 110, a random access memory (RAM) 112, and a read only memory (ROM) 113. The IPA 102 includes a secondary storage device connection interface (I / F) 114, a
<ソフトウェア構成>
図2Aは、アプリケーション実行環境(AppRE:Application Runtime Environment)の構成を例示的に示す図である。以下では、アプリケーションをAppと呼ぶ。
<Software configuration>
FIG. 2A is a diagram exemplarily showing a configuration of an application execution environment (AppRE: Application Runtime Environment). In the following, the application is called App.
AppRE200は、アプリケーション実行基盤(AppPF:Application Platform)201、アプリケーション管理フレームワーク(AppMFW:Application Management Framework)202、アプリケーションキャッシュ(AppCache:Application Cache)203を含む。
The
AppPF201は、コード解釈実行モジュール(CIM:Code Interpreter Module)210、実行基盤ライブラリモジュール(PFLM:Platform Library Module)211、互換性追加ライブラリモジュール(CSLM:Compatibility Support Library Module)212を含む。CSLM212は、新バージョンのAppRE200に非対応であるAppの動作を補完する為のモジュールである。
The
ここで、第1のクラス213は、PFLM211に含まれるクラスであり、AppRE200の旧バージョンとの間での互換性に関わる(すなわち、非互換である)クラスである。
Here, the
また、第2のクラス214は、CSLM212に含まれるクラスであり、AppRE200の旧バージョンと第1のクラス213と互換の機能を提供するクラスである。なお、第1のクラス213と第2のクラス214のペアは一組である必要はなく、複数組用意されることもある。
The
AppMFW202は、アプリケーションインストール状態管理モジュール220、アプリケーション起動状態管理モジュール221、アプリケーションキャッシュ管理モジュール222、初回起動検知モジュール223を含む。
The
アプリケーションインストール状態管理モジュール(AppDSMM:Application Deployment Status Manager Module)220は、Appのインストールおよびアンインストールを実行しAppのインストール状態を管理する。 An application installation status management module (AppDSMM: Application Deployment Status Manager Module) 220 executes installation and uninstallation of App, and manages the installation state of App.
アプリケーション起動状態管理モジュール221(AppISMM:Application Invocation Status Manager Module)は、Appの起動および停止を処理しAppの起動状態を管理する。 An application invocation status management module 221 (AppISMM: Application Invocation Status Manager Module) processes the activation and termination of App and manages the activation state of App.
アプリケーションキャッシュ管理モジュール(AppCMM:Application Cache Manager Module)222は、アプリケーションファイルセット(AppFS:Application File Set)をAppCache203へ展開し管理する。
An application cache management module (AppCMM: Application Cache Manager Module) 222 develops and manages an application file set (AppFS: Application File Set) in the
初回起動検知モジュール(ISDM:Initial Startup Detection Module)223は、AppRE200全体が初めて起動されたことを検知する。アプリケーション用区画(AppSec:Application Section)230は、AppFSを展開する為の個別の区画である。Appは、ゼロ、1個、または複数個インストールされることができ、ここではN個のAppがインストールされている状態を図示している。これ以降、便宜上、アプリケーション1用区画をAppSec230−1、アプリケーション2用区画をAppSec230−2、アプリケーションN用区画をAppSec230−Nで表す。順序を特に指定せずAppSecを表す場合には単にAppSec230と表す。
An initial startup detection module (ISDM) 223 detects that the
図2Bは、AppRE200で使用される実行コード格納ファイル(ECAF:Executable Code Archive File)及びアプリケーションインストール用ファイル(AppIF:Application Installation File)の構成を示す図である。
FIG. 2B is a diagram showing a configuration of an executable code storage file (ECAF: Executable Code Archive File) and an application installation file (AppIF: Application Installation File) used in the
ECAF204は、いくつかの実行コードファイル(EC:Executable Code File)を内包し、マニフェスト(MF:Manifest File)242を付与したものである。
The
ECF241は、実際に実行されるべきプログラムコードを保持しているファイルである。一般的にこのファイルはソフトウェア的な単位であるクラスごとに1つのファイルになっている。一般的にECAFは1つまたは複数のECFを内包している。ここではX個のECFを内包している状態を図示している。以降便宜上、最初(1番目)のECFをECF241−1、2番目のECFをECF241−2、X番目のECFをECF241−Xで表す。順序を特に指定せずECAF204に格納されたECF一般を表す場合には単にECF241で表す。
The
AppIF205は、ECAF204と同じ構造をしている。AppIF205は、ECAFの中に別のECAF204を内包しているが、そのようなECAF204は許容される。ゆえにAppIF205はECAF204の一種である。
主実行コードファイル(M−ECF:Main Executable Code File)251は、Appの主たる実行コードを保持するファイルである。副実行コードファイル(SubECF:Subordinate Executable Code File)252は、主たる実行コード以外を保持するファイルである。M−ECF251およびSubECF252はECF241の一種である。AppIF205は、M−ECF251を1つしか保持しない。一方、AppIF205は、ゼロ、1個、または複数個のSubECF252を含み得る。ここではY個のSubECFを含んでいる状態を図示している。以降、便宜上、最初(1番目)のSubECFを252−1、2番目のSubECFを252−2、Y番目のSubECFを252−Yで表す。順序を特に指定せずSubECF一般を表す場合には単にSubECF252で表す。
A main execution code file (M-ECF) 251 is a file that holds the main execution code of App. The sub-executable code file (SubECF: Subordinate Executable Code File) 252 is a file that holds data other than the main execution code. M-
ライブラリ実行コード格納ファイル(LibECAF:Library ECAF)253は、M−ECF251およびSubECF252以外の実行コードを保持したECF241を格納しているECAF204に相当するものである。LibECAF253は、ゼロ、1個、または複数個含まれる。ここではZ個のLibECAFが含まれた状態を図示している。以降、LibECAF1を253−1、ライブラリ実行コード2を253−2、LibECAF・Zを253−Zで表す。順序を特に指定せずLibECAF一般を表す場合には単に253で表す。
A library execution code storage file (LibECAF) 253 corresponds to the
図2Cは、アプリケーションキャッシュの構成を示す図である。ここでは、AppRE200におけるAppCache203に1以上のAppが保持されている状態を図示している。AppCache203は二次記憶装置115上に確保されており、ここに、AppSec230が設定されている。
FIG. 2C is a diagram illustrating a configuration of the application cache. Here, a state where one or more App is held in
AppSec230は、インストールされるApp用に確保された領域である。AppFS231は、インストールされるAppのAppIF205から展開され配置される。AppFS231は、AppIF205および、LibECAF253−1からLibECAF253−Zまでを有する。LibECAF253はAppIF205から取り出されたものである。
図2Dは、マニフェストファイルを説明する図である。ここでは、AppRE200におけるMF242の内容を例示的に示している。
FIG. 2D is a diagram illustrating a manifest file. Here, the contents of the
項目260は、MF242に含まれている項目の例を示しており、項目名261、項目の値262を含む。MF242は、1つまたは複数の項目を保持することができる。AppRE200内では、AppMFW202は、ECAF204について、項目名を指定することにより項目の値を取り出すことが可能なようになっている。例えばこの図の例で言えば、“Manifest−Version”を指定すると“x.x”が取得できるなどである。このような項目と値の組み合わせはAppの開発の過程において決定され、AppIF231が作成される際に、開発者がそれぞれECAF204のMF242に値を記載する。
An
図2Eは、実行コードファイルの構成を示す図である。ここでは、AppRE200におけるECF241の内部構成を示している。
FIG. 2E is a diagram showing a configuration of an execution code file. Here, the internal configuration of the
マジックナンバー271は、ECF241を識別する為に用いられる。バージョン272は、ECF241のバージョンである。定数プール(CP:Constant Pool)273は、ゼロ、1個、または複数の定数定義275を含む。ここでは一例としてM個の定数定義が置かれている状態を図示している。定数定義275は、定数記述子276及び定数値277を含む。ここでは便宜的に、定数定義1を定数定義275−1、定数記述子1を定数記述子276−1、すなわち定数値1を定数値277−1と表す。同様に、定数定義2を定数定義275−2、定数記述子2を定数記述子276−2、定数値2を定数値277−2と表す。定数定義一般を表す場合には275と表し、定数記述子一般を表す場合には276と表し、定数値一般を表す場合には277と表す。コード記述部分(CB:Code Body)274は、実行コードの本体であるコードを記述する。
The
図2Fは、互換性追加ライブラリモジュールの構成を示す図である。ここでは、AppRE200におけるCSLM212の内部構成を示している。
FIG. 2F is a diagram illustrating a configuration of a compatibility-added library module. Here, the internal configuration of the
CSLM212は、1つまたは複数の互換性追加LibECAF281から構成されている。ここでは一例としてQ個の互換性追加LibECAFが存在するところを図示している。ここでは、最初(1番目)の互換性追加LibECAFをLibECAF281−1、2番目の互換性追加LibECAFをLibECAF281−2、Q番目の互換性追加LibECAFをLibECAF281−Qと表す。互換性追加LibECAF一般を表す場合には互換性追加LibECAF281と表す。
The
<インストール処理の動作>
図3は、アプリケーションのインストール処理のフローチャートである。すなわち、AppRE200におけるAppMFW202がAppのインストールを実施する際のフローチャートである。
<Operation of the installation process>
FIG. 3 is a flowchart of application installation processing. That is, this is a flowchart when the
ステップS301では、AppMFW202は、処理を開始する。ステップS302では、AppDSMM220は、ユーザーによりライセンスファイル(LF:License File)が指定されているかどうかを判定する。指定されていない場合にはステップS306へ進む。指定されている場合にはステップS303へ進む。
In step S301, the
ステップS303では、AppDSMM220は、Appをインストールしようとする利用者によって指定されたAppIF205を読み込む。この場合AppIF205はライセンス処理されている為、AppDSMM220は利用者によって指定されたLFを読み込み、AppIF205を復元する。復元の後ステップS307へ進む。
In step S303, the AppDSMM 220 reads the
ステップS306では、AppMFW202は、AppIF205を読み込む。完了したらステップS307へ進む。ステップS307では、AppMFW202は、AppCache203にAppFS231を配置する為のAppSec230を作成し、AppIF205をAppSec230に配置する。またAppIF205からLibECAF253を取り出しAppSec230に配置する。
In step S306, the
ステップS311では、AppMFW202は、AppIF205のMF242にAppRE200の新バージョン対応を示す記述があるかをチェックする。すなわち、動作互換性を判定する。ここでは、MFの“X−OsNameCompliance”という項目の値が“1”であるかどうかをチェックしている。その値が“1”であれば、AppIF205は新バージョン対応である。“1”以外の値であった場合、および“X−OsNameCompliance”という項目自体が存在しない場合については対応の記述がないものとして扱う。AppIF205が新バージョン対応である、ということは含まれているM−ECF251、SubECF252が新バージョン対応である、ということを意味する。対応の記述がない場合にはステップS312へ進む。MF242に対応の記述がある場合にはステップS318へ進む。
In step S <b> 311, the
ステップS312では、AppDSMM220は、AppIF205からM−ECF251を取り出す。ステップS313では、AppDSMM220は、M−ECF251のCP273を順番にチェックする。そして、CP273に第1のクラス213のクラス名が存在するかどうかを判定する。存在する場合にはステップS314へ進む。存在しない場合にはステップS316へ進む。
In step S312, the AppDSMM 220 extracts the M-
ステップS314では、AppDSMM220は、M−ECF251の第1のクラス213のクラス名を含んだ定数定義275を新たな値に書き換える。新たな値として第2のクラス214のクラス名を用いる。例えば、ここで第1のクラス213のクラス名が“legacy.class.System”である場合には、互換性を維持する為に用意する第2のクラス214のクラス名を“inheritclass.System”のように定める。これら二つのクラス名は文字列長が一致するように定めておく。また第2のクラス214のクラス名はAppPF201のPFLM211にすでに存在するクラス名と衝突しないように定めておく。このような第1のクラス213と第2のクラス214の組み合わせが複数ある場合にはこれらの全ての組み合わせにういて同様に処理する。書き換えた後、AppDSMM220は、定数値277を書き換えたM−ECF251をAppIF205内のものと置き換える。
In step S314, the AppDSMM 220 rewrites the
ステップS316では、AppDSMM220は、SubECF252があれば、それら全てに対して、ここまでにM−ECF251に施した処理と同じ処理を施す。すなわち、CP273に第1のクラス213のクラス名の定数値277が存在する場合には第2のクラス214のクラス名に書き換える。書き換えが行われた場合には書き換えたSubECF252でAppIF205の中のものを置き換える。全てのSubECF252に対するCP273のチェックと必要な置き換え処理を完了したら、ステップS318へ進む。
In step S316, if there is a SubECF 252, the AppDSMM 220 performs the same processing as that performed on the M-
ステップS318では、AppDSMM220は、LibECAF253があれば、その最初(1番目)のファイルであるLibECAF253−1のMF242を参照する。そして、MF242にAppRE200の新バージョン対応を示す記述があるかをチェックする。あればステップS324へ進み、なければステップS319へ進む。
In step S318, if there is the
ステップS319では、AppDSMM220は、LibECAF253−1からECF241−1を取り出す。そして続くステップS320にて、ECF241−1のCP273を順番にチェックする。そして、CP273に第1のクラス213のクラス名が存在するかどうかを判定する。ある場合にはステップS321へ進む。ない場合にはステップS323へ進む。
In step S319, the AppDSMM 220 takes out the ECF 241-1 from the LibECAF 253-1. In subsequent step S320, the
ステップS321では、AppDSMM220は、ECF241−1のCP273内の第1のクラス213のクラス名を、第2のクラス214のクラス名に書き換える。そして書き換えたECF241−1をLibECAF253−1の中のものと置き換える。
In step S321, the AppDSMM 220 rewrites the class name of the
ステップS323では、AppDSMM220は、LibECAF253−1に含まれる他のECF241があればそれらに対して同様の処理を施す。全てのECF241に対して処理が終わったらステップS324へ進む。
In step S323, the AppDSMM 220 performs the same processing on any
ステップS324では、LibECAF253−1に施したのと残る全てのLibECAFについて処理を行い、全て終わったらステップS325へ進み処理を終了する。 In step S324, processing is performed for all of the remaining LibECAF applied to LibECAF 253-1. When all the processing is completed, the process proceeds to step S325 to end the processing.
<初回起動時の動作>
図4は、新バージョンのアプリケーション実行環境における初回起動時の動作フローチャートである。ここでは、AppRE200のAppMFW202が、更新後の初回起動時に実施するアップグレード処理のフローチャートである。
<Operation at first startup>
FIG. 4 is an operation flowchart at the first activation in the new version application execution environment. Here, it is a flowchart of the upgrade process executed by
第1の実行環境であるAppRE200の旧バージョンが存在しており、すでに旧バージョンにおいて(すなわち、第1の実行環境上で)動作することが想定された複数のAppがインストールされた状態で稼働していることが想定する。そのようなAppRE200の旧バージョン(第1の実行環境)が更新され新バージョン(第2の実行環境)に移行した時に、新バージョン上で初めて起動された時に実行される処理について述べる。ステップS401では、AppMFW202は、処理を開始する。
An old version of
ステップS402では、AppCMM221は、AppCache203上にすでにAppSec230が存在しているかどうかを判定する。なければステップS412へ進む。ある場合にはステップS403へ進む。
In step S <b> 402, the
ステップS403では、AppMFW202は、AppSec230−1上のAppIF205のMF242を参照する。ステップS404では、AppMFW202は、MF242に新バージョンに対応していることを示す記述が含まれているかどうかを判定する。含まれている場合にはステップS408へ進む。含まれていなければステップS405へ進む。
In step S403, the
ステップS405では、AppDSMM220は、図3で示したインストール時の処理と同様に、M−ECF251のCP273をチェックする。そして第1のクラス213のクラス名が存在しているかを判定する。ある場合には第2のクラス214のクラス名に書換え、AppIF205の中のものと置換する。ステップS406では、AppDSMM220は、SubECF252についても同様の処理を行う。
In step S405, the AppDSMM 220 checks the
ステップS404もしくはステップS406からステップS408へ進むと、AppSec230−1に配置されているLibECAF253があれば、最初(1番目)のファイルであるLibECAF253−1のMF242を参照する。MF242に新バージョン対応の記述があればステップS410へ進む。なければステップS409へ進む。
When the process proceeds from step S404 or step S406 to step S408, if there is a
ステップS409では、AppDSMM220は、LibECAF253−1に含まれるECF241のCP273のチェックを行う。そして必要があれば、それぞれについて第1のクラス213のクラス名から第2のクラス214のクラス名への書換えを実施する。それらECF241の処理が全て完了したらステップS410へ進む。
In step S409, the AppDSMM 220 checks the
ステップS410では、AppDSMM220は、LibECAF253−2からLibECAF253−Zが存在すれば、それらについて、LibECAF253−1と同様の処理を行う。残りのLibECAF253について処理が全て完了したら、ステップS411へ進む。
In step S410, if there is LibECAF253-2 to LibECAF253-Z, AppDSMM 220 performs the same processing as LibECAF253-1. When all the processing is completed for the remaining
ステップS411では、AppCMM221は、AppCache203にAppSec230−2からAppSec230−Nが存在しているかをチェックする。存在していれば、それらについても同様の処理を行う。ECF241およびLibECAF253についての処理が全て完了したらステップS412へ進み処理を完了する。
In step S411, the
図5Aは、互換性に関わる各クラスの内部構成を示す図である。ここでは、AppRE200の互換性に関わる第1のクラス213および第2のクラス214の内部構成を示している。
FIG. 5A is a diagram illustrating an internal configuration of each class related to compatibility. Here, the internal configurations of the
第1のクラス213に備わるクラスフィールド(CFld:Class Field)500は、ゼロ、1個もしくは複数個存在する。ここでは一例としてP個のCFldが存在する状態を図で示している。最初(1番目)のCFldをCFld500−1と表す。同様に、2番目のCFldをCFld500−2、P番目のCFldをCFld500−Pと表す。順序に関係なくCFldを表す場合には単にCFld500と表す。
There are zero, one, or a plurality of class fields (CFld: Class Field) 500 included in the
第1のクラス213に備わるインスタンスフィールド(IFld:Instance Field)501も、ゼロ、1個または複数個存在する。ここでは一例としてQ個のIFldが存在する状態を図で示している。最初(1番目)のIFldをIFld501−1と表す。同様に、2番目のIFldをIFld501−2、Q番目のIFldをIFld501−Qと表す。順序に関係なくIFldを表す場合には単にIFld501と表す。
There are zero, one, or a plurality of instance fields (IFld: Instance Field) 501 provided in the
第1のクラス213に備わるクラスメソッド(CMthd:Class Method)502も、ゼロ、1個または複数個存在する。ここでは一例としてR個のCMthdが存在する状態を図で示している。最初(1番目)のCMthdをCMthd502−1と表す。同様に、2番目のCMthdをCMthd502−2、R番目のCMthdをCMthd502−Rと表す。順序に関係なくCMthdを表す場合には単にCMthd502と表す。
There are zero, one, or a plurality of class methods (CMthd: Class Method) 502 provided in the
第1のクラス213に備わるインスタンスメソッド(IMthd:Instance Method)503も、ゼロ、1個または複数個存在する。ここでは一例としてS個のIMthdが存在する状態を図で示している。最初(1番目)のIMthdをIMthd503−1と表す。同様に、2番目のIMthdをIMthd503−2、S番目のIMthdをIMthd503−Sと表す。順序に関係なくIMthdを表す場合には単にIMthd503と表す。
There are zero, one, or a plurality of instance methods (IMthd: Instance Method) 503 provided in the
第2のクラス214は、第1のクラス213と同数のCFldを備える。第2のクラス214の最初(1番目)のCFldを同様にCFld510−1で表す。2番目以降のCFldも同様にCFld510−2からCFld510−Pと表す。順序に関係なく第2のクラス214のCFldを表す場合は単にCFld510と表す。ここで、第2のクラス214の各CFldは外部参照の為の定義が第1のクラス213のもの一致するように用意されている。IFld、CMthd、IMthdについても同様である。
The
図5Bは、クラスフィールド及びインスタンスフィールドの構成を示す図である。ここでは、AppRE200の第2のクラス214のCFld510およびIFld511の値の定義のパターンを示している。
FIG. 5B is a diagram showing the configuration of the class field and the instance field. Here, the definition pattern of the values of CFld510 and IFld511 of the
第2のクラス214のa番目のCFldであるCFld510−aは、互換性に影響しないCFldである。すなわち第1のクラス213に属する対応するCFld500−aと同一の値のままでよいCFldであるとする。この場合、CFld510−aの値はCFld500−aの値をそのまま参照する。これによりAppがCFld510−aを参照すると、常にCFld500−aと同一の値が得られることとなる。
The CFld 510-a that is the a-th CFld of the
一方、第2のクラス214のb番目のCFldであるCFld510−bは互換性に影響する。そのため、第1のクラス213の対応するCFld500−bの値とは異なる値を保持する必要がある。独自定義値521は、この場合のCFldCFld510−bの値として定義される。これにより、AppがCFld510−bを参照すると、独自定義値521が得られることとなる。IFldについても同様である。
On the other hand, CFld 510-b, which is the b-th CFld of the
<クラスメソッド実行時の動作>
図6は、第1実施形態に係る各クラスの動作フローチャートである。ここでは、AppRE200の第2のクラス214におけるCMthd512の動作を示している。
<Operation when class method is executed>
FIG. 6 is an operation flowchart of each class according to the first embodiment. Here, the operation of
CMthd512−eは互換性に影響しないCMthdである。すなわち第1のクラス213に属する対応するCMthd502−eと同じ振る舞いをするべきCMthdであるとする。CMthd512−eは次のような処理を実施する。
CMthd 512-e is CMthd that does not affect compatibility. That is, it is assumed that the CMthd should behave the same as the corresponding CMthd 502-e belonging to the
AppRE200に保持されているいずれかのAppが、第1のクラス213のCMthd502−eを呼び出すようプログラミングされているとする。そこでAppのCMthd502−eを呼び出すコードを含んでいるECF241が、図3もしくは図4に示した処理によりCP273に書かれた第1のクラス213のクラス名を書き換えられているとする。ここでECF241とは、M−ECF251、SubECF252、もしくはLibECAF253に含まれるもののいずれかである。この時ECF241におけるCMthd502−eの呼び出しは、クラス名が第2のクラス214のクラス名に書き換えられていることによりCMthd512−eの呼び出しに変わっている。これによりCIM210はECFの実行コードを解釈実行する際に、CMthd512−eの呼び出しを処理する。
Assume that any App held in
ステップS601では、CIM210は、処理を開始する。すなわち、Appの実行制御を開始する。ステップS602では、CIM210は、CMthd502−eを、CMthd512−eに渡された引数があればそれを渡して呼び出す。ステップS603にてCMthd502−eの戻り値を、CMthd512−eの戻り値として返す。そして、ステップS604へ進んで処理を完了する。処理が完了するとCIM210は、呼び出し元へ戻って処理を続行する。
In step S601, the
これらの処理により、AppのCMthd512−eの呼び出し処理は、第1のクラス213のCMthd502−eを呼び出したのと等価となり、Appの動作に影響を与えることはない。
With these processes, the call process of App's CMthd 512-e is equivalent to calling the CMthd 502-e of the
一方、CMthd512−fは互換性に影響し、第1のクラス213に属する対応するCMthd502−fとは異なる、AppRE200の旧バージョンが返すのと同じ値を返す必要があるとする。この場合、CMthd512−fは次のような処理を実施する。
On the other hand, it is assumed that CMthd 512-f affects compatibility and needs to return the same value as the previous version of
ここでもAppのCMthd502−fを呼び出すコードを含んだECF241が、図3もしくは図4に示した処理によりCP273に書かれた第1のクラス213のクラス名を書き換えられているとする。この時ECF241におけるCMthd502−fの呼び出しはCMthd512−fの呼び出しに変わっている。これによりCIM210は、ECFの実行コードを解釈実行する際に、CMthd512−fの呼び出しを処理する。
Also here, it is assumed that the
ステップS611では、CIM210は、処理を開始する。ステップS612では、CIM210は、引数があれば、渡された引数の値が互換性に関わる引数の値の範囲に含まれているかどうかを判定する。含まれている場合にはステップS615へ進む。それ以外の場合はステップS613へ進む。
In step S611, the
ステップS613では、互換性に問題がない為、CIM210は、CMthd502−fを、CMthd512−fに渡された引数があればその引数を渡して呼び出す。ステップS614でCMthd502−fが戻り値として返してきた値を、戻り値として返し、ステップS617へ進み処理を完了する。
In step S613, since there is no problem in compatibility, the
一方、ステップS615へ進んだ場合には、CIM210は、AppRE200の旧バージョンが返すのと同じ値を返すように、独自の処理を行い、戻り値を算出する。ステップS616では、CIM210は、算出された戻り値をCMthd512−fの戻り値として返す。そしてステップS617へ進み処理を完了する。
On the other hand, when the process proceeds to step S615, the
第2のクラス214のIMthd513の動作のパターンについても、CMthd512の動作と基本的に同様であるため詳細な説明は省略する。
The operation pattern of the
これらの処理により、CMthd512−fが呼び出されることがAppRE200の旧バージョンにおいて第1のクラス213のCMthd502−fの呼び出しと等価となる。IMthd503−hとIMthd513−hの関係でも同様である。これによりAppRE200が新バージョンであることにより発生する第1のクラス213の互換性に関わる問題は、Appの動作に影響を与えないことになる。
With these processes, calling CMthd512-f is equivalent to calling CMthd502-f of the
以上説明したとおり第1実施形態によれば、AppRE200は、互換性に関わる第1のクラス213のクラス名が書かれたECF241を書き換える。そして書き換えたECF241をECAF204もしくはAppIF205の中のものと置き換える。これらクラス名の書き換え処理やECFの置き換え処理は、Appのインストール処理もしくは、新バージョンのAppRE200の初回起動時に実施される。この為、Appが実際に解釈実行される時にはAppの実行に大きな影響を与えることはない。
As described above, according to the first embodiment, the
また、第1実施形態では、第2のクラス214を含んだCSLM212が追加されるだけでありAppREにおいて互換性の為に費やされるモジュールの占有する容量も少ない。また書き換えられるのは互換性に関わる第1のクラス213のクラス名が書かれた定数定義275の定数値277領域だけである。すなわち余分なリソース容量を費やすことがない。
Further, in the first embodiment, only the
これらの特性により、第1実施形態に係るAppRE200は、リソースの容量や実行速度についての制限が厳しい組込向けのAppRE200である場合にも好適に適用可能である。
Due to these characteristics, the
(第2実施形態)
第2実施形態では、MF242を参照し、新バージョンに対応するという記述が含まれているかをチェックする替わりに、ECF241のCP273に含まれる値のみで判定を行う。
(Second Embodiment)
In the second embodiment, the
第1実施形態においては、AppIF205およびECAF204について、そのMF242をチェックしている。MF242にAppRE200の新バージョンに対応する記述があるかを判定し、あるのであれば、ECF241の書き換えは必要ないと判断している。しかしMF242に新バージョンに対応する記述を追加するのは開発者による為、開発者にとっては負担である。更に開発者のヒューマンエラーにより記述が漏れてしまうことがあり得る。その場合、実際にはAppが新バージョンに対応しているにも関わらず、ECF241の書き換えが発生してしまう。すると、本来第2のクラス214を経由する必要はないにも関わらず、常に第2のクラス214を経由してしまい、パフォーマンスに悪影響を与えてしまうという可能性が生じる。
In the first embodiment, the
<クラスメソッド実行時の動作>
図7は、第2実施形態に係る各クラスの動作フローチャートである。ここでは、第2のクラス214におけるCMthd512−fおよびIMthd513−hの処理を示している。以下の説明においては、第1実施形態(図6)に対して差異のある部分についてのみ説明する。またここで提示されている図7の処理の内容は、図6の処理の内容のうち特別なケースに相当する。
<Operation when class method is executed>
FIG. 7 is an operation flowchart of each class according to the second embodiment. Here, the processes of CMthd 512-f and IMthd 513-h in the
CMthd512−fの処理を行う中で、ステップS612において、引数が互換性に関わる範囲に含まれている場合にはステップS801へ進む。 During the process of CMthd512-f, if the argument is included in the range related to the compatibility in step S612, the process proceeds to step S801.
ステップS801では、CIM210は、互換性の為に用意されたCMthd512−fに渡された引数の値に対応する別の値を引数としてCMthd502−fを呼び出す。
In step S801, the
ステップS802では、CIM210は、CMthd502−fの呼び出しから戻ってきた戻り値を受け取り、それをCMthd512−fの戻り値として返す。そしてステップS617へ進んで終了する。
In step S802, the
また、IMthd513−hの処理を行う中で、ステップS632において、引数が互換性に関わる範囲に含まれている場合にはステップS811へ進む。 Further, during the process of IMthd513-h, if the argument is included in the range related to the compatibility in step S632, the process proceeds to step S811.
ステップS811では、CIM210は、互換性の為に用意されたIMthd513−hに渡された引数の値に対応する別の値を引数としてIMthd503−hを呼び出す。
In step S811, the
ステップS812では、CIM210は、IMthd503−hの呼び出しから戻ってきた戻り値を受け取り、それをIMthd513−hの戻り値として返す。そしてステップS637へ進んで終了する。
In step S812, the
図8は、互換性の問題に関わる引数を説明する図である。特に、ここで問題になっている引数の値の一例を示している。 FIG. 8 is a diagram for explaining arguments related to the compatibility problem. In particular, an example of the argument value in question here is shown.
第1のクラス213が“legacy.class.System”であるとする。AppRE200の旧バージョンでは、第1のクラス213の“get()”というCMthdに対して“legacy.prop”という文字列を与えることによりAppが必要な値を獲得していた。以下“legacy.prop”という文字列を“非互換引数A”と呼ぶ。
Assume that the
一方、AppRE200の新バージョンでは、非互換引数Aを“get()”に与えると旧バージョンで得られたものと全く違う値が返ってくるようになっている。その代わりに、AppRE200の新バージョンでは “alternative.prop”という文字列を用意する。以下“alternative.prop”という文字列を“互換引数B”と呼ぶ。Appは“get()”に対して互換引数Bを与えることにより、従来は非互換引数Aにより得られていた値を得ることができるようになった。このように、App自身が互換引数Bを使用するように構成されている場合には、AppRE200のバージョンに関する互換性の問題を回避できる。しかしApp自身がこのような処理に対応していない場合には、第1のクラス213のクラス名から第2のクラス214のクラス名への書き換えが必要である。
On the other hand, in the new version of
ここでAppRE200はCSLM212に含まれる第2のクラス214である“inheritclass.System”を用意している。この第2のクラス214のクラス名は第1のクラス213の“get()”に対応するCMthdである“get()”を保持している。そして、この第2のクラス214の“get()”に非互換引数Aという文字列を引き渡すと、必要な値を得ることができる。すなわち、旧バージョンにおいて第1のクラス213の“get()”に非互換引数Aという文字列を引き渡した時に得られる値と同じ値が得られるようになっている。
Here, the
旧バージョンと同じ動作を期待するAppは、AppMFW202によって実行コード241を書き換えられた場合のことを考える。Appにおいて第1のクラス213の“get()”を呼び出していたコードは、第2のクラス214の“get()”を呼び出すように変更される。すると非互換引数Aに対して、Appが期待していた値Aが返ってくる。これにより互換性が保たれる。
An App that expects the same operation as the previous version considers a case where the
一方、すでに新バージョンのAppRE200に対応済みのAppは第1のクラス213の“get()”に対して互換引数Bを引き渡すことで互換性を確保している。すると、そのようなAppのECF241では互換引数Bが文字列定数として保持されることになる。従って、CP273に第1のクラス213のクラス名があっても互換引数Bの文字列が保持されているECF241は書き換える必要がないことが分かる。一方、CP273に第1のクラス213のクラス名があり、更に文字列定数として互換引数Bを持っていないECF241はクラス名の書き換えが必要であることになる。
On the other hand, App already compatible with the new version of
<インストール処理の動作>
図9は、第2実施形態におけるインストール処理のフローチャートである。ここでは、AppRE200のAppMFW202が、Appをインストールする処理を示している。以下の説明では第1実施形態(図3)に対して差異のある部分についてのみ説明する。
<Operation of the installation process>
FIG. 9 is a flowchart of the installation process in the second embodiment. Here,
ステップS313では、AppMFW202は、CP273に第1のクラス213のクラス名を表す定数値277が存在するかチェックする。ある場合にはステップS1001へ進む。なければステップS1002へ進む。ステップS1001では、AppMFW202は、CP273に互換性に関わる第1のクラス213のメソッド703に渡される引数を表すような定数値277が存在しているかをチェックする。なければステップS314へ進む。あればステップS1002へ進む。ステップS314では、AppMFW202は、CP273内の第1のクラス213のクラス名を第2のクラス214のクラス名に書き換える。その後ステップS1002へ進む。
In step S313, the
ステップS313、ステップS1001、あるいはステップS314からステップS1002に到達すると、AppMFW202は、SubECF252についても順に同様の処理を行う。全てのSubECF252について処理が完了したらステップS319へ進む。
When the process reaches step S1002 from step S313, step S1001, or step S314,
ステップS319では、AppMFW202は、LibECAF253−1からECF241−1を取り出す。ステップS320では、AppMFW202は、ECF241−1のCPに第1のクラス213のクラス名があるかをチェックする。あればステップS1003へ進む。なければステップS1004へ進む。ステップS1003では、AppMFW202は、ここで問題となっている互換性に関わる第1のクラス213のメソッド703に渡される引数を表すような定数値277がCP273内に存在しているかをチェックする。なければステップS321へ進む。ある場合にはステップS1004へ進む。ステップS321では、AppMFW202は、CP273内の第1のクラス213のクラス名を第2のクラス214のクラス名に書き換える。その後ステップS1004へ進む。
In step S319, the
ステップS320、ステップS1003、ステップS321からステップS1004へ進んできたら、ステップS1004では、AppMFW202は、同様の処理を、2番目のECFであるECF241−2からX番目のECFであるECF241−Xまで施す。残りの全てのECF241について処理が完了したら処理はステップS1005へ進む。
After proceeding from step S320, step S1003, and step S321 to step S1004, in step S1004,
ステップS1005では、AppMFW202は、LibECAF253−2からLibECAF253−Zまでについて、LibECAF253−1と同様の処理を行う。すべてのLibECAF253の処理が完了したらステップS325へ進み、処理を完了する。
In step S1005,
<初回起動時の動作>
図10は、第2実施形態におけるアプリケーション実行環境の初回起動時の処理のフローチャートである。ここでは、AppRE200のAppMFW202が、更新後の初回起動時に実施するアップグレード処理を示している。以下の説明では第1実施形態(図4)に対して差異のある部分のみ説明する。
<Operation at first startup>
FIG. 10 is a flowchart of the process at the first activation of the application execution environment in the second embodiment. Here, the upgrade process executed by the
ステップS402では、AppMFW202は、AppCache203上にすでにAppSec230が存在するかどうかをチェックする。なければステップS412へ進み、あればステップS1101へ進む。
In step S <b> 402, the
ステップS1101では、AppMFW202は、AppSec230−1に配置されたAppIF205を参照する。ステップS1102では、AppMFW202は、AppIF205に含まれるM−ECF251について、図9で示したインストールの処理時にECF241に対して行ったのと同様の処理を行う。
In step S1101, the
ステップS1103では、AppMFW202は、AppIF205のSubECF252が存在すれば、それらに順番に、同様の処理を施す。全てのSubECF252に対する処理が完了したらステップS1104へ進む。
In step S1103, if there is a SubECF 252 of the
ステップS1104では、AppMFW202は、AppSec230−1に配置されたLibECAF253−1が存在すればそれを参照する。ステップS1105では、AppMFW202は、LibECAF253−1に含まれるECF241のそれぞれについて、同様の処理を実施する。全てのECF241について処理が完了したらステップS1106へ進む。
In step S1104, the
ステップS1106では、AppMFW202は、更に、AppSec230−1にLibECAF253−2からLibECAF253−Yが存在すれば、同様の処理を行う。全てのLibECAF253について処理が完了したらステップS1107へ進む。
In step S1106, the
ステップS1107では、AppMFW202は、AppSec230−2からAppSec230−Nが存在すれば、そこに展開されているAppFS231について同様の処理を行う。更にAppFS231に展開されているLibECAF253についても、含まれているECF241に対して同様の処理を行う。AppMFW202は、展開されている全てのAppSec230に対して処理が完了したらステップS412へ進み処理を完了する。
In step S1107, if there is AppSec 230-2 to AppSec 230-N,
以上説明したとおり第2実施形態によれば、AppRE200は、ECF241のCP273に含まれる値に基づいてECF241書き換えを行うか否かを判定する。これにより、あるAppがAppRE200の新バージョンに対する対応を行ったかどうかを、開発者が意識してMF242に値を記載する必要がない。これにより、開発者の負担が軽減される。また、開発者が誤ってMF242に新バージョン対応の記述を追加することを忘れた場合にも、対応済のECF241についての無駄な書き換えを抑止できる。
As described above, according to the second embodiment, the
(第3実施形態)
第3実施形態では、書き換える前のECF241を維持する形態について説明する。実際の運用においては、AppRE200を新バージョンに切り替えた後、IPA102の処理能力等の問題で旧バージョンのAppRE200に戻す場合がある。このような場合第1及び第2実施形態においては、ECF241は新バージョンとの互換性のために書き換えられていることから、旧バージョンのAppRE200では正常に動作しない場合がある。
(Third embodiment)
In the third embodiment, a mode for maintaining the
そこで、第3実施形態では、書き換える前のECF241を維持する構成について説明する。一般に、AppRE200の新バージョンから旧バージョンへの切り替えの際にはIPA102のシャットダウンと起動が行われる。そこで、IPA102のシャットダウン時において、次回のIPA102の起動時にAppRE200が旧バージョンに戻っていても問題がないようにする構成する。具体的には、シャットダウン時に、次回にAppを実行する際に書き換え前のECF241を保持したECAF204が実行される状態に変更する。一方で、新バージョンのAppRE200は、起動時に、次回にAppを実行する際に書き換え後のECF241を保持したECAF204が実行される状態に変更する。これにより、AppRE200が旧バージョンに戻された際にも問題なくAppが実行されるようにする。
Therefore, in the third embodiment, a configuration for maintaining the
図11は、第3実施形態におけるアプリケーションキャッシュの内部構成を示す図である。ここでは、AppCache203の内容を示している。
FIG. 11 is a diagram illustrating an internal configuration of an application cache according to the third embodiment. Here, the contents of
複製AppIF1401は、AppIF205の保持しているECF251及びECF252に対して書き換えを行った場合に、その書き換えたファイルを格納する為に作成されたAppIFの複製である。複製LibECAF1402は、LibECAF253の保持しているECF241に対して書き換えを行った場合に、その書き換えたファイルを格納する為に作成されたLibECAFの複製である。すなわち、AppCache203の一部区画は複製格納手段として機能する。
The
なお、図では複製AppIF1401及び複製LibECAF1402がそれぞれのECF241に対応して存在するように示しているが、実際にはこれらは書き換えが発生した場合にのみ作成されるものである。またECAF204の名称変更は複製AppIF1401及び複製LibECAF1402が作成された場合にのみ行われるものである。
In the figure, the
もともとはAppFS231にはAppIF205とLibECAF253が格納されている。第3実施形態では、AppMFW202が各ECAF204に含まれるECF241を書き換えることがある。それらを書き換えた場合に、それをECAF204の複製(すなわち書換え前、置換前のECAF204)を作成しそちらの元のファイルと置き換える。すなわち、そのような場合にはAppIF205の複製である複製AppIF1401や、LibECAFの複製である複製LibECAF1402が作成される。
Originally,
そしてこのような複製AppIF1401及び複製LibECAF1402を作成する場合には元のECAF204を別名に名称変更する。その上でこれら元のECAF204に付与されていた元の名称を複製AppIF1401及び複製LibECAF1402に与える。
When such a
<インストール処理の動作>
図12は、第3実施形態におけるインストール処理のフローチャートである。ここでは、AppRE200のAppMFW202が、Appをインストールする処理を示している。以下の説明においては、第1実施形態(図3)に対すて差異のある部分についてのみ説明する。
<Operation of the installation process>
FIG. 12 is a flowchart of the installation process in the third embodiment. Here,
ステップS313では、AppMFW202は、CP273に第1のクラス213のクラス名があるかをチェックする。ある場合にはステップS313へ進む。ない場合にはステップS1503へ進む。ステップS314では、AppMFW202は、M−ECF251のCP273内の第1のクラス213のクラス名を第2のクラス214のクラス名に書き換える。
In step S313, the
ステップS1501では、AppMFW202は、AppIF205の名称を変更する。その上で、AppIF205の複製AppIF1401をAppIF205に与えられていた名称で作成する。そして書き換えたM−ECF251を、AppIFの複製1401の中の元のファイルと置き換える。
In step S1501, the
ステップS313もしくはステップS1501からステップS1503へ進むと、AppMFW202は、SubECF252についても同様の処理を行う。全てのSubECF252について処理が完了したらステップS318へ進む。
When the process proceeds from step S313 or step S1501 to step S1503, the
ステップS320では、AppMFW202は、最初(1番目)のECFであるECF241−1のCP273に第1のクラス213のクラス名が存在するかをチェックする。存在する場合にはステップS321へ進む。なければステップS1506へ進む。
In step S320, the
ステップS321では、AppMFW202は、ECF241−1のCP273の第1のクラス213のクラス名を第2のクラス214のクラス名へ書き換えたら、ステップS1504へ進む。
In step S321, when the
ステップS1504では、AppMFW202は、LibECAF253−1の名称を変更し、その上でLibECAF253−1の元の名称で複製LibECAF1402−1を作成する。その後書き換えを行ったECF241−1で、複製LibECAF1402−1の中のファイルを置き換える。
In step S1504, the
ステップS320もしくはステップS1504からステップS1506へ進むと、AppMFW202は、LibECAF253−1に含まれる残りのECF253があれば、それらについて同様の処理を行う。全てのLibECAF253について処理が完了したらステップS1507へ進む。
When the process proceeds from step S320 or step S1504 to step S1506, the
ステップS318もしくはステップS1506からステップS1507へ進むと、AppMFW202は、LibECAF253−2からLibECAF253−Zについても同様の処理を実行する。これらの処理を全てのLibECAF253に対して実行し終わったらステップS325へ進み処理を完了する。
When the process proceeds from step S318 or step S1506 to step S1507, the
<初回起動時の動作>
図13は、第3実施形態におけるアプリケーション実行環境の初回起動時の処理のフローチャートである。ここでは、AppRE200のAppMFW202が、更新後の初回起動時に実施するアップグレード処理を示している。以下では、第1実施形態(図4)との差異がある部分についてのみ説明する。
<Operation at first startup>
FIG. 13 is a flowchart of the process at the first activation of the application execution environment in the third embodiment. Here, the upgrade process executed by the
ステップS404では、AppMFW202は、AppIF205のMF242に新バージョン対応の記述があるか否かをチェックし、あればステップS408へ進む。なければステップS1601へ進む。
In step S404, the
ステップS1601では、AppMFW202は、M−ECF251のCP273に第1のクラス213のクラス名が含まれているかをチェックする。含まれている場合には文字列を第2のクラス214のクラス名に書き換える。そしてAppIF205の名称を変更する。そしてAppIF205の元の名称で、AppIF205の複製である複製AppIF1401を作成する。そして複製AppIF1401に含まれるM−ECF251を書き換えたものと置き換える。
In step S1601, the
ステップS1602では、AppMFW202は、SubECF252があれば、それらに対して同様の処理を行う。全てのSubECF252の処理が完了したらステップS408へ進む。
In step S1602, if there is the SubECF 252, the
ステップS408では、AppMFW202は、LibECAF253−1のMF242に新バージョン対応の記述があるかどうかをチェックする。ある場合にはステップS1604へ進む。ない場合にはステップS1603へ進む。
In step S408, the
ステップS1603では、AppMFW202は、LibECAF253−1に含まれるECF241のそれぞれについて、同様の処理を実行する。LibECAF253−1に含まれる全てのECF241について処理が完了したらステップS1604へ進む。
In step S1603, the
ステップS1604では、AppMFW202は、AppSec230−1に配置されている他のLibECAFがあればそれらに対して同様の処理を行う。AppSec230−1に配置されたLibECAF253全ての処理が完了したらステップS1605へ進む。
In step S1604, if there is another LibECAF arranged in AppSec 230-1, the
ステップS1605では、AppMFW202は、他のAppSec230が存在すればそれらAppSec230−2からAppSec230−Nまでについて同様の処理を行う。これらの処理を全てのAppSec230に対して実行し終わったらステップS412へ進み処理を完了する。
In step S1605, if there is another
<起動処理時の動作>
図14は、アプリケーション実行環境の起動処理のフローチャートである。ここでは、AppRE200の起動時にAppMFW202が実行する処理を示している。AppRE200およびAppMFW202は他にも起動時に実行する処理を備えているが、ここでは第3実施形態に関わる部分だけを抜き出したものを示している。AppRE200は、通常はIPA102に電源が投入された際にその起動処理の一環として起動される。ただし、場合によっては利用者の手動、もしくはAppRE200自身の再起動が必要な状況に置いて自動的に起動されることがあり得る。ステップS1701から処理を開始する。
<Operation during startup processing>
FIG. 14 is a flowchart of activation processing of the application execution environment. Here, a process executed by the
ステップS1702では、AppMFW202は、AppCache203にAppSec230が作成されているかどうかをチェックする。なければステップS1707へ進む。作成されていればステップS1703へ進む。
In step S1702, the
ステップS1703では、AppMFW202は、AppSec230−1の中に存在するファイル205及び253の中に、複製AppIF1401及び複製LibECAF1402を有するファイルがあるかどうかをチェックする。存在していればステップS1704へ進む。いなければステップS1705へ進む。
In step S1703, the
ステップS1704では、AppMFW202は、複製AppIF1401及び複製LibECAF1402が存在するファイルについて、元のファイル名称で存在している元のファイル205及びファイル253を別の名称に名称変更する。そしてそれらに対応する複製AppIF1401及び複製LibECAF1402を、それらの元のファイルにつけられていたファイル名に名称変更する。
In step S1704, the
ステップS1705では、AppMFW202は、残りのAppSec230が存在すればそれらに対しても同様の処理を行う。
In step S1705, if there is a remaining
ステップS1706では、AppMFW202は、Appをそれぞれ起動する。ステップS1707では、AppMFW202は、処理が完了する。
In step S1706, the
<終了処理時の動作>
図15は、アプリケーション実行環境の終了処理のフローチャートである。ここでは、AppRE200の終了時にAppMFW202が実行する処理を示している。AppRE200およびAppMFW202は他にも終了時に実行する処理を備えているが、ここでは第3実施形態に関わる部分だけを抜き出したものを示している。AppRE200は、通常はIPA102に対して電源断処理が実施された際にその電源断(シャットダウン)処理の一環として終了する。ただし、場合によっては利用者の手動、もしくはAppRE200自身の再起動が必要な状況に置いて自動的に終了することがあり得る。ステップS1801では、AppMFW202は、処理を開始する。
<Operation during termination processing>
FIG. 15 is a flowchart of the termination process of the application execution environment. Here, a process executed by the
ステップS1802では、AppMFW202は、全てのAppの終了処理が完了するのを待つ。ステップS1803では、AppMFW202は、AppCache203に作成されたAppSec230が存在するかをチェックする。存在していなければステップS1807へ進む。存在していればステップS1804へ進む。
In step S1802, the
ステップS1804では、AppMFW202は、AppSec230−1に配置されたファイルの中に複製が存在しているものがあるかどうかをチェックする。存在していればステップS1805へ進む。存在していなければステップS1806へ進む。ステップS1805では、AppMFW202は、複製が存在するファイルそれぞれについて、以下の処理を実行する。すなわち、複製AppIF1401及び複製LibECAF1402についてその名称を別名に名称変更し、元のファイル205及びファイル253の名称を、本来の名称に変更する。
In step S1804, the
ステップS1806では、AppMFW202は、AppSec230−2からAppSec230−Nが存在していれば、それらに対して同様の処理を実施する。それら全てに対する処理が完了したらステップS1807へ進み処理を完了する。
In step S1806, if there is AppSec 230-2 to AppSec 230-N,
以上説明したとおり第3実施形態によれば、AppRE200は、図15の終了処理を行った時点から次回の起動時に図14の起動処理を実行するまでの間、元のファイル205及びファイル253が元のファイル名を保持する。
As described above, according to the third embodiment, the
IPA102上にてAppRE200のバージョンの入れ替えが発生する場合、AppRE200自体は開始する前もしくは終了した後の状態に置かれる。この為AppRE200のバージョンの入れ替えが発生した時点では元のファイル205及びファイル253が元のファイル名を保持している。ここでAppRE200が旧バージョンであった場合には、当該旧バージョンのAppRE200は元のファイル205及びファイル253を実行することとなる。これは元のファイル205及びファイル253が元のファイル名を保持しているからである。
When the exchange of the
このように、第3実施形態では、AppRE200を旧バージョンに戻した場合においてもAppを正常に実行することが可能となる。
As described above, in the third embodiment, App can be normally executed even when
(第4実施形態)
第4実施形態では、書き換える前のECAF205及び253およびそれらの複製AppIF1401及び複製LibECAF1402に対して、元の名前でのアクセスが可能になるようなハードリンクを起動前後に付与する形態について説明する。
(Fourth embodiment)
In the fourth embodiment, a description will be given of a form in which hard links are provided before and after activation so that the
上述の第3実施形態では、元のファイル205及びファイル253に元のファイル名を付与する処理を、AppRE200のシャットダウン処理の一環で実施していた。正常にAppRE200をシャットダウンできた場合においては問題は起こらない。しかしながら、シャットダウンを正常に実行できなかった場合には問題が生じる。例えば、IPA102の置かれる環境等によってはIPA102に対する電源供給が突然断たれることにより、正常なシャットダウン処理を経ないままIPA102が停止してしまう事態があり得る。その場合、次にIPA102に電源が投入された時、第3実施形態ではAppRE200は複製AppIF1401及び複製LibECAF1402に元のファイル名が付与された状態で開始することになる。そのため、AppRE200が旧バージョンに戻っていた場合、ECF241の書き換えが行われたAppについては正常に動作しない可能性がある。
In the third embodiment described above, the process of assigning the original file name to the
図16は、第4実施形態におけるアプリケーションキャッシュの内部構成を示す図である。ここでは、AppCache203の内容を示している。以下では、図11との差異部分についてのみ説明する。
FIG. 16 is a diagram showing an internal configuration of the application cache in the fourth embodiment. Here, the contents of
第4実施形態においては、AppRE200は、ECAF205及びECAF352もしくは複製AppIF1401及び複製LibECAF1402を実行する際に、元の名前で参照されるハードリンクを通じて行う。なお、ここでは、IPA102が採用しているファイルシステムにおいては、1つのファイルの実体に対してファイル名が異なる複数のハードリンクを張ることが可能であることを想定している。このハードリンクを張る処理(リンク生成ともいう)は、ファイルシステムおよびIPA102の基本ソフトによってアトミックに実行される。
In the fourth embodiment, the
アプリケーションインストール用実行対象リンク1901は、AppIF205もしくはその複製である複製AppIF1401を実際に実行時に読み込む際にその参照に使用されるハードリンクである。ライブラリ実行コード格納実行対象リンク1902は、LibECAF253もしくはその複製である複製LibECAF1402を実際に実行時に読み込む際にその参照に使用されるハードリンクである。
The application installation
ここでは、説明を簡単にするため、複製AppIF1401及び複製LibECAF1402や実行対象リンク1901及び実行リンク1902が、元のECAF205及びECAF253に対して常に存在する例を図示している。ただし、必ずしも元のECAF205及び253に対して内部のECF241の書き換えが起こるわけではなく、そのようなケースでは複製や実行対象リンクは作成されない。
Here, in order to simplify the description, an example in which the
<インストール処理の動作>
図17は、第4実施形態におけるインストール処理のフローチャートである。ここでは、AppRE200のAppMFW202がAppをインストールする処理を示している。以下では、図3に対する差異部分についてのみ説明を加える。
<Operation of the installation process>
FIG. 17 is a flowchart of the installation process in the fourth embodiment. Here, the
ステップS313では、AppMFW202は、CP273に第1のクラス213のクラス名が存在するかをチェックし、存在する場合にはステップS314へ進む。ない場合にはステップS2004へ進む。
In step S313, the
ステップS314の処理後、ステップS2001では、AppMFW202は、AppIF205の複製AppIF1401を作成し、別名を与える。書き換えたM−ECF251で複製AppIF1401の中のファイルを置き換え、AppIF205のファイル名を変更する。そして元のAppIF205に対してAppIF205の元の名称を備えた実行対象リンク1901を張る。
After the process of step S314, in step S2001, the
ステップS313もしくはステップS2001からステップS2004進むと、AppMFW202は、SubECF252についてもそれぞれ同様の処理を行う。全てのSubECF205の処理が終わったらステップS318へ進む。
When the process proceeds from step S313 or step S2001 to step S2004, the
ステップS318では、AppMFW202は、LibECAF253−1のMF242に新バージョン対応の記述があるかをチェックする。あればステップS2009へ進む。なければステップS319へ進む。ステップS320では、AppMFW202は、LibECAF253−1のECF241−1のCP273に第1のクラス213のクラス名が存在する場合にはステップS321へ進む。存在しない場合にはステップS2008へ進む。ステップS321では、AppMFW202は、ECF241−1のCP273の第1のクラス213のクラス名を第2のクラス214のクラス名に書き換える。
In step S318, the
ステップS2005では、AppMFW202は、LibECAF253−1の複製である複製LibECAF1402−1を別名で作成し、書き換えたECF241−1でその中のファイルを置き換える。その後、LibECAF253−1の名称を別名に変更し、LibECAF253−1の元のファイル名を用いて、LibECAF253−1に対する実行対象リンク1902−1を張る。
In step S2005, the
ステップS2008では、AppMFW202は、LibECAF253−1に含まれる残りのECF241についても同様の処理を行う。全てのECF253に対して実行し終わったらステップS2009へ進む。
In step S2008, the
ステップS318もしくはステップS2008からステップS2009へ進むと、AppMFW202は、区画に展開されたLibECAFについても同様の処理を実行する。全てのLibECAFに対して処理が完了したらステップS325へ進み処理を完了する。
When the process proceeds from step S318 or step S2008 to step S2009, the
<初回起動時の動作>
図18は、第4実施形態におけるアプリケーション実行環境の初回起動時の処理のフローチャートである。ここでは、AppRE200のAppMFW202が、更新後の初回起動時に実施するアップグレード処理を示している。以下では、図4との差異部分についてのみ説明を加える。
<Operation at first startup>
FIG. 18 is a flowchart of processing at the first activation of the application execution environment in the fourth embodiment. Here, the upgrade process executed by the
ステップS404にてAppIF205のMF242に新バージョン対応の記述があればステップS408へ進む。なければステップS2101へ進む。
If there is a description corresponding to the new version in the
ステップS2101ではM−ECF251のCP273に第1のクラス213のクラス名が含まれているかをチェックする。含まれている場合には文字列を第2のクラス214のクラス名に書き換える。AppIF205の複製である複製AppIF1401を作成する。そして複製AppIF1401に含まれるM−ECF251を書き換えたものと置き換える。そしてAppIF205の名称を変更する。そしてAppIF205の元の名称で、AppIF205に対する実行対象リンク1902を張る。
In step S2101, it is checked whether the
ステップS2102では同様のことをSubECF252があればそれらに対して行う。全てのSubECF252に対して処理が完了したらステップS408へ進む。
In step S2102, the same is performed on the SubECF 252 if there is one. When the process is completed for all the SubECFs 252, the process proceeds to step
ステップS408では、LibECAF253−1のMF242に新バージョン対応の記述があるかどうかをチェックする。ある場合にはステップS2104へ進む。ない場合にはステップS2103へ進む。 In step S408, it is checked whether there is a description corresponding to the new version in the MF242 of the LibECAF 253-1. If there is, the process proceeds to step S2104. If not, the process proceeds to step S2103.
ステップS2103では、LibECAF253−1に含まれるECF241のそれぞれについて同様の処理を実行する。LibECAF253−1に含まれる全てのECF241について処理が完了したらステップS2104へ進む。
In step S2103, the same processing is executed for each of the
ステップS2104ではAppSec230−1に配置されている他のLibECAFがあればそれらに対して同様の処理を実行する。AppSec230−1に配置されたLibECAF253全てに対して処理が完了したらステップS2105へ進む。
In step S2104, if there are other LibECAFs arranged in AppSec 230-1, similar processing is executed for them. When the processing is completed for all the
ステップS2105では他のAppSec230が存在すればそれらAppSec230−2からAppSec230−Nまでについて同様の処理を実行する。全てのAppSec230に対して処理を実行し終わったらステップS412へ進む。ステップS412にて処理を完了する。
In step S2105, if there is another
<起動処理時の動作>
図19は、アプリケーション実行環境の起動処理のフローチャートである。ここでは、AppRE200のAppMFW202がAppを起動する際に行う処理を示している。ステップS2201では、AppMFW202のAppISMM221は処理を開始する。
<Operation during startup processing>
FIG. 19 is a flowchart of an application execution environment startup process. Here, a process performed when the
ステップS2202では、AppISMM221は、AppCMM222を通じて起動しようとするAppのAppSec230をチェックする。AppSec230内にECAFの複製AppIF1401及び複製LibECAF1402が存在していればステップS2203へ進む。存在しない場合にはステップS2208へ進む。
In step S2202, the
ステップS2203では、AppISMM221は、複製AppIF1401及び複製LibECAF1402の存在するファイルそれぞれについて以下のステップS2204を繰り返し処理する。
In step S2203, the
ステップS2204では、AppISMM221は、ECAFの実行対象リンク1901及び実行対象リンク1902を、複製AppIF1401及び複製LibECAF1402それぞれに対して張る。全ての複製の存在するECAF204に対して処理が完了したらステップS2205へ進む。
In step S2204, the
ステップS2205では、AppISMM221は、Appを起動し当該Appが完全に起動するまで待機する。ステップS2206では、AppISMM221は、全ての複製AppIF1401及び複製LibECAF1402の存在するファイルそれぞれについて、以下のステップS2207を繰り返し実行する。
In step S2205, the
ステップS2207では、AppISMM221は、ECAFの実行対象リンク1901及び実行対象リンク1902を、複製ではなく元のファイル205及びファイル253それぞれに対して張る。全ての複製AppIF1401及び複製LibECAF1402の存在するファイルについて処理が完了したら、ステップS2209に進んで処理を終了する。
In step S2207, the
ステップS2208では、AppISMM221は、Appを起動し、ステップS2209にて処理を終了する。
In step S2208,
以上説明したとおり第4実施形態によれば、AppRE200のAppMFW202は、Appの起動時に図19の処理を実施する。これにより、AppCache203の上では実行対象リンク1901及び実行対象リンク1902は、元のファイル205及びファイル253に張られていることになる。このため、IPA102が正常にシャットダウン出来ず、かつ、旧バージョンのAppRE200で起動した場合においても、好適にAppを動作させることが可能となる。
As described above, according to the fourth embodiment, the
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
(Other examples)
The present invention supplies a program that realizes one or more functions of the above-described embodiments to a system or apparatus via a network or a storage medium, and one or more processors in a computer of the system or apparatus read and execute the program This process can be realized. It can also be realized by a circuit (for example, ASIC) that realizes one or more functions.
200:アプリケーション実行環境; 201:アプリケーション実行基盤; 202:アプリケーション管理フレームワーク; 203:アプリケーションキャッシュ; 210:コード解釈実行モジュール; 211:実行基盤ライブラリモジュール; 212:互換性追加ライブラリモジュール; 213:第1のクラス; 214:第2のクラス 200: Application execution environment; 201: Application execution base; 202: Application management framework; 203: Application cache; 210: Code interpretation execution module; 211: Execution base library module; 212: Compatibility additional library module; 214: Second class
Claims (10)
前記第1の実行環境と非互換である前記第2の実行環境における第1のクラスを含む第1のライブラリと、前記第1の実行環境における非互換のクラスと互換の機能を前記第2の実行環境において提供する第2のクラスを含む第2のライブラリと、を格納する第1の格納手段と、
前記情報処理装置にインストールされた前記アプリケーションの実行コードとマニフェストとを格納する第2の格納手段と、
前記マニフェストを参照して、前記第2の実行環境における前記アプリケーションの動作互換性を判定する判定手段と、
前記判定手段により前記アプリケーションが前記第2の実行環境における動作互換性を有していないと判定された場合、前記アプリケーションの実行コードにおける前記第1のクラスを前記第2のクラスに書き換える書換手段と、
前記書換手段による書き換えが行われた実行コードを前記第2の実行環境で実行する実行制御手段と、
を有することを特徴とする情報処理装置。 An information processing apparatus that executes, in a second execution environment that is at least partially incompatible with the first execution environment, an application that is assumed to operate on the first execution environment,
A first library including a first class in the second execution environment that is incompatible with the first execution environment, and a function compatible with the incompatible class in the first execution environment. First storage means for storing a second library including a second class provided in the execution environment;
Second storage means for storing an execution code and a manifest of the application installed in the information processing apparatus;
Determining means for referring to the manifest to determine operation compatibility of the application in the second execution environment;
Rewriting means for rewriting the first class in the execution code of the application to the second class when the determination means determines that the application does not have operation compatibility in the second execution environment; ,
Execution control means for executing the execution code rewritten by the rewriting means in the second execution environment;
An information processing apparatus comprising:
前記第1の実行環境と非互換である前記第2の実行環境における第1のクラスを含む第1のライブラリと、前記第1の実行環境における非互換のクラスと互換の機能を前記第2の実行環境において提供する第2のクラスを含む第2のライブラリと、を格納する第1の格納手段と、
前記情報処理装置にインストールされた前記アプリケーションの実行コードを格納する第2の格納手段と、
前記実行コードに含まれる定数プールを参照して、前記第2の実行環境における前記アプリケーションの動作互換性を判定する判定手段と、
前記判定手段により前記アプリケーションが前記第2の実行環境における動作互換性を有していないと判定された場合、前記アプリケーションの実行コードにおける前記第1のクラスを前記第2のクラスに書き換える書換手段と、
前記書換手段による書き換えが行われた実行コードを前記第2の実行環境で実行する実行制御手段と、
を有することを特徴とする情報処理装置。 An information processing apparatus that executes, in a second execution environment that is at least partially incompatible with the first execution environment, an application that is assumed to operate on the first execution environment,
A first library including a first class in the second execution environment that is incompatible with the first execution environment, and a function compatible with the incompatible class in the first execution environment. First storage means for storing a second library including a second class provided in the execution environment;
Second storage means for storing an execution code of the application installed in the information processing apparatus;
Determining means for determining operation compatibility of the application in the second execution environment with reference to a constant pool included in the execution code;
Rewriting means for rewriting the first class in the execution code of the application to the second class when the determination means determines that the application does not have operation compatibility in the second execution environment; ,
Execution control means for executing the execution code rewritten by the rewriting means in the second execution environment;
An information processing apparatus comprising:
ことを特徴とする請求項1又は2に記載の情報処理装置。 The information according to claim 1, wherein the rewriting unit rewrites a character string of the class name of the first class in the execution code of the application into a character string of the class name of the second class. Processing equipment.
前記置換手段による置換前の実行コードを前記第2の格納手段に格納された実行コードのファイル名とは異なるファイル名で格納する複製格納手段と、
前記情報処理装置の終了処理の際に、前記複製格納手段に格納された実行コードのファイル名を前記第2の格納手段に格納された実行コードのファイル名に変更する変更手段と、
を更に有し、
前記変更手段は、更に、前記情報処理装置の起動処理の際に前記第2の実行環境で起動した場合、前記複製格納手段に格納された実行コードのファイル名を前記第2の格納手段に格納された実行コードのファイル名とは異なるファイル名に変更する
ことを特徴とする請求項1乃至3の何れか1項に記載の情報処理装置。 Replacement means for replacing the execution code stored in the second storage means with the execution code rewritten by the rewriting means;
Copy storage means for storing the execution code before replacement by the replacement means with a file name different from the file name of the execution code stored in the second storage means;
Changing means for changing the file name of the execution code stored in the copy storage means to the file name of the execution code stored in the second storage means during the termination process of the information processing apparatus;
Further comprising
The changing means further stores the file name of the execution code stored in the duplicate storage means in the second storage means when the information processing apparatus is activated in the second execution environment during the activation processing of the information processing apparatus. 4. The information processing apparatus according to claim 1, wherein the file name is changed to a file name different from the file name of the executed code.
前記置換手段による置換前の実行コードを格納する複製格納手段と、
前記情報処理装置の終了処理の際に、前記複製格納手段に格納された実行コードに対するハードリンクを前記第2の格納手段に格納された実行コードのファイル名で生成するリンク生成手段と、
を更に有する
ことを特徴とする請求項1乃至3の何れか1項に記載の情報処理装置。 Replacement means for replacing the execution code stored in the second storage means with the execution code rewritten by the rewriting means;
Copy storage means for storing the execution code before replacement by the replacement means;
A link generation unit that generates a hard link for the execution code stored in the copy storage unit with the file name of the execution code stored in the second storage unit during the termination process of the information processing apparatus;
The information processing apparatus according to claim 1, further comprising:
前記書換手段は、前記第2の実行環境での初回の起動であると検知された場合に前記書き換えを行う
ことを特徴とする請求項1乃至5の何れか1項に記載の情報処理装置。 A detector that detects whether or not the information processing apparatus is the first activation in the second execution environment;
6. The information processing apparatus according to claim 1, wherein the rewriting unit performs the rewriting when it is detected that the activation is the first time in the second execution environment.
前記インストール手段は、アプリケーションごとに前記第2の格納手段に個別の区画を作成してインストールを行い、
前記判定手段は、前記判定をアプリケーションごとに実行する
ことを特徴とする請求項1乃至6の何れか1項に記載の情報処理装置。 Installation means for installing the application in the second storage means;
The installation means creates and installs a separate partition in the second storage means for each application,
The information processing apparatus according to claim 1, wherein the determination unit performs the determination for each application.
前記情報処理装置は、
前記第1の実行環境と非互換である前記第2の実行環境における第1のクラスを含む第1のライブラリと、前記第1の実行環境における非互換のクラスと互換の機能を前記第2の実行環境において提供する第2のクラスを含む第2のライブラリと、を格納する第1の格納手段と、
前記情報処理装置にインストールされた前記アプリケーションの実行コードとマニフェストとを格納する第2の格納手段と、
を有しており、
前記制御方法は、
前記マニフェストを参照して、前記第2の実行環境における前記アプリケーションの動作互換性を判定する判定工程と、
前記判定工程により前記アプリケーションが前記第2の実行環境における動作互換性を有していないと判定された場合、前記アプリケーションの実行コードにおける前記第1のクラスを前記第2のクラスに書き換える書換工程と、
前記書換工程による書き換えが行われた実行コードを前記第2の実行環境で実行する実行制御工程と、
を含むことを特徴とする情報処理装置の制御方法。 An information processing apparatus control method for executing an application assumed to operate on a first execution environment in a second execution environment that is at least partially incompatible with the first execution environment,
The information processing apparatus includes:
A first library including a first class in the second execution environment that is incompatible with the first execution environment, and a function compatible with the incompatible class in the first execution environment. First storage means for storing a second library including a second class provided in the execution environment;
Second storage means for storing an execution code and a manifest of the application installed in the information processing apparatus;
Have
The control method is:
A determination step of determining operation compatibility of the application in the second execution environment with reference to the manifest;
A rewriting step of rewriting the first class in the execution code of the application to the second class when the determination step determines that the application does not have operation compatibility in the second execution environment; ,
An execution control step of executing the execution code rewritten by the rewriting step in the second execution environment;
A method for controlling an information processing apparatus, comprising:
前記情報処理装置は、
前記第1の実行環境と非互換である前記第2の実行環境における第1のクラスを含む第1のライブラリと、前記第1の実行環境における非互換のクラスと互換の機能を前記第2の実行環境において提供する第2のクラスを含む第2のライブラリと、を格納する第1の格納手段と、
前記情報処理装置にインストールされた前記アプリケーションの実行コードを格納する第2の格納手段と、
を有しており、
前記制御方法は、
前記実行コードに含まれる定数プールを参照して、前記第2の実行環境における前記アプリケーションの動作互換性を判定する判定工程と、
前記判定工程により前記アプリケーションが前記第2の実行環境における動作互換性を有していないと判定された場合、前記アプリケーションの実行コードにおける前記第1のクラスを前記第2のクラスに書き換える書換工程と、
前記書換工程による書き換えが行われた実行コードを前記第2の実行環境で実行する実行制御工程と、
を含むことを特徴とする情報処理装置の制御方法。 An information processing apparatus control method for executing an application assumed to operate on a first execution environment in a second execution environment that is at least partially incompatible with the first execution environment,
The information processing apparatus includes:
A first library including a first class in the second execution environment that is incompatible with the first execution environment, and a function compatible with the incompatible class in the first execution environment. First storage means for storing a second library including a second class provided in the execution environment;
Second storage means for storing an execution code of the application installed in the information processing apparatus;
Have
The control method is:
A determination step of determining operation compatibility of the application in the second execution environment with reference to a constant pool included in the execution code;
A rewriting step of rewriting the first class in the execution code of the application to the second class when the determination step determines that the application does not have operation compatibility in the second execution environment; ,
An execution control step of executing the execution code rewritten by the rewriting step in the second execution environment;
A method for controlling an information processing apparatus, comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015200472A JP2017073036A (en) | 2015-10-08 | 2015-10-08 | Information processing device and control method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015200472A JP2017073036A (en) | 2015-10-08 | 2015-10-08 | Information processing device and control method thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017073036A true JP2017073036A (en) | 2017-04-13 |
Family
ID=58537284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015200472A Pending JP2017073036A (en) | 2015-10-08 | 2015-10-08 | Information processing device and control method thereof |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2017073036A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220327096A1 (en) * | 2021-04-09 | 2022-10-13 | Fujitsu Limited | Computer-readable recording medium storing incompatibility detection program, incompatibility detection method, and incompatibility detection apparatus |
WO2022254504A1 (en) * | 2021-05-31 | 2022-12-08 | 富士通株式会社 | Information processing program, information processing method and information processing device |
-
2015
- 2015-10-08 JP JP2015200472A patent/JP2017073036A/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220327096A1 (en) * | 2021-04-09 | 2022-10-13 | Fujitsu Limited | Computer-readable recording medium storing incompatibility detection program, incompatibility detection method, and incompatibility detection apparatus |
WO2022254504A1 (en) * | 2021-05-31 | 2022-12-08 | 富士通株式会社 | Information processing program, information processing method and information processing device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6378127B1 (en) | Software installation and validation using custom actions | |
JP5007046B2 (en) | Maintaining component-based software products | |
US8752039B1 (en) | Dynamic upgrade of operating system in a network device | |
EP1974264B1 (en) | Method and system for sharing files among different virtual machine images | |
US5675804A (en) | System and method for enabling a compiled computer program to invoke an interpretive computer program | |
CN101387956B (en) | Method and apparatus for expandably implementing non functional logic | |
CN101681294B (en) | Method and system for memory transaction grouping | |
US7523472B2 (en) | Method and systems for DLL/COM redirection | |
US20070168956A1 (en) | System and method for representing user processes as software packages in a software package management system | |
US20120198433A1 (en) | Enabling parallel websphere runtime versions | |
US20110154378A1 (en) | Api namespace virtualization | |
JP2008507775A (en) | System and method for extracting and creating application meta information in a software application repository | |
CN106605212A (en) | Modular co-versioning in a dynamically linked runtime environment | |
JP2007128522A (en) | System and method for representing system capabilities as software packages in software package management system | |
JP2005509194A (en) | Method and apparatus for creating and using pre-internalized program files | |
JP2004005419A (en) | Install processing apparatus, processing method, storage medium, and program | |
US20140366045A1 (en) | Dynamic management of composable api sets | |
CN103677937A (en) | Method and device for upgrading and running software | |
JP2017073036A (en) | Information processing device and control method thereof | |
CN101571801A (en) | Service expansion system and method | |
US20160062801A1 (en) | Image forming apparatus and resource management method | |
US20160232033A1 (en) | Resource management apparatus and resource management method | |
US20060031821A1 (en) | Divided compiling program application functionality for software development | |
CN100547550C (en) | Install and be written into the system and method for installation system supervisory routine behind the operating system of user | |
TWI777636B (en) | Method, device, and computer program product for composing modular firmware |