C++からJavaScriptへ変換し、さらにJavaへ移植する話の続き

C++ソースからJavaScriptソースを生成するツールである、emscriptenをちみちみいじってたんです。
生成されたJavaScriptからJavaへ移植する作業は、
手作業でやってもそれほどたいした手間じゃないと
最初は踏んでたんですけど、
実際やってみると
なかなか厳しい部分がありますね。。。


C++の関数ポインタを、emscriptenではfunctionの配列として再現するようなんです。
これをJavaに直すにはどうすればいいか悩んだんですね。
Javaだとメソッドを配列に入れることはできませんから、まあ普通にやるなら
intefafeを作ってそれを実装したクラス郡を用意して、
それのインスタンスを配列に入れれば、
だいたい関数ポインタと似たような感じになります。
が、
なりますが、
用意するものがすごく多すぎてちょっとめんどくさいですよね。


そんな感じで
んーってうなりながら1ヶ月ぐらい考えてしまいました。


ちょっと発想を変えたほうがいいということで、
なんかもっと楽な方法はないかなーと考えんです。


そういえば、JVMで動く言語はJavaだけではないんです。
pythonとか、rubyとかもJVM上で動く処理系があったのを思い出しました。


それで調べてみたら、JavaScriptJVM上で動かす実装っていっぱいあったんですね。
Rhinoとかが代表的なようです。
Rhinoはライノーと読むらしいです。
JavaScriptのソースからclassファイルを生成するコンパイラか、インタプリタとして使えるらしいです。


ということは、

  1. C++エミュレータのソースを、emscriptenJavaScriptに変換する
  2. 変換されたJavaScriptのソースをDOMやCanvasに依存する部分などを修正する
  3. 修正したJavaScriptのソースをRhinoでclassファイルに変換する


という手順で、Javaに持っていけるような気がしてきました。
Rhinoで作ったclassファイルであっても、J2MEのベリファイアにかければ、DoJa(iアプリ)でも動くんじゃないかなあ?
このあたりは試してみる必要がある気がしますが、これがうまくいけば、かなり楽ができそうです。