本研究では、動的結合ライブラリの技術を発展させ、実行時のソフトウェアを停止させることなく進化発展させるメカニズムの研究を行った。我々の方式は、(1)動的結合ライブラリ中の関数やクラスに複数のバ-ジョンを定義することを可能とすること、(2)ロード時にはもちろん、実行開始後でも複数用意されたバ-ジョンからユーザが必要なバ-ジョンを選択して実行できるようにすること、(3)一度ロードされたライブラリ関数でも、実行中に他のバ-ジョンを再ロードして入れ替えることができること、の3点を実現することにより、実行中のソフトウェアが発展できるようにすることである。 この実行時のライブラリのバ-ジョン管理機能を実現するにあたり、2つの実現方式を考案した。第一の方式は、ユーザプログラムが呼び出すライブラリのバ-ジョンの中から必要なバ-ジョン選択し、ユーザプログラムと直接リンクすることによりバ-ジョン管理を実現する「選択的動的リンク」である。第二の方式は、ユーザプログラムとライブラリを直接リンクせずに、各ライブラリ関数ごとに「代理関数」を作成し、ユーザプログラムとその代理関数をリンクする「間接的動的リンク」である。 選択的動的リンクに関しては、Java言語の仮想マシンを改良し、その実現を図った。間接的動的リンクに関しては、Solarisの動的ライブラリおよびC言語というプラットフォームで実現を図った。開発したツールで核となるものは、代理関数の生成を自動的に行うプリコンパイラvdlcである。vdlcは、ライブラリの関数プロトタイプを含むヘッダファイルを解析し、代理関数を自動的に作成する。vdlcにより生成された代理関数をもとに動的結合ライブラリを作成しておけば、そのライブラリ関数を使用するユーザプログラムを一切変更することなく実行時バ-ジョン管理が利用できるようになった。
|