JP2007206965A - 情報処理装置及び当該装置におけるオブジェクト指向プログラムの実行方法とそのプログラム - Google Patents

情報処理装置及び当該装置におけるオブジェクト指向プログラムの実行方法とそのプログラム Download PDF

Info

Publication number
JP2007206965A
JP2007206965A JP2006024740A JP2006024740A JP2007206965A JP 2007206965 A JP2007206965 A JP 2007206965A JP 2006024740 A JP2006024740 A JP 2006024740A JP 2006024740 A JP2006024740 A JP 2006024740A JP 2007206965 A JP2007206965 A JP 2007206965A
Authority
JP
Japan
Prior art keywords
class
library
condition
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.)
Granted
Application number
JP2006024740A
Other languages
English (en)
Other versions
JP4881023B2 (ja
JP2007206965A5 (ja
Inventor
Koichi Oi
浩一 大井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2006024740A priority Critical patent/JP4881023B2/ja
Priority to US11/627,701 priority patent/US8732723B2/en
Priority to EP07101373.4A priority patent/EP1821206B1/en
Priority to CNB2007100028187A priority patent/CN100543679C/zh
Publication of JP2007206965A publication Critical patent/JP2007206965A/ja
Publication of JP2007206965A5 publication Critical patent/JP2007206965A5/ja
Application granted granted Critical
Publication of JP4881023B2 publication Critical patent/JP4881023B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】 クラスをロードするライブラリを決定する際、アプリケーションに同梱されてきたライブラリよりシステム内部にあるライブラリを優先するため、システムライブラリが更新されると、アプリケーションの安定動作が損なわれる危険性があった。
【解決手段】 アプリケーションの実行時、要求されるクラスをロードする際、その要求されたクラスが所定の条件を満たすかどうかを判定し、所定の条件を満たす場合は、アプリケーションが提供するクラスライブラリ108からのクラスをロードし、それ以外の場合には、装置が記録しているシステムライブラリ104からクラスをロードする。
【選択図】 図1

Description

本発明は、オブジェクト指向言語で作成されたプログラムをロードして実行する情報処理及び当該装置におけるオブジェクト指向プログラムの実行方法とそのプログラムに関するものである。
アプリケーションプログラムを実行する装置において、実行しようとしている機能のプログラムがロードされていない場合、その機能を実装したプログラムを外部からロードし、そのプログラムを実行することによって機能を実現する装置が存在する。
JavaVM(Java Virtual Machine:Java仮想マシン)(Javaは米国Sun Microsystems Inc.の米国及びその他の国における商標又は登録商標である)を備えた装置はその一例である。このJavaVMを備えた装置では、Javaアプリケーションを実行するとき、必要とするクラスを装置内、或は装置外に存在するクラスライブラリからロード(クラスロード)することができる。このJavaVM内の、クラスロードに関わる部分はクラスローダと呼ばれる。クラスローダがどこからクラスをロードするかは、クラスパスの設定及びクラスローダ自体の振る舞いによって決定される。
まず、使用するクラスローダを指定しない時は、JavaVMに内蔵されるシステムクラスローダが使われる。このシステムクラスローダは、クラスパスの設定に従ってクラスをロードする。このクラスパスには、クラスをロードしてくる場所(パス)が1乃至複数個列挙される。これらパスの列挙順位が上位にあるパスから優先してシステムクラスローダはクラスの検索を実行する。また、使用するクラスローダを指定することもでき、その場合は、指定されたクラスローダの定義に従ってクラスの検索及びロードを行う。
クラスローダがクラスをロードする際、ロードしようとしているクラスがJavaVM内或はJavaVMと共に提供されているライブラリ内(以下、Javaシステムと呼ぶ)に存在するかどうかを最初に確認する。そしてもし、そのクラスがJavaシステム内に存在すればそこからロードする。つまり、必要とするクラスがアプリケーションと共に外部にあることが分かっていたとしても、Javaシステム内からのロードを優先する。これは必要な動作である。その理由は、第一に、Javaシステム内のクラスはJava機能の提供を保証しているため、それが保証されていない第三者によって作成されたクラスを使うことはJava機能の互換性を保てない虞がある。第二に、Javaシステム内のクラスは、Javaシステム内のクラスセキュリティが考慮された堅牢なクラスであるのに対し、第三者によって作成されたクラスを使うことは、セキュリティの欠如に繋がる虞がある。
このクラスローディングに係る従来技術として、以下に示す特許文献が挙げられる。
特開平10−91446号公報 特公表2003−504754号公報
しかしながら、上記従来の技術には以下のような課題が存在する。
即ち、アプリケーションと共に提供されてきたクラスライブラリを、ある時点からJavaシステム内に置くようにした場合、上記従来技術を用いると、Javaシステム内に置かれたクラスライブラリの方が使用されるようになる。これにより、これ以降、アプリケーションにクラスライブラリを同梱する必要がなくなる。通常、これは望ましい動作である。しかし、アプリケーションに同梱されたクラスライブラリと、Javaシステム内のクラスライブラリのバージョンが異なる場合は、以下のような問題が生じる。
アプリケーションに同梱されたクラスライブラリは、そのアプリケーションと共に動作することが保証されている。しかし、これと異なるバージョンであるJavaシステム内のクラスライブラリを使用しようとすると、共に動作することが保証されているわけではないので障害が発生する可能性がある。このような事態は、例えば、古いクラスライブラリが同梱された既存のアプリケーションを、新しいクラスライブラリを備えた新しいJavaシステムにインストールする場合に生じる。このような場合、障害が発生しないように、既存のアプリケーションを変更するのは手間である。また、アプリケーションに同梱されたクラスを必ず使うという方法も、セキュリティの観点から望ましくない。
本発明の目的は上記従来技術の問題点を解決することにある。
本願発明の特徴は、要求されるクラスに応じて、アプリケーションが提供するクラス、或は装置が記憶しているクラスを使用できるようにして、オブジェクト指向プログラムのセキュリティの維持及び安定動作を保証する技術を提供することにある。
上記目的を達成するために本発明の一態様に係る情報処理装置は以下のような構成を備える。即ち、
オブジェクト指向プログラムを実行する情報処理装置であって、
ライブラリクラスを蓄積するクラス蓄積手段と、
実行中のアプリケーションで使用されるクラスが、予め定められた条件を満たすか否かを判定する判定手段と、
前記判定手段により前記条件を満たすと判定されると、前記アプリケーションが提供するクラスライブラリから前記使用されるクラスをロードし、前記条件を満たさないと判定した場合には、前記クラス蓄積手段から、対応するクラスをロードするように制御するロード制御手段と、を有することを特徴とする。
上記目的を達成するために本発明の一態様に係る情報処理装置におけるオブジェクト指向プログラムの実行方法は以下のような工程を備える。即ち、
オブジェクト指向プログラムを実行する情報処理装置におけるオブジェクト指向プログラムの実行方法であって、
実行中のアプリケーションで使用されるクラスが、予め定められた条件を満たすか否かを判定する判定工程と、
前記判定工程で前記条件を満たすと判定されると、前記アプリケーションが提供するクラスライブラリから前記使用されるクラスをロードし、前記条件を満たさないと判定した場合には、クラスライブラリを蓄積するシステムライブラリから、対応するクラスをロードするように制御するロード制御工程と、
を有することを特徴とする。
尚、この課題を解決するための手段は、本願発明の特徴の全てを列挙しているものではなく、特許請求の範囲に記載された他の請求項及びそれら特徴群の組み合わせも発明になり得る。
本発明によれば、オブジェクト指向プログラムのアプリケーションの実行時のセキュリティ維持及び、安定動作が保証できる。
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
図1は、本発明の実施の形態に係るJavaプログラム実行システムの構成を示すブロック図である。
同図において、JavaVM101は、インタプリタ102及びクラスローダ103を有している。インタプリタ102は、Javaバイトコード(中間コード)を解釈及び実行する。システムライブラリ104は、JavaVM101と共に提供されるシステムクラスライブラリ(以下、システムライブラリと称す)である。ロード済みクラス105は、メモリにロードされて実行可能状態となっているクラスである。
アプリケーション106は、Java言語で記述されたアプリケーションである。アプリケーションクラス107は、このアプリケーション106の動作のメインとなるクラス(以下、アプリケーションクラスと称す)である。アプリケーションライブラリ108は、アプリケーション106と共に提供されるクラスライブラリ(以下、アプリケーションライブラリと称す)である。インポートライブラリ109は、アプリケーション106の外部に存在するが、アプリケーション106の動作の一部分に使用されるクラスライブラリ(以下、インポートライブラリと称す)を示している。110はJavaVM実行装置である。
図1において、JavaVM101は、インタプリタ102及びクラスローダ103を有している。またアプリケーション106は、アプリケーションクラス107及びアプリケーションライブラリ108を有している。JavaVM実行装置110は、JavaVM101、システムライブラリ104、及びロード済みクラス105を有している。ここでJavaVM101及びアプリケーション106は、同じ装置、つまりJavaVM実行装置110の中に存在してもよい。また、アプリケーション106は外部装置に置かれ、ネットワーク手段を用いてJavaVM101がそれをロードし実行するという形態でもよい。
図2は、本実施の形態に係るJavaVM実行装置110のハードウェア構成を説明するブロック図である。
図において、201は装置全体を制御するための中央処理装置(以下、CPU)である。ROM202は、CPU201により実行される各種動作プログラムやデータを読み取り可能に格納している。RAM203は、プログラム動作中、CPU201が各種データを一時的に保存するためのワークエリアとして使用される。タイマ204は、CPU201の指示に従って各種時間を計測する。表示部205は、ユーザインタフェースを表示するためのディスプレイ(表示部)で、例えば液晶やプラズマ等の表示パネルを有している。キーボード206は、各種操作キーや、マウス等のポインティングデバイスを有し、ユーザの操作によりアプリケーションの実行指示や各種コマンドやデータデータの入力に使用される。FlashROM207は、各種設定データやファイルを不揮発性に保存している。208は、ネットワークを介して外部装置と接続するためのネットワークI/Fである。ハードディスク(以下、HDと称す)209には、OSや各種アプリケーションプログラム等が予めインストールされており、また各種設定データファイルも保存している。
ここでは前述したインタプリタ102、クラスローダ103は、プログラム形態で、例えばROM202に格納されており、CPU201はそれを読み出して実行する。尚、これらはHD209に格納されていても良い。システムライブラリ104は、FlashROM207又はHD209に記憶されている。更に、ロード済みクラス105は、RAM203に記憶されている。またアプリケーション106やインポートライブラリ109は、JavaVM実行装置110と同一装置内に置かれる場合は、FlashROM207或はHD209に記憶される。また他の外部装置内に置かれる場合は、その外部装置の適切な記憶媒体上に置かれる。
以下の説明において、動作の主体となるハードウエアは、殆どの場合、装置を制御するCPU201であるため、例外となる場合を除いて、動作の主体を逐一明示することはしない。
次に、アプリケーション106の実行手順について、図3のフローチャートを用いて説明する。
図3は、本実施の形態に係るJavaVM実行装置110におけるアプリケーションの実行手順を示すフローチャートである。
まずステップS301で、クラスローダ103がアプリケーション106のメインとなるクラス(最初に呼び出すクラス)をアプリケーションクラス107からロードする。こうしてロードしたクラスは、ロード済みクラス105として、RAM203に記憶される。次にステップS302で、ロード済みクラス105となったメインクラスをインタプリタ102が読み出して、これを解釈及び実行する。ここでインタプリタ102は、アプリケーション106が終了するまで、この解釈及び実行処理を実行する。そのためステップS303で、アプリケーション106が終了したかどうかを常に監視する。
ステップS303でアプリケーション106が終了したら、実行手順は終了する。アプリケーション106が終了していない場合はステップS304に進み、インタプリタ102は、次のバイトコードの実行に必要なクラスが、ロード済みクラス105にロードされているかどうかを判断する。ここでロード済みであればステップS302に進み、アプリケーション106の解釈及び実行ステップに戻る。
一方、ステップS304で、必要なクラスがロード済みでなければステップS305に進み、インタプリタ102はそのクラスのロードをクラスローダ103に要求する。これを受けてステップS306で、クラスローダ103は、その要求されたクラスをロードする。このクラスのロード先としてはシステムライブラリ194、アプリケーションライブラリ108、インポートライブラリ109等があり、これらのそれぞれの場合のついては詳しく後述する。こうして、そのクラスのロードが終了した後、ステップS302の解釈実行ステップに戻る。
以下、図3のステップS306で実行されるクラスローダ103によるクラスロード処理の各実施例を説明する。
[実施例1]
図4は、本発明の実施例1に係るステップS306で実行されるクラスのロード処理手順(クラスロード手順1)を説明するフローチャートである。
最初にステップS401で、クラスローダ103は、インタプリタ102より要求されたクラスが、予め定められた条件を満たすかどうかを判断する。この具体的な、第一の判断方法は、クラス名が次の条件を満たしているかどうかを調べることである(Java言語におけるクラス名は、一乃至複数の文字列がピリオドで連結された形式をとる)。
・第一の判断方法の条件
(1)要求されたクラスのクラス名が、予めRAM203等の記憶媒体に記憶された、一乃至複数の文字列に完全に一致する。
(2)要求されたクラスのクラス名の先頭部分が、予め記憶された一乃至複数の文字列に一致する。
(3)要求されたクラスのクラス名の一部が、予め記憶された一乃至複数の文字列を含む。
ここでパッケージ名と比較される一乃至複数の文字列としては、上記条件を満たすことにより、JavaVM実行装置110が動作する上で望ましくなる文字列が選択される。これら条件は、アプリケーションライブラリ108からロードした方が望ましいクラスの名称が満たすべき条件を例示している。従って、これ以降のステップでは、上記条件を満たすクラスについては、アプリケーションライブラリ108からロードを試みる。アプリケーションライブラリ108は、アプリケーション106に同梱されており、通常、既に動作評価が終了している。つまり、安定動作が保証されている。アプリケーションライブラリ108の中に存在するクラスでも、更新された一部のクラスについてはその更新クラスを使用した方がよい場合もあるが、安定動作が保証されたクラスを使用した方がよい場合もある。こうすることにより、ある特定のクラスだけ、アプリケーションライブラリ108からのロードを優先することができる。
上記の3つの条件は、もちろん、いずれを採用してもよく、例えばあるクラスについては条件(1)、他のクラスについては条件(2)というように組み合わせてもよい。
第二の判断方法は、パッケージ名がある条件を満たしているかどうかを調べることである。Java言語におけるパッケージ名とは、クラス名のうち、最後のピリオドより前の部分を指す。例えば、クラス名が「com.xxx.project1.module1.type1.class1」である場合、パッケージ名は「com.xxx.project1.module1.type1」である。クラスに名前を付けるとき、必ずパッケージ名がなければいけないということはないが、クラス名の衝突を防ぐため、つまり名前空間を確保するため、パッケージ名が付けられる。このように一貫した思想の基にパッケージ名を付与することによって、クラスの作成者(企業)やクラスの種別を識別することもできる。
・第二の判断方法の条件
(1)パッケージ名が、予めRAM203等の記憶媒体に記憶された、一乃至複数の文字列に完全に一致する。
(2)パッケージ名の先頭部分が、予め記憶された一乃至複数の文字列に一致する。
(3)パッケージ名の一部が、予め記憶された一乃至複数の文字列を含む。
ここでパッケージ名と比較される一乃至複数の文字列としては、上記条件を満たすことにより、JavaVM実行装置110が動作する上で望ましくなる文字列が選択される。これら条件は、アプリケーションライブラリ108からロードした方が望ましいクラスのパッケージ名称が満たすべき条件を例示している。従ってこれ以降のステップでは、上記条件を満たすクラスについては、アプリケーションライブラリ108からロードを試みる。アプリケーションライブラリ108は、アプリケーション106に同梱されており、通常、既に動作評価が終了している。つまり、安定動作が保証されている。アプリケーションライブラリ108の中に存在するクラスでも、更新された一部のクラスについてはその更新クラスを使用した方がよい場合もあるが、安定動作が保証されたクラスを使用した方がよい場合もある。
一部、注意しなければならないのは、セキュリティ上、アプリケーションライブラリ108からロードすることが望ましくないクラス或はパッケージが存在することである。例えば、Java言語の場合は、javaやjavaxで始まるパッケージはシステムが提供するライブラリであり、セキュリティの根幹をなすものである。それらのパッケージをアプリケーションライブラリ108からロードすることはセキュリティ違反であり、許可されない。そのようなクラス或はパッケージについては、上記条件を設定しても、無効になるようにする。具体的には、それらのパッケージ名をRAM203に設定しようとしても(設定手順は図示せず)、できないようにしておく。
このようにすることによって、許可された、ある特定のパッケージだけ、アプリケーションライブラリ108からのロードを優先することができる。上記の3条件は、もちろん、いずれを採用してもよく、あるパッケージについては条件1、別のパッケージについては条件2というように組み合わせてもよい。またクラス名の条件とパッケージ名の条件を混合して使用することも可である。
こうしてステップS401で、要求されたクラスが所定の条件を満たしていると判断した場合はステップS402に進み、クラスローダ103はそのクラスがアプリケーションライブラリ108に存在するかどうかを調べる。ここでアプリケーションライブラリ108内に存在すればステップS403に進み、クラスローダ103はアプリケーションライブラリ108から、そのクラスをロードする。
一方、ステップS402で、アプリケーションライブラリ108内に存在しなければ、ステップS404に進み、クラスローダ103はそのクラスがインポートライブラリ109内に存在するかどうかを調べる。ここでインポートライブラリ109内に存在していると判定するとステップS405に進み、そこからクラスをロードする。
またステップS404で、インポートライブラリ109内に存在していないと判定した場合、或はステップS401で、その要求されたクラスが所定の条件を満たさなかった場合はステップS406に進む。そして、ステップS406では、クラスローダ103はクラスパスの優先順位に従って、クラスを検索する。そしてステップS407で、最終的にクラスが見つかったかどうかを判断し、クラスが見つかった場合はステップS408に進んで、クラスローダ103は、その見つかったパスからクラスをロードして処理を終了する。一方、ステップS407で、最終的にクラスが見つからなかった場合はステップS409に進み、クラスローダ103はクラスを発見できなかったことを示す例外を発生させて、この処理を終了する。
尚、ここでステップS406〜S409の処理は従来技術と同様である。通常、システムライブラリ104からのロードが、アプリケーションライブラリ108やインポートライブラリ109からのロードより優先される。
以上説明したように実施例1に係るクラスロード手順1によれば、アプリケーションライブラリ108或はインポートライブラリ109にクラスが存在する場合は、システムライブラリ104を探さずに、そのクラスが存在しているアプリケーションライブラリ108或はインポートライブラリ109からクラスをロードする。これにより、既に動作確認されているはずのクラスを優先して使用できるため、安定した動作が期待できる。
[実施例2]
次に本発明の実施例2に係るクラスロード手順2について、図5のフローチャートを用いて説明する。
図5は、実施例2に係る、図3のステップS306で実行されるクラスのロード処理手順(クラスロード手順2)を説明するフローチャートである。尚、この実施例2に係るjavaVM実行装置110の構成及びアプリケーションの実行手順の基本的流れは前述の実施例1(図3)と同様であるものとする。
まずステップS501で、クラスローダ103は、インタプリタ102より要求されたクラスが、予め定められた条件を満たすかどうかを判断する。この判断処理は前述の図4のステップS401の場合と同じであるため、その説明を省略する。
ステップS501で所定の条件を満たしていると判断した場合はステップS502に進み、クラスローダ103は、そのクラスがアプリケーションライブラリ108内に存在するかどうかを調べる。ここでアプリケーションライブラリ108内に存在すればステップS503に進み、クラスローダ103はアプリケーションライブラリ108のバージョン情報を取得する。次にステップS504で、クラスローダ103は、その要求されたクラスがシステムライブラリ104内に存在するかどうかを調べる。存在すればステップS505に進み、クラスローダ103は、そのシステムライブラリ104のバージョン情報を取得する。次にステップS506に進み、クラスローダ103は、ステップS503で取得したアプリケーションライブラリ108のバージョンと、ステップS505で取得したシステムライブラリ104のバージョンとが等しいかどうかを調べる。ここで両者のバージョンが異なると判定するとステップS507に進み、クラスローダ103はアプリケーションライブラリ108からクラスをロードする。一方、ステップS506で、バージョンが等しいと判断するとステップS514に進み、クラスローダ103はシステムライブラリ104からクラスをロードする。
またステップS504で、その要求されたクラスがシステムライブラリ104内に存在しない場合はステップS507に進み、アプリケーションライブラリ108からクラスをロードする。
またステップS502で、そのクラスがアプリケーションライブラリ108内に存在しない場合はステップS508に進み、クラスローダ103は、そのクラスがインポートライブラリ109内に存在するかどうかを調べる。ここでインポートライブラリ109内に存在していると判定するとステップS509に進み、インポートライブラリ109のバージョンを取得してステップS504に進む。この場合はステップS504で、クラスローダ103は、その要求されたクラスがシステムライブラリ104内に存在するかどうかを調べる。存在すればステップS505に進み、クラスローダ103は、そのシステムライブラリ104のバージョン情報を取得する。次にステップS506に進み、クラスローダ103は、ステップS509で取得したインポートライブラリ109のバージョンと、ステップS505で取得したシステムライブラリ104のバージョンとが等しいかどうかを調べる。ここで両者のバージョンが異なると判定するとステップS507に進み、クラスローダ103はインポートライブラリ109からクラスをロードする。一方、ステップS506で、バージョンが等しいと判断するとステップS514に進み、クラスローダ103はシステムライブラリ104からクラスをロードする。
またステップS508で、クラスがインポートライブラリ109内に存在していない場合、或はステップS501で所定の条件を満たさなかった場合はステップS510に進み、クラスローダ103はクラスパスの優先順位に従って、クラスを検索する。そしてステップS511で、最終的にクラスが見つかったかどうかを判断し、クラスが見つかった場合はステップS512に進み、クラスローダ103は、その見つかったパスからクラスをロードする。一方、見つからなかった場合はステップS513に進み、クラスローダ103はクラスを発見できなかったことを示す例外を発生させる(前述の図4のステップS406〜S409と同様)。
尚、このクラスロード手順2の説明では、システムライブラリ104、アプリケーションライブラリ108、及びインポートライブラリ109が、まるで一つずつ提供されており、バージョン情報が各々に一つ付与されているような印象を与えたかもしれない。しかし、各ライブラリは複数のライブラリファイルとして構成することが可能であり、その場合は、探索中のクラスを含むライブラリファイルのバージョン情報を取得すればよい。
Java環境では、ライブラリとしてjarファイル形式を用いるのが一般的である。このjarファイルは、クラスファイルの他に、様々なライブラリ情報を格納したマニフェストファイルを含むことができる。よって、このマニフェストファイルにバージョン情報を記述しておけば、これをライブラリのバージョン情報として利用できる。
また上記説明では、ライブラリのバージョン情報を使用した。しかし、もしクラス毎にバージョン情報が付与されていて、それを取得できるのであれば(これもマニフェストファイルに記述しておくことができる)、クラス毎にライブラリを変えてロードすることも可能である。
以上説明したように実施例2に係るクラスロード手順2によれば、クラスをロードするライブラリのバージョンを比較して、等しい場合にシステムライブラリ104からクラスをロードしている。これによって、クラスのロードに要する時間を短縮できる。特に、アプリケーションライブラリ109がJavaVM実行装置110の外部にある場合は有効である。
また、アプリケーションライブラリ109がJavaVM実行装置110の内部にある場合でも、クラスのロードもしくはクラスの実行が速くなることがある。
その第一の理由は、システム内で共通に利用されるシステムライブラリ104は重要度が高いので、アプリケーションライブラリ109よりもアクセス速度が速い記憶媒体に置かれることが多いためである。
第二の理由は、やはり重要度が高いシステムライブラリ104は、CPU201による実行速度向上を目的に、最適化された中間コード、もしくは、CPU201が直接実行できるネイティブコードに予め変換されている場合があるためである。
[実施例3]
次に、実施例3に係るクラスロード手順3について図6のフローチャートを用いて説明する。
図6は、実施例3に係る、図3のステップS306で実行されるクラスのロード処理手順(クラスロード手順3)を説明するフローチャートである。尚、この実施例3に係るjavaVM実行装置110の構成及びアプリケーションの実行手順の基本的流れは前述の実施例1(図3)と同様であるものとする。
最初にステップS601で、クラスローダ103は、実行中のアプリケーションがクラスロードにおいてクラスパス検索を優先するかどうかを判断する。この判断を行うために、RAM203には、クラスパス検索を優先するかどうかを示すフラグをアプリケーション毎に記憶しているものとする(図示せず)。
ステップS601で、クラスパス検索を優先しないと判定した場合はステップS602に進み、クラスローダ103は、インタプリタ102より要求されたクラスが、予め定められた条件を満たすかどうかを判断する。ここで予め定められた条件(図4のS401の場合と同様)を満たすと判定したときはステップS603に進み、クラスローダ103は、そのクラスがアプリケーションライブラリ108内に存在するかどうかを調べる。ここで存在する場合はステップS604に進み、クラスローダ103はアプリケーションライブラリ108から該クラスをロードする。
一方、ステップS603で、そのクラスがアプリケーションライブラリ108内に存在しないと判定した場合はステップS605に進み、クラスローダ103は、そのクラスがインポートライブラリ109内に存在するかどうかを調べる。ここでインポートライブラリ109内に存在していればステップS606に進み、そこからクラスをロードする。
ステップS605で、インポートライブラリ109内に存在していない場合、或はステップS602で所定の条件を満たさなかった場合、或はステップS601でクラスパス検索を優先すると判断された場合はステップS607に進む。そして、ステップS607では、クラスローダ103はクラスパスの優先順位に従って、クラスを検索する。ここでステップS607〜S610の処理は、前述の図4のステップS406〜S409の処理と同じであるため、その説明を省略する。
以上説明したように本実施例3に係るクラスロード手順3では、あるアプリケーションではクラスパス検索を優先し、他のアプリケーションではアプリケーションライブラリ108からロードすることが可能となる。例えば、あるクラスの新バージョンがシステムライブラリ104の一部として提供されたと仮定する。このとき、あるアプリケーションではシステムライブラリ104内に存在する新バージョンのクラスを用いる。一方、他のアプリケーションでは、アプリケーションライブラリ109内に存在する、安定動作が期待できる旧バージョンのクラスを用いるというように設定できる。このようにJavaVM実行装置110を運用することが可能である。
或は、もう一つの例として、あるアプリケーションはアプリケーションライブラリ108からクラスをロードすると仮定する。そしてバグフィックスの後、新バージョンのクラスをシステムライブラリ104に入れて、そこからロードするように変更する場合を考える。アプリケーション106(及びそれに内包されているアプリケーションライブラリ108)は容易に変更できないが、JavaVM実行装置110内のソフトウエアの入れ替ができる状況では、そのような事態も起こり得る。その場合は、システムライブラリ104を含むソフトウエアの入れ替えを行うと同時に、上記クラスパス検索を優先するかどうかを示すフラグを該アプリケーション106について変更すれば、ユーザが意図するように動作を変更できる。
[実施例4]
次に、クラスロード手順4について、図7のフローチャートを用いて説明する。
図7は、本発明の実施例4に係る、図3のステップS306で実行されるクラスのロード処理手順(クラスロード手順4)を説明するフローチャートである。尚、この実施例4に係るjavaVM実行装置110の構成及びアプリケーションの実行手順の基本的流れは前述の実施例1(図3)と同様であるものとする。
まず最初にステップS701で、クラスローダ103は、インタプリタ102より要求されたクラスが、予め定められた条件を満たすかどうかを判断する。この予め定められた条件とは、前述の図4のS401で説明した条件と同じである。ここで所定の条件を満たしていると判断した場合はステップS702に進み、クラスローダ103は、そのクラスがアプリケーションライブラリ108内に存在するかどうかを調べる。ここで存在すればステップS703に進み、クラスローダ103はアプリケーションライブラリ108のバージョン情報を取得する。次にステップS704に進み、クラスローダ103は、そのクラスがシステムライブラリ104内に存在するかどうかを調べる。存在すればステップS705に進み、クラスローダ103は、システムライブラリ104のバージョン情報を取得する。
次にステップS706で、クラスローダ103は、ステップS703で取得したアプリケーションライブラリ108のバージョンと、システムライブラリ104のバージョンとが等しいか否かを調べる。ここで両者のバージョンが異なる場合はステップS707に進み、クラスローダ103は、新しいバージョンのライブラリからロードすべきかどうかを調べる。これを判断するために、RAM203内に、新しいバージョンのライブラリからロードすべきかどうかを示すフラグ(図示せず)が存在する。このフラグはJavaVM実行装置110内に一つだけ存在してもよいし、アプリケーション毎、またはライブラリ毎に存在してもよい。ステップS707でロードすべきでないと判断した場合はステップS708に進み、クラスローダ103は、アプリケーションライブラリ108からクラスをロードする。一方、ロードすべきであると判断した場合はステップS716に進み、新しいバージョンのライブラリからクラスをロードする。
またステップS706で、両者のバージョンが等しい場合はステップS715に進み、クラスローダ103は、システムライブラリ104からクラスをロードする。またステップS704で、そのクラスがシステムライブラリ104内に存在しない場合はステップS708に進み、アプリケーションライブラリ108からクラスをロードする。
またステップS702で、そのクラスがアプリケーションライブラリ108内に存在しない場合はステップS709に進み、クラスローダ103は、そのクラスがインポートライブラリ109内に存在するかどうかを調べる。ここでインポートライブラリ109内に存在していればステップS710に進み、インポートライブラリ109のバージョンを取得してステップS704に移行する。この後の手順は、アプリケーションライブラリ108をインポートライブラリ109と置き換えれば、上述したステップS704〜708,S715,S716の説明の通りであるため、その説明を省略する。
またステップS709で、クラスがインポートライブラリ109内に存在していない場合、或はステップS701で所定の条件を満たさなかった場合はステップS711に進み、クラスローダ103は、クラスパスの優先順位に従って、クラスを検索する。そしてステップS711〜S714の処理は、前述の図4のステップS406〜S409の処理と同様であるため、その説明を省略する。
[実施例5]
次に、クラスロード手順5について、図8のフローチャートを用いて説明する。
図8は、本発明の実施例5に係る、図3のステップS306で実行されるクラスのロード処理手順(クラスロード手順5)を説明するフローチャートである。尚、この実施例5に係るjavaVM実行装置110の構成及びアプリケーションの実行手順の基本的流れは前述の実施例1(図3)と同様であるものとする。
この処理は、インタプリタ102がクラスローダ103に対しクラスのロードを要求することにより開始され、まずステップS801で、クラスローダ103は現在実行中のアプリケーション106の情報を取得する。次にステップS802で、クラスローダ103は、要求されたクラスが入っているライブラリをクラスパスに従って検索する。次にステップS803で、そのクラスを含むライブラリが見つかったかどうかを判断し、見つかった場合はステップS804に進み、その見つけたライブラリのパスを記憶する。更にステップS805で、そのライブラリのバージョンを取得する。次にステップS806で、クラスローダ103は、ステップS801で取得したアプリケーション情報、ステップS804,S805で見つかったライブラリの情報、及びそのバージョン情報に基づいて、そのクラスを、そのライブラリからロードすべきかどうかを判断する。ここで、そのライブラリからロードしないと判断したときはステップS802に戻る。
このステップS806の判断は、図9のライブラリ情報テーブル901に基づいて行う。このテーブルはRAM203、FlashROM207、或はHD209に記憶されている。
図9は、この実施例5に係るライブラリ情報テーブルの一例を示す図である。
ここではアプリケーションに対応して、ライブラリ、バージョン、クラスをロードしてくる優先ライブラリの位置が記憶されている。
このようなライブラリ情報テーブル901を用いて、アプリケーション106、ライブラリ、更に必要であればバージョン情報に基づき、クラスをロードするライブラリの位置を決定することができる。
例えば、アプリケーションAAAを実行中に、クラスYYYをロードする要求が生じたとする。このクラスYYYは、ライブラリaaa.jarに含まれるとする。この場合、ライブラリ情報テーブル901を参照すると、アプリケーション=AAA、ライブラリ=aaa.jarに対応する、クラスをロードしてくる「優先ライブラリの位置」の項には「アプリケーションライブラリ」となっている。
この時、ステップS802の検索で発見されたライブラリがシステムライブラリ104であれば、これはライブラリ情報テーブル901が指示する「アプリケーションライブラリ」とは一致しなくなる。従って、この場合ステップS806において、クラスローダ103はシステムライブラリ104からクラスをロードすべきでないと判断し、ステップS802に戻り、クラスパスが示す次の検索場所からクラスを探す。
そして、ここでもし、2回目の検索で見つかったライブラリがアプリケーションライブラリ108であれば、これはライブラリ情報テーブル901が指示する「アプリケーションライブラリ」と一致する。従って、この場合はステップS806で、クラスローダ103はアプリケーションライブラリ108からクラスをロードすべきであると判断してステップS807に進み、クラスローダは、そのロードすべきであると判断したライブラリからクラスをロードする。
また別の例として、アプリケーションBBBを実行中に、クラスYYYをロードする要求が生じたとする。クラスYYYは上記と同様、ライブラリaaa.jarに含まれるものとする。このとき図8のステップS802でシステムライブラリ104の中にあることが見つかったとする。この場合、ライブラリ情報テーブル901の優先ライブラリの位置は「システムライブラリ」であるので、ステップS806において、クラスローダ103はシステムライブラリ104からクラスをロードすべきであると判断してステップS807に進む。
尚、ライブラリ情報テーブル901に存在する、「クラスをロードしてくる優先ライブラリの位置」の情報は、どこからロードすべきか区別がつくものであればよい。よって、例えば「アプリケーションライブラリ」、「システムライブラリ」というような位置の種別を表すものでもよいし、直接ライブラリを指す、ライブラリパスそのものが記憶されていてもよい。上記の例では、クラスをロードすべきかどうかを判断するのに、ステップS805で得たバージョン情報は使わなかった。これは図9に示すライブラリ情報テーブル901では、アプリケーションAAA、ライブラリaaa.jarに対応するバージョン欄は空欄のためである。
以下の例では、このバージョン情報を使う場合で説明する。
アプリケーションCCCを実行中に、クラスYYYをロードする必要が生じたとする。このクラスYYYは上記と同様、ライブラリaaa.jarに含まれる。いまステップS804で見つかったライブラリは、システムライブラリ104であったとする。そしてステップS805では、このシステムライブラリ104のバージョンを取得する。この場合、ステップS806では、クラスローダ103は、ライブラリ情報テーブル901でアプリケーション=CCC、ライブラリ=aaa.jar、クラスをロードしてくる「優先ライブラリの位置」=「システムライブラリ」に対応するバージョン情報を取得する。
図9において、アプリケーション=CCC、ライブラリ=aaa.jarに対応するシステムライブラリのバージョン情報は「2.0以上」となっている。
従って、この場合はステップS806で、このバージョン情報の条件をステップS805で取得したバージョン情報が満たすかどうかを判定する。そして条件を満たす場合は、そのクラスを、そのライブラリからロードすべきであると判断する。
一方ステップS802で、クラスをクラスパスに従って検索し、ステップS803で、最後までステップS806の条件を満たすライブラリがなかった場合はステップS808に進む。ここでは、クラスローダ103は、以前、要求クラスが存在することを発見されたライブラリがあったか、つまり、ステップS804で記憶されたライブラリがあるかどうかを調べる。ここで記憶されたライブラリとは、クラスを含むことは分かっているものの、ステップS806の条件判断により、ロードを一旦断念したライブラリである。しかし、このライブラリは、その要求されたクラスは含んでいるので、発見されたライブラリがあった場合はステップS807に進み、そのクラスをロードする。一方、ステップS808で、発見されたライブラリが一つもなければステップS809に進み、クラスローダ103は、クラスを発見できない旨を示す例外を発生して処理を終了する。
またこれ以外に、発見されたライブラリが複数存在する場合も、様々な実施例が考えられる。即ち、この場合には、
(1)最初に発見されたライブラリを優先する。
(2)アプリケーションライブラリ108を優先する。
(3)新しいバージョンのライブラリを優先する。
などのように、クラスロード手順1〜4までに説明した様々なライブラリ選択手法を応用することが考えられる。
また図8のフローチャートでは、ステップS802で、クラスパスに従ってライブラリを検索したが、この検索方法においても、様々なバリエーションが考えられる。即ち、
(1)最初に発見されたライブラリを優先する。
(2)アプリケーションライブラリ108を優先する。
(3)新しいバージョンの方を優先する。
など、クラスロード手順1〜4までに説明した様々なライブラリ選択手法を応用することが考えられる。
[実施例6]
次に、クラスロード手順6について、図10のフローチャートを用いて説明する。
図10は、本発明の実施例6に係る、図3のステップS306で実行されるクラスのロード処理手順(クラスロード手順6)を説明するフローチャートである。尚、この実施例6に係るjavaVM実行装置110の構成及びアプリケーションの実行手順の基本的流れは前述の実施例1(図3)と同様であるものとする。
最初にステップS1001で、クラスローダ103は、現在実行中のアプリケーション情報を取得する。次にステップS1002で、クラスローダ103は、要求されたクラスが入っているライブラリをクラスパスに従って検索する。その結果ステップS1003で、クラスを含むライブラリが見つかったかどうかを判定する。見つかった場合はステップS1004に進み、そのライブラリ名を取得する。次にステップS1005に進み、クラスローダは、次に優先するライブラリが存在するかどうかを調べる。これは、ライブラリ情報テーブル901をアレンジしたテーブルである、図11のライブラリ情報テーブル1101を参照して判定する。
図11は、この実施例6に係るライブラリ情報テーブルの一例を示す図である。
図9に示すライブラリ情報テーブル901と、この図11に示すテーブル1101の相違点を説明する。図9のテーブル901では、クラスをロードしてくる優先ライブラリの位置の情報が一つだけ存在している。これに対して図11では、優先ライブラリ情報がリストになっており、第1優先ライブラリから第3優先ライブラリまで存在している。もちろん、図11では、第3優先ライブラリまでが記述されているが、この優先ライブラリの数に制限はない。
ステップS1005では、クラスローダ103は、ステップS1001で取得したアプリケーション情報、ステップS1004で取得したライブラリ名から、ライブラリ情報テーブル1101を参照して、次に優先するライブラリが存在するかどうかを調べる。このステップを最初に実行する場合は、当然、「第1優先ライブラリの位置」の項が存在するかどうかを調べる。調べる方法は、ライブラリ情報テーブル901を用いて上記で説明した方法と同一である。
ステップS1005で、優先するライブラリが存在すればステップS1006に進み、その優先ライブラリの位置を取得する。次にステップS1007で、クラスローダ103は、そのライブラリの位置に、ステップS1004で取得したライブラリ名を持つライブラリが実在するかどうかを調べる。ここで実在すればステップS1008に進み、クラスローダ103は、要求されたクラスが、そのライブラリの中に存在するかどうかを調べる。ここでクラスが存在すればステップS1009に進み、クラスローダ103は、ライブラリを一旦RAM203などに記憶してステップS1010に進み、ライブラリのバージョンを取得する。次にステップS1011で、クラスローダ103は、そのバージョンがライブラリ情報テーブル1101のバージョン条件に適合しているかどうかを調べる。これを調べる方法は、ライブラリ情報テーブル901を用いて上記で説明した方法と同一である。ここでバージョン条件が適合していればステップS1012に進み、クラスローダ103は、そのライブラリからクラスをロードする(ステップS1012)。
一方、ステップS1007でライブラリが実在しない場合、或はステップS1008でクラスがライブラリの中に存在しない場合、或は、ステップS1011でバージョン条件が適合しない場合はステップS1005に戻り、次の優先するライブラリを探す。このループ処理によって、第1優先ライブラリから順に優先ライブラリの探索が行われる。
ステップS1005で、次に優先するライブラリが存在しな苦なるとステップS1013に進み、クラスローダ103は、ステップS1009で記憶されたライブラリが存在するかどうかを調べる。この記憶されたライブラリは、要求されたクラスを含むことが分かっているライブラリである。ステップS1013で、記憶されたライブラリが存在すればステップS1012に進み、そのライブラリからクラスをロードする。一方、ステップS1013で、記憶されたライブラリが存在しなかった場合、或は、ステップS1003でクラスを含むライブラリが見つからない場合はステップS1014に進み、クラスローダ103は、クラスを発見できない旨の例外を発生する。
以上、各種実施例におけるクラスロード手順について説明してきたが、これらのクラスロード手順は全て、アプリケーション毎に変更することが可能である。それは、JavaVM101内に存在するクラスローダ103が、実行中のアプリケーションを識別して、クラスロード手順を切り替えることによって可能である。
また図示していないが、各アプリケーションがクラスローダを備える(アプリケーションクラスローダ)ことによっても、クラスロード手順をアプリケーション毎に変更することができることは、同業者にとっては容易に理解できよう。この場合はアプリケーションクラスローダの違いが、各アプリケーションを識別していることになる。
尚、本実施の形態においては、Java言語とそれを用いたプログラム及びクラスを例に説明してきた。しかしながら、本発明の骨子は、Javaシステムに特有というわけではなく、オブジェクト指向プログラム実行装置一般に適用可能なものであることは、同業者にとって容易に理解できるところである。
(他の実施形態)
以上、本発明の実施形態について詳述したが、本発明は、複数の機器から構成されるシステムに適用しても良いし、また一つの機器からなる装置に適用しても良い。
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムを読み出して実行することによっても達成され得る。その場合、プログラムの機能を有していれば、形態は、プログラムである必要はない。
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明のクレームでは、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。
プログラムを供給するための記録媒体としては、様々なものが使用できる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などである。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページからハードディスク等の記録媒体にダウンロードすることによっても供給できる。その場合、ダウンロードされるのは、本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルであってもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明のクレームに含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布する形態としても良い。その場合、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムが実行可能な形式でコンピュータにインストールされるようにする。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される形態以外の形態でも実現可能である。例えば、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
更に、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれるようにしてもよい。この場合、その後で、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ない、その処理によって前述した実施形態の機能が実現される。
本発明の実施の形態に係るJavaプログラム実行システムの構成を示すブロック図である。 本実施の形態に係るJavaVM実行装置のハードウェア構成を説明するブロック図である。 本実施の形態に係るJavaVM実行装置におけるアプリケーションの実行手順を示すフローチャートである。 本実施例1に係るステップS306で実行されるクラスのロード処理手順(クラスロード手順1)を説明するフローチャートである。 実施例2に係る、図3のステップS306で実行されるクラスのロード処理手順(クラスロード手順2)を説明するフローチャートである。 実施例3に係る、図3のステップS306で実行されるクラスのロード処理手順(クラスロード手順3)を説明するフローチャートである。 本発明の実施例4に係る、図3のステップS306で実行されるクラスのロード処理手順(クラスロード手順4)を説明するフローチャートである。 本発明の実施例5に係る、図3のステップS306で実行されるクラスのロード処理手順(クラスロード手順5)を説明するフローチャートである。 実施例5に係るライブラリ情報テーブルの一例を示す図である。 本発明の実施例6に係る、図3のステップS306で実行されるクラスのロード処理手順(クラスロード手順6)を説明するフローチャートである。 実施例6に係るライブラリ情報テーブルの一例を示す図である。

Claims (21)

  1. オブジェクト指向プログラムを実行する情報処理装置であって、
    ライブラリクラスを蓄積するクラス蓄積手段と、
    実行中のアプリケーションで使用されるクラスが、予め定められた条件を満たすか否かを判定する判定手段と、
    前記判定手段により前記条件を満たすと判定されると、前記アプリケーションが提供するクラスライブラリから前記使用されるクラスをロードし、前記条件を満たさないと判定した場合には、前記クラス蓄積手段から、対応するクラスをロードするように制御するロード制御手段と、
    を有することを特徴とする情報処理装置。
  2. 前記予め定められた条件は、前記クラスの名称の少なくとも一部が、予め記憶されている文字列に一致する条件であることを特徴とする請求項1に記載の情報処理装置。
  3. 前記予め定められた条件は、要求されたクラスのパッケージ名の少なくとも一部が、予め記憶されている文字列に一致する条件であることを特徴とする請求項1に記載の情報処理装置。
  4. オブジェクト指向プログラムを実行する情報処理装置であって、
    ライブラリクラスを蓄積するクラス蓄積手段と、
    実行中のアプリケーションが第1条件を満たすか否かを判定する第1判定手段と、
    要求されたクラスが第2条件を満たすか否かを判定する第2判定手段と、
    前記第1判定手段により前記第1条件を満たしていると判定され、かつ前記第2判定手段により前記第2条件を満たしていると判定されると、前記アプリケーションが提供するクラスライブラリからクラスをロードし、前記第1判定手段により前記第1条件を満たさないと判定されるか、或は前記第2判定手段により前記第2条件を満たさないと判定されると前記クラス蓄積手段からクラスをロードするように制御する制御手段と、
    を有することを特徴とする情報処理装置。
  5. 前記第1条件は、前記アプリケーションがクラスパスを優先する条件であり、前記第2条件は前記クラスの名称の少なくとも一部が、予め記憶されている文字列に一致する条件であることを特徴とする請求項4に記載の情報処理装置。
  6. オブジェクト指向プログラムを実行する情報処理装置であって、
    ライブラリクラスを蓄積するクラス蓄積手段と、
    実行中のアプリケーションで使用されるクラスが、予め定められた条件を満たすか否かを判定する判定手段と、
    前記クラス蓄積手段と前記アプリケーションのクラスライブラリのバージョン同士を比較する比較手段と、
    前記判定手段により前記条件を満たしていると判定され、かつ前記比較手段の比較により前記バージョンが一致する場合は前記アプリケーションのクラスライブラリから前記クラスをロードし、前記判定手段により前記条件を満たしていないと判定され、かつ前記比較手段の比較により前記バージョンが一致しない場合には、前記クラス蓄積手段からクラスをロードするように制御する制御手段と、
    を有することを特徴とする情報処理装置。
  7. 前記予め定められた条件は、前記クラスの名称の少なくとも一部が、予め記憶されている文字列に一致する条件であることを特徴とする請求項6に記載の情報処理装置。
  8. 前記予め定められた条件は、要求されたクラスのパッケージ名の少なくとも一部が、予め記憶されている文字列に一致する条件であることを特徴とする請求項6に記載の情報処理装置。
  9. オブジェクト指向プログラムを実行する情報処理装置であって、
    ライブラリクラスを蓄積するクラス蓄積手段と、
    アプリケーションに対応して、クラスをロードするクラスライブラリの優先順位を記憶する記憶手段と、
    アプリケーションの実行中にクラスが要求されると、前記記憶手段を参照して前記クラスをロードすべきクラスライブラリの位置を取得し、当該クラスライブラリから前記クラスをロードするように制御する制御手段と、
    を有することを特徴とする情報処理装置。
  10. 前記記憶手段は更に前記クラスライブラリに対応してバージョンを記憶しており、前記制御手段は、更に、前記クラスライブラリのバージョンを基に、ロードを優先すべきクラスライブラリの位置を取得し、当該クラスライブラリからクラスデータをロードすることを特徴とする請求項9に記載の情報処理装置。
  11. オブジェクト指向プログラムを実行する情報処理装置におけるオブジェクト指向プログラムの実行方法であって、
    実行中のアプリケーションで使用されるクラスが、予め定められた条件を満たすか否かを判定する判定工程と、
    前記判定工程で前記条件を満たすと判定されると、前記アプリケーションが提供するクラスライブラリから前記使用されるクラスをロードし、前記条件を満たさないと判定した場合には、クラスライブラリを蓄積するシステムライブラリから、対応するクラスをロードするように制御するロード制御工程と、
    を有することを特徴とする情報処理装置におけるオブジェクト指向プログラムの実行方法。
  12. 前記予め定められた条件は、前記クラスの名称の少なくとも一部が、予め記憶されている文字列に一致する条件であることを特徴とする請求項11に記載のオブジェクト指向プログラムの実行方法。
  13. 前記予め定められた条件は、要求されたクラスのパッケージ名の少なくとも一部が、予め記憶されている文字列に一致する条件であることを特徴とする請求項11に記載のオブジェクト指向プログラムの実行方法。
  14. オブジェクト指向プログラムを実行する情報処理装置におけるオブジェクト指向プログラムの実行方法であって、
    実行中のアプリケーションが第1条件を満たすか否かを判定する第1判定工程と、
    要求されたクラスが第2条件を満たすか否かを判定する第2判定工程と、
    前記第1判定工程で前記第1条件を満たしていると判定され、かつ前記第2判定工程で前記第2条件を満たしていると判定されると、前記アプリケーションが提供するクラスライブラリからクラスをロードし、前記第1判定工程で前記第1条件を満たさないと判定されるか、或は前記第2判定工程で前記第2条件を満たさないと判定されると、クラスライブラリを蓄積するシステムライブラリから対応するクラスをロードするように制御する制御工程と、
    を有することを特徴とする情報処理装置におけるオブジェクト指向プログラムの実行方法。
  15. 前記第1条件は、前記アプリケーションがクラスパスを優先する条件であり、前記第2条件は前記クラスの名称の少なくとも一部が、予め記憶されている文字列に一致する条件であることを特徴とする請求項14に記載のオブジェクト指向プログラムの実行方法。
  16. オブジェクト指向プログラムを実行する情報処理装置におけるオブジェクト指向プログラムの実行方法であって、
    装置が記憶するシステムライブラリと、実行中のアプリケーションで使用されるクラスが、予め定められた条件を満たすか否かを判定する判定工程と、
    前記システムライブラリと前記アプリケーションのクラスライブラリのバージョン同士を比較する比較工程と、
    前記判定工程で前記条件を満たしていると判定され、かつ前記比較工程での比較により前記バージョンが一致する場合は前記アプリケーションのクラスライブラリから前記クラスをロードし、前記判定工程により前記条件を満たしていないと判定され、かつ前記比較工程の比較により前記バージョンが一致しない場合には、前記システムライブラリから対応するクラスをロードするように制御する制御工程と、
    を有することを特徴とする情報処理装置におけるオブジェクト指向プログラムの実行方法。
  17. 前記予め定められた条件は、前記クラスの名称の少なくとも一部が、予め記憶されている文字列に一致する条件であることを特徴とする請求項16に記載のオブジェクト指向プログラムの実行方法。
  18. 前記予め定められた条件は、要求されたクラスのパッケージ名の少なくとも一部が、予め記憶されている文字列に一致する条件であることを特徴とする請求項16に記載のオブジェクト指向プログラムの実行方法。
  19. オブジェクト指向プログラムを実行する情報処理装置におけるオブジェクト指向プログラムの実行方法であって、
    アプリケーションに対応して、クラスをロードするクラスライブラリの優先順位をメモリに記憶する記憶工程と、
    アプリケーションの実行中にクラスが要求されると、前記メモリを参照して前記クラスをロードすべきクラスライブラリの位置を取得し、当該クラスライブラリから前記クラスをロードするように制御する制御工程と、
    を有することを特徴とするオブジェクト指向プログラムの実行方法。
  20. 前記メモリは更に前記クラスライブラリに対応してバージョンを記憶しており、前記制御工程では、更に、前記クラスライブラリのバージョンを基に、ロードを優先すべきクラスライブラリの位置を取得し、当該クラスライブラリからクラスデータをロードすることを特徴とする請求項19に記載のオブジェクト指向プログラムの実行方法。
  21. 請求項11乃至20のいずれか1項に記載のオブジェクト指向プログラムの実行方法を実現するためのプログラム。
JP2006024740A 2006-02-01 2006-02-01 情報処理装置及び当該装置におけるオブジェクト指向プログラムの実行方法とそのプログラム Expired - Fee Related JP4881023B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2006024740A JP4881023B2 (ja) 2006-02-01 2006-02-01 情報処理装置及び当該装置におけるオブジェクト指向プログラムの実行方法とそのプログラム
US11/627,701 US8732723B2 (en) 2006-02-01 2007-01-26 Execution apparatus and method
EP07101373.4A EP1821206B1 (en) 2006-02-01 2007-01-30 Execution apparatus and method
CNB2007100028187A CN100543679C (zh) 2006-02-01 2007-02-01 执行设备和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006024740A JP4881023B2 (ja) 2006-02-01 2006-02-01 情報処理装置及び当該装置におけるオブジェクト指向プログラムの実行方法とそのプログラム

Publications (3)

Publication Number Publication Date
JP2007206965A true JP2007206965A (ja) 2007-08-16
JP2007206965A5 JP2007206965A5 (ja) 2009-03-05
JP4881023B2 JP4881023B2 (ja) 2012-02-22

Family

ID=37913826

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006024740A Expired - Fee Related JP4881023B2 (ja) 2006-02-01 2006-02-01 情報処理装置及び当該装置におけるオブジェクト指向プログラムの実行方法とそのプログラム

Country Status (4)

Country Link
US (1) US8732723B2 (ja)
EP (1) EP1821206B1 (ja)
JP (1) JP4881023B2 (ja)
CN (1) CN100543679C (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010113474A (ja) * 2008-11-05 2010-05-20 Sony Corp 情報処理装置、情報処理方法及びプログラム
JP2012212431A (ja) * 2011-03-28 2012-11-01 Canon Inc セキュリティサービスに実装するシステムおよび方法
KR20160002888A (ko) * 2013-05-08 2016-01-08 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 애플리케이션 내의 대역외 프레임워크 라이브러리
JP2016014949A (ja) * 2014-07-01 2016-01-28 株式会社エクサ Java開発支援プログラム
CN105589715A (zh) * 2014-11-10 2016-05-18 日本电气株式会社 信息处理设备、库加载方法和计算机可读介质
KR20170085979A (ko) * 2016-01-15 2017-07-25 캐논 가부시끼가이샤 정보 처리장치 및 리소스 관리방법
JP2017142574A (ja) * 2016-02-08 2017-08-17 富士通株式会社 制御プログラム、制御装置、及び制御方法
JP2020049699A (ja) * 2018-09-25 2020-04-02 コニカミノルタ株式会社 画像処理装置、アプリケーション内包ライブラリの処理方法及びプログラム
JP2020049700A (ja) * 2018-09-25 2020-04-02 コニカミノルタ株式会社 画像処理装置、アプリケーション内包ライブラリの処理方法及びプログラム
JP2020160946A (ja) * 2019-03-27 2020-10-01 キヤノン株式会社 情報処理装置、及び情報処理装置の制御方法、プログラム

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9298448B2 (en) * 2013-05-21 2016-03-29 Red Hat, Inc. System and method for run time dependency resolution
CN103473089A (zh) * 2013-09-02 2013-12-25 深圳市华傲数据技术有限公司 一种分布式java程序运行方法、装置和系统
US9870237B2 (en) * 2014-10-14 2018-01-16 Oracle International Corporation System and method for supporting distributed class loading in a virtual machine (VM)
US9519468B2 (en) 2015-02-13 2016-12-13 Oracle International Corporation Modular co-versioning in a dynamically linked runtime environment
CN104699547B (zh) * 2015-03-19 2018-06-26 北京东方通科技股份有限公司 JavaEE应用类加载冲突分析方法和装置
CN105630540A (zh) * 2015-12-21 2016-06-01 山东中创软件工程股份有限公司 一种应用类加载方法、装置及web应用类加载器
US10572275B2 (en) * 2017-06-15 2020-02-25 Microsoft Technology Licensing, Llc Compatible dictionary layout

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002041310A (ja) * 2000-07-21 2002-02-08 Nec Corp クラス動的バインドシステムおよび方法
JP2003044302A (ja) * 2001-06-11 2003-02-14 Hewlett Packard Co <Hp> 仮想マシンクラスファイルの更新方法及びシステム
WO2004059425A2 (en) * 2002-12-23 2004-07-15 Motorola, Inc Method and apparatus for shared libraries on mobile devices

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6260078B1 (en) * 1996-07-03 2001-07-10 Sun Microsystems, Inc. Using a distributed object system to find and download java-based applications
US6044467A (en) * 1997-12-11 2000-03-28 Sun Microsystems, Inc. Secure class resolution, loading and definition
US6449720B1 (en) * 1999-05-17 2002-09-10 Wave Systems Corp. Public cryptographic control unit and system therefor
US6584612B1 (en) * 1999-07-15 2003-06-24 International Business Machines Corporation Transparent loading of resources from read-only memory for an application program
US6826750B1 (en) * 2000-03-23 2004-11-30 International Business Machines Corporation Method of automatically selecting program and data updates based upon versions
JP2002014817A (ja) 2000-06-30 2002-01-18 Oki Electric Ind Co Ltd ファイル配布システム
US6918106B1 (en) * 2000-07-31 2005-07-12 Sun Microsystems, Inc. Method and apparatus for collocating dynamically loaded program files
US7028295B2 (en) * 2001-10-31 2006-04-11 Seiko Epson Corporation Dynamic java class loading for application execution
US6701335B2 (en) * 2002-02-27 2004-03-02 Lecroy Corporation Digital frequency response compensator and arbitrary response generator system
KR100493893B1 (ko) 2003-02-07 2005-06-10 삼성전자주식회사 자바 프로그램에서 클래스 로딩 과정을 단축시키는 시스템및 방법
US7406687B1 (en) * 2004-03-17 2008-07-29 Sun Microsystems, Inc. Sharing runtime representation of software component methods across component loaders
US7937717B2 (en) * 2004-09-13 2011-05-03 Tvworks, Llc Method and apparatus enabling multiple application sharing of classes
US8091097B2 (en) * 2005-06-22 2012-01-03 Mark Lawrence Chen Distributed virtual machine architecture
US8839215B2 (en) * 2010-07-19 2014-09-16 International Business Machines Corporation String cache file for optimizing memory usage in a java virtual machine

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002041310A (ja) * 2000-07-21 2002-02-08 Nec Corp クラス動的バインドシステムおよび方法
JP2003044302A (ja) * 2001-06-11 2003-02-14 Hewlett Packard Co <Hp> 仮想マシンクラスファイルの更新方法及びシステム
WO2004059425A2 (en) * 2002-12-23 2004-07-15 Motorola, Inc Method and apparatus for shared libraries on mobile devices
JP2006511868A (ja) * 2002-12-23 2006-04-06 モトローラ・インコーポレイテッド モバイルデバイスにおける共有ライブラリのための方法および装置

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010113474A (ja) * 2008-11-05 2010-05-20 Sony Corp 情報処理装置、情報処理方法及びプログラム
JP2012212431A (ja) * 2011-03-28 2012-11-01 Canon Inc セキュリティサービスに実装するシステムおよび方法
KR20160002888A (ko) * 2013-05-08 2016-01-08 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 애플리케이션 내의 대역외 프레임워크 라이브러리
KR102163501B1 (ko) 2013-05-08 2020-10-08 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 애플리케이션 내의 대역외 프레임워크 라이브러리
JP2016014949A (ja) * 2014-07-01 2016-01-28 株式会社エクサ Java開発支援プログラム
CN105589715B (zh) * 2014-11-10 2019-11-05 日本电气株式会社 信息处理设备、库加载方法和计算机可读介质
CN105589715A (zh) * 2014-11-10 2016-05-18 日本电气株式会社 信息处理设备、库加载方法和计算机可读介质
JP2016091460A (ja) * 2014-11-10 2016-05-23 日本電気株式会社 情報処理装置およびライブラリロード方法、並びにコンピュータ・プログラム
US9477498B2 (en) 2014-11-10 2016-10-25 Nec Corporation Information processing device, library loading method, and computer readable medium
CN106980516A (zh) * 2016-01-15 2017-07-25 佳能株式会社 信息处理装置及资源管理方法
KR102090977B1 (ko) * 2016-01-15 2020-04-23 캐논 가부시끼가이샤 정보 처리장치 및 리소스 관리방법
KR20170085979A (ko) * 2016-01-15 2017-07-25 캐논 가부시끼가이샤 정보 처리장치 및 리소스 관리방법
JP2017142574A (ja) * 2016-02-08 2017-08-17 富士通株式会社 制御プログラム、制御装置、及び制御方法
JP2020049699A (ja) * 2018-09-25 2020-04-02 コニカミノルタ株式会社 画像処理装置、アプリケーション内包ライブラリの処理方法及びプログラム
JP2020049700A (ja) * 2018-09-25 2020-04-02 コニカミノルタ株式会社 画像処理装置、アプリケーション内包ライブラリの処理方法及びプログラム
JP7103112B2 (ja) 2018-09-25 2022-07-20 コニカミノルタ株式会社 画像処理装置、アプリケーション内包ライブラリの処理方法及びプログラム
JP7103113B2 (ja) 2018-09-25 2022-07-20 コニカミノルタ株式会社 画像処理装置、アプリケーション内包ライブラリの処理方法及びプログラム
JP2020160946A (ja) * 2019-03-27 2020-10-01 キヤノン株式会社 情報処理装置、及び情報処理装置の制御方法、プログラム
JP7262269B2 (ja) 2019-03-27 2023-04-21 キヤノン株式会社 情報処理装置、及び情報処理装置の制御方法、プログラム

Also Published As

Publication number Publication date
EP1821206B1 (en) 2018-03-14
JP4881023B2 (ja) 2012-02-22
CN100543679C (zh) 2009-09-23
CN101017436A (zh) 2007-08-15
EP1821206A2 (en) 2007-08-22
EP1821206A3 (en) 2009-07-08
US8732723B2 (en) 2014-05-20
US20070180442A1 (en) 2007-08-02

Similar Documents

Publication Publication Date Title
JP4881023B2 (ja) 情報処理装置及び当該装置におけるオブジェクト指向プログラムの実行方法とそのプログラム
KR100965706B1 (ko) 코드 재기입이 가능한 컴퓨터 장치 및 코드 재기입 방법
JP4796966B2 (ja) ソフトウェアアプリケーションをプログレッシブインストールするためのシステムおよび方法およびapi
US8418169B2 (en) Management method for managing software module and information processor
US9164919B2 (en) Method and apparatus for inputting/outputting virtual operating system from removable storage device on a host using virtualization technique
US20090125874A1 (en) Method and system for creating projects in a rational application developer workspace
KR20090073177A (ko) 씬 클라이언트 소프트웨어 개발 환경을 제공하기 위한 방법, 서버 기반 소프트웨어 개발 프로젝트 공유를 위한 방법, 및 컴퓨터-판독가능 매체
JP2005085278A (ja) 統合ハードウェアデバイスを介したコンピュータ間通信のためのシステムおよび方法
JP2018190261A (ja) 情報処理装置、情報処理方法および情報処理プログラム
JPWO2006067841A1 (ja) 仮想マシン管理プログラムおよび仮想マシン管理方法
JP4975222B2 (ja) オペレーティング・システム用多言語ユーザ・インターフェース
JP2003223329A (ja) 移動通信端末実行用プログラムファイル及びプログラムファイル実行方法並びに移動通信携帯端末
JP5108773B2 (ja) 宣言的に定義されるコントロールアクション
US9703550B1 (en) Techniques for building code entities
JP5475199B2 (ja) 前処理済みのファイルを実行させるためのファイル処理装置及びその方法をコンピュータで行うための記録媒体
JP4851107B2 (ja) コンピュータ実施方法
JP5489884B2 (ja) 命令実行装置、命令実行方法、及び命令実行プログラム
CN107667343B (zh) 用于加载按需加载资源的系统和方法
JP2010123023A (ja) 情報処理装置、情報処理装置の制御方法、プログラム、及び、記録媒体
Okafor et al. Eliminating the operating system via the bare machine computing paradigm
JP2008059482A (ja) 情報処理装置、情報処理方法
JP2011081501A (ja) オペレーティングシステムプログラム、及びこれが搭載されているコンピュータ
Venu et al. Creating and Deploying a. NET Core Application to Raspberry Pi
KR100945151B1 (ko) 외부 메모리 상의 가상머신 기반 모바일 응용 프로그램을효과적으로 실행하는 모바일 미디어 장치 및 동작 방법
CN118550577A (zh) 开发环境配置方法、装置、存储介质和电子设备

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090120

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090120

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110909

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111108

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111128

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111202

R151 Written notification of patent or utility model registration

Ref document number: 4881023

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141209

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees