[igapyon]C から Java, C から C#.NET

http://www.igapyon.jp/igapyon/diary/2007/ig071213.html
う〜む、難しいなぁ〜。
C から Javaについて3パターン考えました。

JavaVMで動かす。

C言語用のライブラリは必須。それをすべてJavaで作る!
メモリ空間を自分で用意してやって、class MemorySpace{ byte[] mem = new byte[0x10000000]; }
ポインタもクラスにして、class Pointer { MemorySpace ms; int pointer = 0; }
malloc や memset などすべてこの上でやっちゃう。
int* などもjava.lang.Integerなど使わずに、すべてのC言語の型をJavaで用意する。
ここまでしなきゃ、完全なコンバータはできないんじゃないかな?

全部JNI!

WindowsAPIでSWTを使うなら、いっそのことすべてJNIにしてしまえばいいです。
class Stdlib { native int malloc(int size); } みたいな。

変換できるところだけ変換する。

上記2つは完全コンバートだけれど、これはそうではないです。
簡単にコンバートできるところはコンバートして、できないところは、TODOとオリジナルソースのコメントを埋め込む。
あとは人間が1つずつ手で変換していく。
結果的には、これが一番マトモなJavaのソースになるでしょう。