JP2004318459A - 仮想システムにおけるネイティブアプリケーションのライフタイムマネージメント方法、及び、コンピュータプログラム - Google Patents
仮想システムにおけるネイティブアプリケーションのライフタイムマネージメント方法、及び、コンピュータプログラム Download PDFInfo
- Publication number
- JP2004318459A JP2004318459A JP2003111043A JP2003111043A JP2004318459A JP 2004318459 A JP2004318459 A JP 2004318459A JP 2003111043 A JP2003111043 A JP 2003111043A JP 2003111043 A JP2003111043 A JP 2003111043A JP 2004318459 A JP2004318459 A JP 2004318459A
- Authority
- JP
- Japan
- Prior art keywords
- bundle
- library
- native
- virtual system
- native application
- 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.)
- Withdrawn
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】仮想システム上で仮想システム上のアプリケーションと同様に、ネイティブアプリケーションのLife Cycle Managementを行う。
【構成】フレームワーク115によってLife Cycle Managementが行われるバンドル116を、Bundle Activatorであるクラスと、ネイティブコードライブラリと、ネイティブアプリケーションを含めて構成する。Bundle Activatorであるクラスのバンドルのスタート/ストップ時に呼び出されるStart()/Stop()メソッドには、ネイティブコードライブラリのライブラリ関数StartAP()/StopAp()を呼び出す処理を記述し、ライブラリ関数StartAP()/StopAp()には、ネイティブオペレーティングシステム113のAPIを利用してネイティブアプリケーションを起動/終了する処理を記述する。
【選択図】図4
【構成】フレームワーク115によってLife Cycle Managementが行われるバンドル116を、Bundle Activatorであるクラスと、ネイティブコードライブラリと、ネイティブアプリケーションを含めて構成する。Bundle Activatorであるクラスのバンドルのスタート/ストップ時に呼び出されるStart()/Stop()メソッドには、ネイティブコードライブラリのライブラリ関数StartAP()/StopAp()を呼び出す処理を記述し、ライブラリ関数StartAP()/StopAp()には、ネイティブオペレーティングシステム113のAPIを利用してネイティブアプリケーションを起動/終了する処理を記述する。
【選択図】図4
Description
【0001】
【発明の属する技術分野】
本発明は、ネイティブオペレーティングシステム上で稼働する仮想システムを利用して、様々なサービスの配信と実行の環境を提供する技術に関するものである。
【0002】
【従来の技術】
ネイティブオペレーティングシステム上で稼働する仮想システムを利用して、様々なサービスの配信と実行の環境を提供する技術としては、OSGI Service Platformと呼ばれる技術が知られている。
OSGI Service Platformは、WANからLANやデバイスに様々なサービスを配信する標準規格の策定を目的として設立されたOpen Services Gateway Initiative(OSGI)が提唱する規格である。この規格では、Javaバーチャルマシン(JVM)上に、様々なサービスの配信と実行の環境を提供するフレームワークを実装することにより、ネイティブオペレーティングシステムなどのプラットホームに依存しない、様々なサービスの配信と実行の環境を提供を実現している(「JAVA」は登録商標である)。
【0003】
このOSGI Service Platformでは、サービスを提供するアプリケーション等はバンドルと呼ばれ、このようなバンドルのインストール、アップデート、アンインストール、スタート、ストップを管理、制御する、Life Cycle Managementとして総称される機能を、フレームワークは備えている。
【0004】
ここで、バンドルには、クラスやパッケージ等のJavaプログラムの他、32ビットWindows系オペレーティングシステムにおけるDLLやUNIX系オペレーティングシステムにおけるShared Libraryなどの、ネイティブオペレーティングシステム上で直接実行されるライブラリをNative Codeとして含めることができる。そして、JVMは、このようなDLLやShared Libraryなどのネイティブオペレーティングシステム上で直接実行されるライブラリを、Javaプログラムから利用することを可能とする、Java Native Interface (JNI)と呼ばれるAPIを、Javaプログラムに提供する(「Windows」、「UNIX」は登録商標である)。
【0005】
また、OSGI Service Platformに関するものではなないが、ネイティブオペレーティングシステム上で直接実行されるネイティブアプリケーションとJavaアプリケーションとを、ソケット通信を介して協調動作させる技術も知られている(たとえば、特開2001?208547号公報)。
【0006】
この出願の発明に関連する先行技術文献情報としては以下のものがある。
【0007】
【特許文献1】
特開2002?245762号公報
【0008】
【非特許文献1】
http://www.osgi.org/resources/sp−r3/r3.book.pdf
「OSGi Service Platform, Release 3」
【0009】
【発明が解決しようとする課題】
ここで、前記OSGI Service Platformのフレームワークを実装する装置によっては、装置上で、ネイティブオペレーティングシステム上で直接実行されるネイティブアプリケーションを利用しなければならない、または、利用することが好ましい場合がある。たとえば、既存の装置の後継機に、新たにJVMやフレームワークを実装する場合などに、既存の装置で利用していたネイティブアプリケーションの資産を活用したい場合や、特定の機能については、ネイティブアプリケーションで装置に実装することが、ピュアなJavaプログラムで実装するよりも機能や性能やコストの面で好ましい場合などである。
【0010】
しかしながら、前記OSGI Service Platformの技術では、フレームワークにおいて、このようなネイティブアプリケーションのインストール、アップデート、アンインストール、スタート、ストップといったLife Cycle Managementを始めとする各種管理、制御を行うことができない。
【0011】
そして、このために、ネイティブアプリケーションとフレームワークの双方を実装した場合に、フレームワークを利用した、バンドルとネイティブアプリケーションとの一元的な管理、制御を行うことができないという問題が生じる。
そこで、本発明は、ネイティブオペレーティングシステム上で稼働する仮想システムによって、仮想システム上で実行されるアプリケーションと同様に、ネイティブオペレーティングシステム上で直接実行されるネイティブアプリケーションの管理、制御を可能とすることを課題とする。
【0012】
【課題を解決するための手段】
前記課題達成のために、本発明は、ネイティブオペレーティングシステムと、前記ネイティブオペレーティングシステム上で稼働する仮想システムとを備え、前記仮想システムにおいて、前記仮想システム上のアプリケーションの単位であるバンドルのライフタイムのマネージメントを行うと共に、前記バンドルに前記ネイティブオペレーティングシステム上で前記仮想システムを介さずに実行されるライブラリとの間のインタフェースを提供するコンピュータシステムにおいて、前記ネイティブオペレーティングシステム上で前記仮想システムを介さずに実行されるネイティブアプリケーションのライフタイムを、仮想システムにおいてマネージメントする方法として、仮想システム上で実行されるプログラムである仮想システム上プログラムと、前記ネイティブアプリケーションと、前記ライブラリとを含むバンドルを、前記仮想システムが、当該仮想システム上にインストールするステップと、前記バンドルを起動/終了する際に、当該仮想システムが前記仮想システム上プログラムにバンドルの起動/終了を要求するステップと、バンドルの起動/終了を要求された前記仮想システム上プログラムが、前記ライブラリに前記ネイティブアプリケーションの起動/終了を要求するステップと、前記ネイティブアプリケーションの起動を要求された前記ライブラリが、前記ネイティブアプリケーションを起動/終了するステップとを有することを特徴とする仮想システムにおけるネイティブアプリケーションのライフタイムマネージメント方法を提供する。
【0013】
ここで、このようなライフタイムマネージメント方法は、前記ライブラリに、前記ネイティブアプリケーションを起動するライブラリ関数と、前記ネイティブアプリケーションを終了するライブラリ関数とを含め、前記仮想システム上プログラムに、前記ライブラリのネイティブアプリケーションを起動するライブラリ関数を呼び出す処理が規定された、前記バンドルのスタート時に呼び出されるメソッドと、前記ライブラリのネイティブアプリケーションを終了するライブラリ関数を呼び出す処理が規定された、前記バンドルのストップ時に呼び出されるメソッドとを含めることなどにより実現できる。
【0014】
より具体的には、前記コンピュータプログラムは、OSGI Service Platform Specificationに規定されたバンドル(Bundle)であってよく、この場合には、当該バンドルに、Bundle Activatorとして機能するクラスと、前記コンピュータシステムのネイティブオペレーティングシステム上でJava仮想マシンを介さずに実行されるライブラリと、前記ネイティブオペレーティングシステム上でJava仮想マシンを介さずに実行されるネイティブアプリケーションとを含め、前記ライブラリに、前記ネイティブアプリケーションを起動するライブラリ関数と、前記ネイティブアプリケーションを終了するライブラリ関数とを含め、前記クラスに、前記ライブラリのネイティブアプリケーションを起動するライブラリ関数を呼び出す処理が規定された、前記バンドルのスタート時に呼び出されるメソッドと、前記ライブラリのネイティブアプリケーションを終了するライブラリ関数を呼び出す処理が規定された、前記バンドルのストップ時に呼び出されるメソッドとを含めるようにすればよい。
【0015】
これらのライフタイムマネージメント方法やコンピュータプログラムによれば、バンドルにネイティブアプリケーションを含めたので、仮想システムが行うバンドルのインストールやアップデートやアンインストールに関するライフタイムマネージメントによって、ネイティブアプリケーションについても、そのインストールやアップデートやアンインストールのライフタイムマネージメントを行うことができる。
【0016】
また、バンドルのスタート時にライブラリを介してネイティブアプリケーションを起動し、バンドルの終了時にライブラリを介してネイティブアプリケーションの終了を行うようにしたので、仮想システムが行うバンドルのスタートやストップに関するライフタイムマネージメントによって、ネイティブアプリケーションの起動や終了についても、その起動、終了のライフタイムマネージメントを行うことができる。
【0017】
なお、仮想システムによってネイティブアプリケーションのインストールやアンインストールやアップデートを管理等する必要がない場合には、前記ネイティブアプリケーションは前記バンドルに含めずに、バンドルとは別に別途ネイティブオペレーティングシステム上にインストールするようにしても良い。
【0018】
【発明の実施の形態】
以下、一例として、本発明の実施形態を車載の情報システムへの適用を例にとり説明する。
図1に、本実施形態に係るサービスシステムの構成を示す。
図示するように、サービスシステムは、各々の自動車に搭載された情報システム1と、サービスプロバイダシステム2と、情報システム1とサービスプロバイダシステム2を接続する無線WAN3を備えている。
図2に、情報システム1の機能構成を示す。
図示するように、情報システム1は、無線WAN3と車内LAN12に接続したサービスゲートウエイ装置11と、車内LAN12に接続したデバイス13とを有している。デバイス13は、たとえば、AV機器やエアコンディショナなどの電子機器などであり、これらは車内LAN12を介してサービスゲートウエイ装置11によって制御される。ただし、サービスゲートウエイ装置11は、たとえば、ナビゲーション装置などの、それ自身がデバイス13としてサービスを直接ユーザに提供する装置であってもよい。
【0019】
次に、サービスゲートウエイ装置11は、ハードウエア的には、CPUや主記憶や外部記憶装置や無線WAN3と通信を行うための無線通信装置や車内LAN12と通信を行うための通信インタフェース装置などを備えた一般的な電子計算機である。
【0020】
また、サービスゲートウエイ装置11は、機能的には、以上のようなハードウエア111、個々のハードウエア111を制御するドライバ112を実装したネイティブオペレーティングシステム113、ネイティブオペレーティングシステム113上で稼働するJVM(Java Virtual Machine)114、JVM114上に実装されたOSGI Service Platformに従ったフレームワーク115、そして、フレームワーク115やJVM114やネイティブオペレーティングシステム113の機能を利用し、サービスを提供するOSGI Service Platform Specificationに言うバンドル(Bundle)116とを有する。
【0021】
次に、本実施形態で用いるバンドル116の構成を図2に示す。
図示するように、バンドル116は、マニフェストファイルMANIFEST.MFと、JavaクラスファイルNewBundleActivator.classと、ネイティブコードライブラリCreateProcess.dllと、ネイティブアプリケーションNativeApplication.exeとを含む。ただし、ここでは、ネイティブオペレーティングシステム113が、32ビットWindows系オペレーティングシステムである場合を例にとり説明する。
【0022】
JavaクラスファイルNewBundleActivator.classは、フレームワーク115からバンドル116のスタート時に呼び出されるStart()メソッドと、フレームワーク115からバンドル116のスタート時に呼び出されるStop()メソッドを含んだ、Bundle Activatorのクラスである。
【0023】
また、ネイティブコードライブラリCreateProcess.dllは、ネイティブオペレーティングシステム113上で実行されるDLL(Dynamic Link Library)でありネイティブアプリケーションNativeApplication.exeを起動するライブラリ関数StartAP()と、ネイティブアプリケーションNativeApplication.exeを終了させるライブラリ関数StopAP()を含んでいる。
【0024】
また、ネイティブアプリケーションNativeApplication.exeは、ネイティブオペレーティングシステム113上で実行される実行形式のアプリケーションファイルである。
そして、マニフェストファイルMANIFEST.MFは、バンドル116の各種パラメータを記述したファイルであり、バンドル116の名前やバージョンやベンダーや著作権表示やカテゴリやアップデートの提供元URLなどのバンドル116の管理情報の記述を含む他、Bundle Activatorとなるバンドル116内のクラスの指定や、バンドル116がJavaライブラリとして使用するバンドル116内のパッケージのパスの指定や、バンドル116がフレームワーク115にエクスポートするバンドル116内のパッケージの記述や、バンドル116がフレームワーク115からインポートするパッケージの記述や、バンドル116が必要とするネーティブコードライブラリの指定などのDependencyの記述などが含まれる。
【0025】
なお、バンドル116からフレームワーク115にエクスポートされたパッケージは、他のバンドル116がインポートして利用することができる。
なお、サービスゲートウエイ装置11では、以上に示した構成を有するバンドル116の他、マニフェストファイルと、Javaクラスファイルやパッケージ化されたJavaライブラリやネイティブコードライブラリやその他のデータを選択的に含むことのできるリソースとよりなる、OSGI Service Platform Specification標準の構成を有するバンドル116も用いられる。
【0026】
以下、図3に示した構成を有するバンドル116の動作について説明する。
図4aに示すように、フレームワーク115は、フレームワーク115がAPIとして提供するインストールInstall()やアップデートUpdate()やアンインストールUninstall()メソッドがバンドル116等より呼び出されると、呼び出し元から指定されたバンドル116のインストールやアップデートやアンインストールを行う。また、インストールやアップデートの際には、マニフェストファイルに記述されたDependencyが満たされている状態にあるかかどうかをチェックするResolveなども行う。
【0027】
さて、このようなバンドル116のインストールやアップデートやアンインストールは、たとえば、フレームワーク115上で稼働するリモートマネージメントエージェントとして機能するバンドル116を設け、図1に示すサービスプロバイダシステム2が無線WAN3を介してリモートマネージメントエージェントと通信を行い、リモートマネージメントエージェントに、所望のバンドル116のインストールやアップデートやアンインストールを、フレームワーク115に、前述のインストールInstall()やアップデートUpdate()やアンインストールUninstall()メソッドの呼び出しによって要求させることにより行うことができる。
【0028】
ここで、このようなバンドル116のインストールやアップデートやアンインストールは、バンドル単位に行われる。したがって、図3に示した構成を有するバンドル116によれば、ネイティブアプリケーションのインストールやアップデートやアンインストールを、OSGI Service Platform規格標準の構成を有するバンドル116と全く同様に行うことができる。
【0029】
次に、図4bに示すように、フレームワーク115は、フレームワーク115がAPIとして提供するStart(BundleContext)メソッドが呼び出されると、指定されたバンドル116のBundle ActivatorであるクラスNewBundleActivator.classのStart()メソッドを呼び出す。Start()メソッドにはネイティブコードライブラリCreateProcess.dllのライブラリ関数StartAP()を呼び出す処理が定義されており、呼び出されたStart()メソッドはこの定義に従い、ネイティブコードライブラリCreateProcess.dllのライブラリ関数StartAP()を呼び出す。ここで、この呼び出しは、JVM114のJNI(Java Native Interface)を用いて行われる。
【0030】
次に、ネイティブコードライブラリCreateProcess.dllのライブラリ関数StartAP()には、ネイティブオペレーティングシステム113のAPIであるCreateProcess()などを利用してネイティブアプリケーションNativeApplication.exeのネイティブオペレーティングシステム113上のプロセスを起動する処理が記述されており、呼び出されたライブラリ関数StartAP()は、この定義に従いネイティブアプリケーションNativeApplication.exeのネイティブオペレーティングシステム113上のプロセスを起動する。
【0031】
次に、フレームワーク115は、フレームワーク115がAPIとして提供するStop(BundleContext)メソッドが呼び出されると、指定されたバンドル116のBundle ActivatorであるクラスNewBundleActivator.classのStop()メソッドを呼び出す。Stop()メソッドにはネイティブコードライブラリCreateProcess.dllのライブラリ関数StopAP()を呼び出す処理が定義されており、呼び出されたStop()メソッドはこの定義に従い、ネイティブコードライブラリCreateProcess.dllのライブラリ関数StopAP()を呼び出す。ここで、この呼び出しは、JVM114のJNIを用いて行われる。
【0032】
次に、ネイティブコードライブラリCreateProcess.dllのライブラリ関数StopAP()には、ネイティブオペレーティングシステム113のAPIであるExitProcess()などを利用してネイティブアプリケーションNativeApplication.exeのネイティブオペレーティングシステム113上のプロセスを終了する処理が記述されており、呼び出されたライブラリ関数StartAP()は、この定義に従いネイティブアプリケーションNativeApplication.exeのネイティブオペレーティングシステム113上のプロセスを終了する。
【0033】
このように、図3に示した構成を有するバンドル116によれば、Bundle ActivatorであるクラスのStart()、Stopメソッドの呼び出しにより行われるOSGI Service Platform Specification標準の構成を有するバンドル116の起動、終了の制御によって、ネイティブアプリケーションの起動や終了を制御することができる。
【0034】
したがって、以上示した本実施形態によれば、ネイティブアプリケーションのインストール、アップデート、アンインストール、スタート、ストップといったLife Cycle Managementを、フレームワーク115のバンドル116のLife Cycle Managementによって行うことができる。
【0035】
【発明の効果】
以上のように、本発明によれば、ネイティブオペレーティングシステム上で稼働する仮想システムによって、仮想システム上で実行されるアプリケーションと同様に、ネイティブオペレーティングシステム上で直接実行されるネイティブアプリケーションの管理、制御を行うことができる。
【図面の簡単な説明】
【図1】本発明の実施形態に係るサービスシステムの構成を示すブロック図である。
【図2】本発明の実施形態に係るサービスゲートウエイ装置の構成を示すブロック図である。
【図3】本発明の実施形態に係るバンドルの構成を示す図である。
【図4】本発明の実施形態に係るバンドルの動作を示す図である。
【符号の説明】
1…情報システム、2…サービスプロバイダシステム、3…無線WAN、11…サービスゲートウエイ装置、12…車内LAN、13…デバイス、111…ハードウエア、112…ドライバ、113…ネイティブオペレーティングシステム、114…JVM、115…フレームワーク、116…バンドル。
【発明の属する技術分野】
本発明は、ネイティブオペレーティングシステム上で稼働する仮想システムを利用して、様々なサービスの配信と実行の環境を提供する技術に関するものである。
【0002】
【従来の技術】
ネイティブオペレーティングシステム上で稼働する仮想システムを利用して、様々なサービスの配信と実行の環境を提供する技術としては、OSGI Service Platformと呼ばれる技術が知られている。
OSGI Service Platformは、WANからLANやデバイスに様々なサービスを配信する標準規格の策定を目的として設立されたOpen Services Gateway Initiative(OSGI)が提唱する規格である。この規格では、Javaバーチャルマシン(JVM)上に、様々なサービスの配信と実行の環境を提供するフレームワークを実装することにより、ネイティブオペレーティングシステムなどのプラットホームに依存しない、様々なサービスの配信と実行の環境を提供を実現している(「JAVA」は登録商標である)。
【0003】
このOSGI Service Platformでは、サービスを提供するアプリケーション等はバンドルと呼ばれ、このようなバンドルのインストール、アップデート、アンインストール、スタート、ストップを管理、制御する、Life Cycle Managementとして総称される機能を、フレームワークは備えている。
【0004】
ここで、バンドルには、クラスやパッケージ等のJavaプログラムの他、32ビットWindows系オペレーティングシステムにおけるDLLやUNIX系オペレーティングシステムにおけるShared Libraryなどの、ネイティブオペレーティングシステム上で直接実行されるライブラリをNative Codeとして含めることができる。そして、JVMは、このようなDLLやShared Libraryなどのネイティブオペレーティングシステム上で直接実行されるライブラリを、Javaプログラムから利用することを可能とする、Java Native Interface (JNI)と呼ばれるAPIを、Javaプログラムに提供する(「Windows」、「UNIX」は登録商標である)。
【0005】
また、OSGI Service Platformに関するものではなないが、ネイティブオペレーティングシステム上で直接実行されるネイティブアプリケーションとJavaアプリケーションとを、ソケット通信を介して協調動作させる技術も知られている(たとえば、特開2001?208547号公報)。
【0006】
この出願の発明に関連する先行技術文献情報としては以下のものがある。
【0007】
【特許文献1】
特開2002?245762号公報
【0008】
【非特許文献1】
http://www.osgi.org/resources/sp−r3/r3.book.pdf
「OSGi Service Platform, Release 3」
【0009】
【発明が解決しようとする課題】
ここで、前記OSGI Service Platformのフレームワークを実装する装置によっては、装置上で、ネイティブオペレーティングシステム上で直接実行されるネイティブアプリケーションを利用しなければならない、または、利用することが好ましい場合がある。たとえば、既存の装置の後継機に、新たにJVMやフレームワークを実装する場合などに、既存の装置で利用していたネイティブアプリケーションの資産を活用したい場合や、特定の機能については、ネイティブアプリケーションで装置に実装することが、ピュアなJavaプログラムで実装するよりも機能や性能やコストの面で好ましい場合などである。
【0010】
しかしながら、前記OSGI Service Platformの技術では、フレームワークにおいて、このようなネイティブアプリケーションのインストール、アップデート、アンインストール、スタート、ストップといったLife Cycle Managementを始めとする各種管理、制御を行うことができない。
【0011】
そして、このために、ネイティブアプリケーションとフレームワークの双方を実装した場合に、フレームワークを利用した、バンドルとネイティブアプリケーションとの一元的な管理、制御を行うことができないという問題が生じる。
そこで、本発明は、ネイティブオペレーティングシステム上で稼働する仮想システムによって、仮想システム上で実行されるアプリケーションと同様に、ネイティブオペレーティングシステム上で直接実行されるネイティブアプリケーションの管理、制御を可能とすることを課題とする。
【0012】
【課題を解決するための手段】
前記課題達成のために、本発明は、ネイティブオペレーティングシステムと、前記ネイティブオペレーティングシステム上で稼働する仮想システムとを備え、前記仮想システムにおいて、前記仮想システム上のアプリケーションの単位であるバンドルのライフタイムのマネージメントを行うと共に、前記バンドルに前記ネイティブオペレーティングシステム上で前記仮想システムを介さずに実行されるライブラリとの間のインタフェースを提供するコンピュータシステムにおいて、前記ネイティブオペレーティングシステム上で前記仮想システムを介さずに実行されるネイティブアプリケーションのライフタイムを、仮想システムにおいてマネージメントする方法として、仮想システム上で実行されるプログラムである仮想システム上プログラムと、前記ネイティブアプリケーションと、前記ライブラリとを含むバンドルを、前記仮想システムが、当該仮想システム上にインストールするステップと、前記バンドルを起動/終了する際に、当該仮想システムが前記仮想システム上プログラムにバンドルの起動/終了を要求するステップと、バンドルの起動/終了を要求された前記仮想システム上プログラムが、前記ライブラリに前記ネイティブアプリケーションの起動/終了を要求するステップと、前記ネイティブアプリケーションの起動を要求された前記ライブラリが、前記ネイティブアプリケーションを起動/終了するステップとを有することを特徴とする仮想システムにおけるネイティブアプリケーションのライフタイムマネージメント方法を提供する。
【0013】
ここで、このようなライフタイムマネージメント方法は、前記ライブラリに、前記ネイティブアプリケーションを起動するライブラリ関数と、前記ネイティブアプリケーションを終了するライブラリ関数とを含め、前記仮想システム上プログラムに、前記ライブラリのネイティブアプリケーションを起動するライブラリ関数を呼び出す処理が規定された、前記バンドルのスタート時に呼び出されるメソッドと、前記ライブラリのネイティブアプリケーションを終了するライブラリ関数を呼び出す処理が規定された、前記バンドルのストップ時に呼び出されるメソッドとを含めることなどにより実現できる。
【0014】
より具体的には、前記コンピュータプログラムは、OSGI Service Platform Specificationに規定されたバンドル(Bundle)であってよく、この場合には、当該バンドルに、Bundle Activatorとして機能するクラスと、前記コンピュータシステムのネイティブオペレーティングシステム上でJava仮想マシンを介さずに実行されるライブラリと、前記ネイティブオペレーティングシステム上でJava仮想マシンを介さずに実行されるネイティブアプリケーションとを含め、前記ライブラリに、前記ネイティブアプリケーションを起動するライブラリ関数と、前記ネイティブアプリケーションを終了するライブラリ関数とを含め、前記クラスに、前記ライブラリのネイティブアプリケーションを起動するライブラリ関数を呼び出す処理が規定された、前記バンドルのスタート時に呼び出されるメソッドと、前記ライブラリのネイティブアプリケーションを終了するライブラリ関数を呼び出す処理が規定された、前記バンドルのストップ時に呼び出されるメソッドとを含めるようにすればよい。
【0015】
これらのライフタイムマネージメント方法やコンピュータプログラムによれば、バンドルにネイティブアプリケーションを含めたので、仮想システムが行うバンドルのインストールやアップデートやアンインストールに関するライフタイムマネージメントによって、ネイティブアプリケーションについても、そのインストールやアップデートやアンインストールのライフタイムマネージメントを行うことができる。
【0016】
また、バンドルのスタート時にライブラリを介してネイティブアプリケーションを起動し、バンドルの終了時にライブラリを介してネイティブアプリケーションの終了を行うようにしたので、仮想システムが行うバンドルのスタートやストップに関するライフタイムマネージメントによって、ネイティブアプリケーションの起動や終了についても、その起動、終了のライフタイムマネージメントを行うことができる。
【0017】
なお、仮想システムによってネイティブアプリケーションのインストールやアンインストールやアップデートを管理等する必要がない場合には、前記ネイティブアプリケーションは前記バンドルに含めずに、バンドルとは別に別途ネイティブオペレーティングシステム上にインストールするようにしても良い。
【0018】
【発明の実施の形態】
以下、一例として、本発明の実施形態を車載の情報システムへの適用を例にとり説明する。
図1に、本実施形態に係るサービスシステムの構成を示す。
図示するように、サービスシステムは、各々の自動車に搭載された情報システム1と、サービスプロバイダシステム2と、情報システム1とサービスプロバイダシステム2を接続する無線WAN3を備えている。
図2に、情報システム1の機能構成を示す。
図示するように、情報システム1は、無線WAN3と車内LAN12に接続したサービスゲートウエイ装置11と、車内LAN12に接続したデバイス13とを有している。デバイス13は、たとえば、AV機器やエアコンディショナなどの電子機器などであり、これらは車内LAN12を介してサービスゲートウエイ装置11によって制御される。ただし、サービスゲートウエイ装置11は、たとえば、ナビゲーション装置などの、それ自身がデバイス13としてサービスを直接ユーザに提供する装置であってもよい。
【0019】
次に、サービスゲートウエイ装置11は、ハードウエア的には、CPUや主記憶や外部記憶装置や無線WAN3と通信を行うための無線通信装置や車内LAN12と通信を行うための通信インタフェース装置などを備えた一般的な電子計算機である。
【0020】
また、サービスゲートウエイ装置11は、機能的には、以上のようなハードウエア111、個々のハードウエア111を制御するドライバ112を実装したネイティブオペレーティングシステム113、ネイティブオペレーティングシステム113上で稼働するJVM(Java Virtual Machine)114、JVM114上に実装されたOSGI Service Platformに従ったフレームワーク115、そして、フレームワーク115やJVM114やネイティブオペレーティングシステム113の機能を利用し、サービスを提供するOSGI Service Platform Specificationに言うバンドル(Bundle)116とを有する。
【0021】
次に、本実施形態で用いるバンドル116の構成を図2に示す。
図示するように、バンドル116は、マニフェストファイルMANIFEST.MFと、JavaクラスファイルNewBundleActivator.classと、ネイティブコードライブラリCreateProcess.dllと、ネイティブアプリケーションNativeApplication.exeとを含む。ただし、ここでは、ネイティブオペレーティングシステム113が、32ビットWindows系オペレーティングシステムである場合を例にとり説明する。
【0022】
JavaクラスファイルNewBundleActivator.classは、フレームワーク115からバンドル116のスタート時に呼び出されるStart()メソッドと、フレームワーク115からバンドル116のスタート時に呼び出されるStop()メソッドを含んだ、Bundle Activatorのクラスである。
【0023】
また、ネイティブコードライブラリCreateProcess.dllは、ネイティブオペレーティングシステム113上で実行されるDLL(Dynamic Link Library)でありネイティブアプリケーションNativeApplication.exeを起動するライブラリ関数StartAP()と、ネイティブアプリケーションNativeApplication.exeを終了させるライブラリ関数StopAP()を含んでいる。
【0024】
また、ネイティブアプリケーションNativeApplication.exeは、ネイティブオペレーティングシステム113上で実行される実行形式のアプリケーションファイルである。
そして、マニフェストファイルMANIFEST.MFは、バンドル116の各種パラメータを記述したファイルであり、バンドル116の名前やバージョンやベンダーや著作権表示やカテゴリやアップデートの提供元URLなどのバンドル116の管理情報の記述を含む他、Bundle Activatorとなるバンドル116内のクラスの指定や、バンドル116がJavaライブラリとして使用するバンドル116内のパッケージのパスの指定や、バンドル116がフレームワーク115にエクスポートするバンドル116内のパッケージの記述や、バンドル116がフレームワーク115からインポートするパッケージの記述や、バンドル116が必要とするネーティブコードライブラリの指定などのDependencyの記述などが含まれる。
【0025】
なお、バンドル116からフレームワーク115にエクスポートされたパッケージは、他のバンドル116がインポートして利用することができる。
なお、サービスゲートウエイ装置11では、以上に示した構成を有するバンドル116の他、マニフェストファイルと、Javaクラスファイルやパッケージ化されたJavaライブラリやネイティブコードライブラリやその他のデータを選択的に含むことのできるリソースとよりなる、OSGI Service Platform Specification標準の構成を有するバンドル116も用いられる。
【0026】
以下、図3に示した構成を有するバンドル116の動作について説明する。
図4aに示すように、フレームワーク115は、フレームワーク115がAPIとして提供するインストールInstall()やアップデートUpdate()やアンインストールUninstall()メソッドがバンドル116等より呼び出されると、呼び出し元から指定されたバンドル116のインストールやアップデートやアンインストールを行う。また、インストールやアップデートの際には、マニフェストファイルに記述されたDependencyが満たされている状態にあるかかどうかをチェックするResolveなども行う。
【0027】
さて、このようなバンドル116のインストールやアップデートやアンインストールは、たとえば、フレームワーク115上で稼働するリモートマネージメントエージェントとして機能するバンドル116を設け、図1に示すサービスプロバイダシステム2が無線WAN3を介してリモートマネージメントエージェントと通信を行い、リモートマネージメントエージェントに、所望のバンドル116のインストールやアップデートやアンインストールを、フレームワーク115に、前述のインストールInstall()やアップデートUpdate()やアンインストールUninstall()メソッドの呼び出しによって要求させることにより行うことができる。
【0028】
ここで、このようなバンドル116のインストールやアップデートやアンインストールは、バンドル単位に行われる。したがって、図3に示した構成を有するバンドル116によれば、ネイティブアプリケーションのインストールやアップデートやアンインストールを、OSGI Service Platform規格標準の構成を有するバンドル116と全く同様に行うことができる。
【0029】
次に、図4bに示すように、フレームワーク115は、フレームワーク115がAPIとして提供するStart(BundleContext)メソッドが呼び出されると、指定されたバンドル116のBundle ActivatorであるクラスNewBundleActivator.classのStart()メソッドを呼び出す。Start()メソッドにはネイティブコードライブラリCreateProcess.dllのライブラリ関数StartAP()を呼び出す処理が定義されており、呼び出されたStart()メソッドはこの定義に従い、ネイティブコードライブラリCreateProcess.dllのライブラリ関数StartAP()を呼び出す。ここで、この呼び出しは、JVM114のJNI(Java Native Interface)を用いて行われる。
【0030】
次に、ネイティブコードライブラリCreateProcess.dllのライブラリ関数StartAP()には、ネイティブオペレーティングシステム113のAPIであるCreateProcess()などを利用してネイティブアプリケーションNativeApplication.exeのネイティブオペレーティングシステム113上のプロセスを起動する処理が記述されており、呼び出されたライブラリ関数StartAP()は、この定義に従いネイティブアプリケーションNativeApplication.exeのネイティブオペレーティングシステム113上のプロセスを起動する。
【0031】
次に、フレームワーク115は、フレームワーク115がAPIとして提供するStop(BundleContext)メソッドが呼び出されると、指定されたバンドル116のBundle ActivatorであるクラスNewBundleActivator.classのStop()メソッドを呼び出す。Stop()メソッドにはネイティブコードライブラリCreateProcess.dllのライブラリ関数StopAP()を呼び出す処理が定義されており、呼び出されたStop()メソッドはこの定義に従い、ネイティブコードライブラリCreateProcess.dllのライブラリ関数StopAP()を呼び出す。ここで、この呼び出しは、JVM114のJNIを用いて行われる。
【0032】
次に、ネイティブコードライブラリCreateProcess.dllのライブラリ関数StopAP()には、ネイティブオペレーティングシステム113のAPIであるExitProcess()などを利用してネイティブアプリケーションNativeApplication.exeのネイティブオペレーティングシステム113上のプロセスを終了する処理が記述されており、呼び出されたライブラリ関数StartAP()は、この定義に従いネイティブアプリケーションNativeApplication.exeのネイティブオペレーティングシステム113上のプロセスを終了する。
【0033】
このように、図3に示した構成を有するバンドル116によれば、Bundle ActivatorであるクラスのStart()、Stopメソッドの呼び出しにより行われるOSGI Service Platform Specification標準の構成を有するバンドル116の起動、終了の制御によって、ネイティブアプリケーションの起動や終了を制御することができる。
【0034】
したがって、以上示した本実施形態によれば、ネイティブアプリケーションのインストール、アップデート、アンインストール、スタート、ストップといったLife Cycle Managementを、フレームワーク115のバンドル116のLife Cycle Managementによって行うことができる。
【0035】
【発明の効果】
以上のように、本発明によれば、ネイティブオペレーティングシステム上で稼働する仮想システムによって、仮想システム上で実行されるアプリケーションと同様に、ネイティブオペレーティングシステム上で直接実行されるネイティブアプリケーションの管理、制御を行うことができる。
【図面の簡単な説明】
【図1】本発明の実施形態に係るサービスシステムの構成を示すブロック図である。
【図2】本発明の実施形態に係るサービスゲートウエイ装置の構成を示すブロック図である。
【図3】本発明の実施形態に係るバンドルの構成を示す図である。
【図4】本発明の実施形態に係るバンドルの動作を示す図である。
【符号の説明】
1…情報システム、2…サービスプロバイダシステム、3…無線WAN、11…サービスゲートウエイ装置、12…車内LAN、13…デバイス、111…ハードウエア、112…ドライバ、113…ネイティブオペレーティングシステム、114…JVM、115…フレームワーク、116…バンドル。
Claims (4)
- ネイティブオペレーティングシステムと、前記ネイティブオペレーティングシステム上で稼働する仮想システムとを備え、前記仮想システムにおいて、前記仮想システム上のアプリケーションの単位であるバンドルのライフタイムのマネージメントを行うと共に、前記バンドルに前記ネイティブオペレーティングシステム上で前記仮想システムを介さずに実行されるライブラリとの間のインタフェースを提供するコンピュータシステムにおいて、前記ネイティブオペレーティングシステム上で前記仮想システムを介さずに実行されるネイティブアプリケーションのライフタイムを、仮想システムにおいてマネージメントする方法であって、
仮想システム上で実行されるプログラムである仮想システム上プログラムと、前記ライブラリとを含むバンドルを、前記仮想システムが、当該仮想システム上にインストールするステップと、
前記バンドルを起動/終了する際に、前記仮想システムが前記仮想システム上プログラムにバンドルの起動/終了を要求するステップと、
バンドルの起動/終了を要求された前記仮想システム上プログラムが、前記ライブラリに前記ネイティブアプリケーションの起動/終了を要求するステップと、
前記ネイティブアプリケーションの起動を要求された前記ライブラリが、前記ネイティブアプリケーションを起動/終了するステップとを有することを特徴とする仮想システムにおけるネイティブアプリケーションのライフタイムマネージメント方法。 - 請求項1記載の仮想システムにおけるネイティブアプリケーションのライフタイムマネージメント方法であって、
前記バンドルは、前記ネイティブアプリケーションを含むことを特徴とする仮想システムにおけるネイティブアプリケーションのライフタイムマネージメント方法。 - ネイティブオペレーティングシステムと、前記ネイティブオペレーティングシステム上で稼働する仮想システムとを備え、前記仮想システムにおいて、前記仮想システム上のアプリケーションの単位であるバンドルのライフタイムのマネージメントを行うと共に、前記バンドルに前記ネイティブオペレーティングシステム上で前記仮想システムを介さずに実行されるライブラリとの間のインタフェースを提供するコンピュータシステムによって読みとられ実行されるコンピュータプログラムであって、
当該コンピュータプログラムは前記バンドルであって、
当該バンドルは、仮想システム上で実行されるプログラムである仮想システム上プログラムと、前記ライブラリと、前記ネイティブオペレーティングシステム上で前記仮想システムを介さずに実行されるネイティブアプリケーションとを含み、
前記ライブラリは、前記ネイティブアプリケーションを起動するライブラリ関数と、前記ネイティブアプリケーションを終了するライブラリ関数とを含み、
前記仮想システム上プログラムは、前記ライブラリのネイティブアプリケーションを起動するライブラリ関数を呼び出す処理が規定された、前記バンドルのスタート時に呼び出されるメソッドと、前記ライブラリのネイティブアプリケーションを終了するライブラリ関数を呼び出す処理が規定された、前記バンドルのストップ時に呼び出されるメソッドとを含むことを特徴とするコンピュータプログラム。 - コンピュータシステムによって読みとられ実行されるコンピュータプログラムであって、
当該コンピュータプログラムは、OSGI Service Platform Specificationに規定されたバンドル(Bundle)であって、
当該バンドルは、Bundle Activatorとして機能するクラスと、前記コンピュータシステムのネイティブオペレーティングシステム上でJava仮想マシンを介さずに実行されるライブラリと、ネイティブオペレーティングシステム上でJava仮想マシンを介さずに実行されるネイティブアプリケーションとを含み、
前記ライブラリは、前記ネイティブアプリケーションを起動するライブラリ関数と、前記ネイティブアプリケーションを終了するライブラリ関数とを含み、
前記クラスは、前記ライブラリのネイティブアプリケーションを起動するライブラリ関数を呼び出す処理が規定された、前記バンドルのスタート時に呼び出されるメソッドと、前記ライブラリのネイティブアプリケーションを終了するライブラリ関数を呼び出す処理が規定された、前記バンドルのストップ時に呼び出されるメソッドとを含むことを特徴とするコンピュータプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003111043A JP2004318459A (ja) | 2003-04-16 | 2003-04-16 | 仮想システムにおけるネイティブアプリケーションのライフタイムマネージメント方法、及び、コンピュータプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003111043A JP2004318459A (ja) | 2003-04-16 | 2003-04-16 | 仮想システムにおけるネイティブアプリケーションのライフタイムマネージメント方法、及び、コンピュータプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004318459A true JP2004318459A (ja) | 2004-11-11 |
Family
ID=33471703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003111043A Withdrawn JP2004318459A (ja) | 2003-04-16 | 2003-04-16 | 仮想システムにおけるネイティブアプリケーションのライフタイムマネージメント方法、及び、コンピュータプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004318459A (ja) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006163840A (ja) * | 2004-12-07 | 2006-06-22 | Canon Inc | 情報処理装置及びその方法 |
JP2007048270A (ja) * | 2005-07-11 | 2007-02-22 | Ricoh Co Ltd | 画像形成装置、情報処理装置、情報処理方法、情報処理プログラム、及び記録媒体 |
KR100791989B1 (ko) | 2005-04-25 | 2008-01-04 | 노키아 코포레이션 | OSGi 서비스 플랫폼에서 번들 그룹 종료 기능을제공하는 시스템 및 방법 |
JP2009015830A (ja) * | 2007-06-07 | 2009-01-22 | Canon Inc | プログラム起動装置及びプログラム起動方法 |
JP2009294773A (ja) * | 2008-06-03 | 2009-12-17 | Ricoh Co Ltd | 情報処理装置、情報処理方法、情報処理プログラム、記録媒体 |
JP2010066903A (ja) * | 2008-09-09 | 2010-03-25 | Ricoh Co Ltd | 情報処理装置、プログラム登録起動方法、登録起動プログラム |
US8264717B2 (en) | 2005-07-11 | 2012-09-11 | Ricoh Company, Ltd. | Image forming apparatus, information processing apparatus, information processing method, information processing program and storage medium |
RU2485576C1 (ru) * | 2012-02-09 | 2013-06-20 | Государственное казенное образовательное учреждение высшего профессионального образования Академия Федеральной службы охраны Российской Федерации (Академия ФСО России) | Система управления жизненным циклом компьютерных систем на основе интегрированной модели |
US8782634B2 (en) | 2005-05-17 | 2014-07-15 | Canon Kabushiki Kaisha | Installation method and apparatus |
KR20150039344A (ko) * | 2013-10-02 | 2015-04-10 | 에스케이플래닛 주식회사 | 네이티브 앱 실행을 위한 단말장치 및 그 방법 |
-
2003
- 2003-04-16 JP JP2003111043A patent/JP2004318459A/ja not_active Withdrawn
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8418169B2 (en) | 2004-12-07 | 2013-04-09 | Canon Kabushiki Kaisha | Management method for managing software module and information processor |
JP2006163840A (ja) * | 2004-12-07 | 2006-06-22 | Canon Inc | 情報処理装置及びその方法 |
CN100451964C (zh) * | 2004-12-07 | 2009-01-14 | 佳能株式会社 | 管理软件模块的管理方法和信息处理器 |
JP4717426B2 (ja) * | 2004-12-07 | 2011-07-06 | キヤノン株式会社 | 情報処理装置及びその方法 |
KR100791989B1 (ko) | 2005-04-25 | 2008-01-04 | 노키아 코포레이션 | OSGi 서비스 플랫폼에서 번들 그룹 종료 기능을제공하는 시스템 및 방법 |
US8782634B2 (en) | 2005-05-17 | 2014-07-15 | Canon Kabushiki Kaisha | Installation method and apparatus |
JP2007048270A (ja) * | 2005-07-11 | 2007-02-22 | Ricoh Co Ltd | 画像形成装置、情報処理装置、情報処理方法、情報処理プログラム、及び記録媒体 |
US8264717B2 (en) | 2005-07-11 | 2012-09-11 | Ricoh Company, Ltd. | Image forming apparatus, information processing apparatus, information processing method, information processing program and storage medium |
US8767244B2 (en) | 2005-07-11 | 2014-07-01 | Ricoh Company, Ltd. | Image forming apparatus, information processing apparatus, information processing method, information processing program and storage medium |
JP2009015830A (ja) * | 2007-06-07 | 2009-01-22 | Canon Inc | プログラム起動装置及びプログラム起動方法 |
JP2009294773A (ja) * | 2008-06-03 | 2009-12-17 | Ricoh Co Ltd | 情報処理装置、情報処理方法、情報処理プログラム、記録媒体 |
JP2010066903A (ja) * | 2008-09-09 | 2010-03-25 | Ricoh Co Ltd | 情報処理装置、プログラム登録起動方法、登録起動プログラム |
RU2485576C1 (ru) * | 2012-02-09 | 2013-06-20 | Государственное казенное образовательное учреждение высшего профессионального образования Академия Федеральной службы охраны Российской Федерации (Академия ФСО России) | Система управления жизненным циклом компьютерных систем на основе интегрированной модели |
KR20150039344A (ko) * | 2013-10-02 | 2015-04-10 | 에스케이플래닛 주식회사 | 네이티브 앱 실행을 위한 단말장치 및 그 방법 |
KR102181906B1 (ko) | 2013-10-02 | 2020-11-23 | 에스케이플래닛 주식회사 | 네이티브 앱 실행을 위한 단말장치 및 그 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5992095B2 (ja) | ワイヤレスアプリケーションを発行および実行する方法ならびに装置 | |
US8230415B1 (en) | On-demand advertising of software packages | |
US7640542B2 (en) | Managing midlet suites in OSGI environment | |
JP4286798B2 (ja) | ハードドライブにドライバファイルをインストールする方法、コンピュータ及びコンピュータ読取可能な記憶媒体 | |
US7584471B2 (en) | Plug-in model | |
JP2008524686A (ja) | コンピュータ装置においてアプリケーションを保守する方法 | |
EP2838014B1 (en) | Method for distributing, installing and executing software-defined radio application | |
US20080222160A1 (en) | Method and system for providing a program for execution without requiring installation | |
US20100146504A1 (en) | Virtual mobile infrastructure and its base platform | |
US20030182361A1 (en) | Business-model agnostic service deployment management service | |
US20040015960A1 (en) | Method for loading and executing an application in an embedded environment | |
JP2003521036A (ja) | クライアント・コンピュータのブラウザからアプリケーションを受取り、インストールしかつランチするためのブラウザ独立及び自動装置及び方法 | |
WO2006071339A1 (en) | Method and system for providing an open gateway initiative bundle over the air | |
CN110308999B (zh) | 一种应用间动态共享依赖包的方法、存储介质及移动终端 | |
JP2004318459A (ja) | 仮想システムにおけるネイティブアプリケーションのライフタイムマネージメント方法、及び、コンピュータプログラム | |
US20060248508A1 (en) | Method and system for applet extensibility application program interface (API) | |
EP1866758B1 (en) | Method, system and apparatus for launching an interface with an electronic device | |
CN105373406B (zh) | 基于Android平台的应用布局动态切换方法及*** | |
CN103207802B (zh) | 软件操作***及方法 | |
EP2216962B1 (en) | A method for deploying and managing the sip servlet application and the osgi service platform thereof | |
CN113672403A (zh) | 信息***中的接口调用方法及接口调用装置、管理信息*** | |
US20060041665A1 (en) | Network services applications | |
US8631480B2 (en) | Systems and methods for implementing security services | |
JP2001256053A (ja) | ソフトウェアモジュール転送方法、クライアントコンピュータ、及びクライアントサーバコンピュータシステム | |
JP4063573B2 (ja) | デバイスドライバの組み込み・実行方式、組み込み・実行方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060704 |