MJ によるプログラミング

MJ におけるプログラムの設計

Under construction.

MJ における design by contract

Under construction.

複数の module を自由に組み合わせてもプログラムが正しく動作することを 保証するためには、「契約による設計」が不可欠です。

MJ におけるデザインパターン

Under construction.

Java 言語で書かれたアプリケーションを MJ に書き直す手順

いきなりモジュール分けしようとせずに、 まずは1つの大きなモジュールで全体を囲み、 そこから少しづつモジュールを切り出して行く方法がよいと思います。 具体的には以下のような手順をお勧めします。

  1. MJ 化しようとする Java のソースコードは、 十分きれいにリファクタリングされていて、 機能的にも十分に安定しているものと仮定する。 (そうしないと、あとでアプリケーションそのもののバグなのか、 MJ 化によるバグなのか、MJ 言語処理系のバグなのかで悩むことになる。)

    MJ 化にあたっては、アプリケーションの構造はいじらない。 リンク後のイメージは、元の Java のソースと完全に等価になるように書き換える。 ( enbug してしまうのを避けるため。)

  2. まず、 ソースコードをよく読んで、構造を理解する。 抜き出せそうな crosscutting concerns をできるだけ把握しておく。 MJ では受け付けないコーディング(inner class など)があるかどうかも 注意して見ておく。 特に、 MJ ではサポートしていない機能( super constructor 呼び出しとか、 syncronized class とか?)があると 致命的なので、早いうちに見つけて、対策を考える必要がある。

  3. アプリケーションの全機能をテストするテストプログラムを書く。 (これを使って毎回テストして、慎重にソースを書き換えていく。)

  4. MJ 化する前に、 Java 言語の範囲でできるだけソースを書き換えておく。 例えば inner class は普通のクラスに書き換える。 anonymous class の内部からの field のアクセスをなくす。 あまりソースのサイズが大きくないなら、ファイル1つにまとめておく。

  5. MJ 化する。ここが一番リスクが高い作業。 プログラム全体を1つのモジュールで囲む。 define をつける。 static method はクラス SS のメソッドにする。 public/protected/private は mjc は無視するので、ほおっておく。

    この時、明らかに他と相互依存していないクラスがあるならば、 別のモジュールに分けておいてもよい。 この後の作業では turn around time の長さが問題となるので (ようするに mjc が遅い)、 分割コンパイル可能なモジュールは、できれば分けておく。

    コンパイラを通って、テストも通れば、ほぼ成功。

  6. あとは、慎重に "crosscutting concern" を抜き出して、 別のモジュールに分けていく。 必要以上に細かくモジュール分けしようと思わない方がよい。


mj-logo
Last updated: Dec 19 15:35:23 2001