我々が既に開発していたC++言語用の発展可能コンパイラOpenC++の設計を元にJava言語用の発展可能コンパイラOpenJavaを開発した。またOpenJavaを実際にいくつかの有名なデザイン・パターンに対応するよう発展させ、その発展可能性を検証した。Java言語はC++言語に比べ、設計が精錬されているため、発展させるためのAPIは、OpenC++より簡潔で理解しやすいものとすることができた。 本研究は当初、我々がこれまで研究してきた拡張機構を備えたコンパイラの技術をもとに、これをソフトウェアの発展機構として応用することを目標として始まった。しかしながら、ソフトウェアの改良過程の支援という応用システムの研究は、「発展機構を備えたソフトウェアの構成原理の研究」に直接的に貢献しているとはいいがたい。このような考えは、研究を進めていくうちに次第に強くなり、徐々に、ソフトウェアを発展させる上で実際に問題となっていることを解決する方向に、研究の目的を変化させていった。この結果、我々は発展可能コンパイラの技術の応用として、schema evolutionを見いだし、現在までに、「メタ」プログラムに従ってプログラムを自動編集するソフトウェアJavassistをJava言語用に開発した。このソフトウェアはschem evolutionに関する応用に十分な程度の発展機能を備えている。Javassistの特徴は、ソースコードを必要とせず、実行時(正確にはロード時)にバイナリコード(バイトコード)を直接編集できる機能を提供している点である。また、実行時にプログラムを編集しても、全体の実行速度が大きく影響をうけないよう、効率のよい処理を実現している。
|