Ruby で書いた JavaVM です。pure ruby です。ええ。
JRuby ってあるじゃないですか。あれは、Java で Ruby インタープリタ動かすやつ(らしい)ですけど、これは、Ruby で Java バイトコードを動かします。
どう考えても、使う利点って(殆ど)無いような気もしますが。
誰か考えてそうで、だけど(その無意味さに)誰も作っていなかった(一応、Google様は知らなかった。作っていた人がいたらごめんなさい)。
まぁ、ジョークの一つとしてご笑覧ください。
どんな人が使うとうれしいかと申しますと。
少しまじめに(必死に利点を考えて)、
でも、たしか JRuby もそういうことできるんだよねぇ、確か。違ったっけ。
Java のプログラムが Ruby から呼べても、そんなうれしいこと無さそうな気がするしなぁ。
自分の目的ですが。
まず、jdk とってきて、jdk/jre/lib/rt.jar を解凍して、*.class をばらしてください。固まってると、読めません。
んで、同じディレクトリに 例えば java/lang/* を置いておきます。そんで、適当に動かしたいものを javac で作ってください。あとは動かすだけです。
ruby rava.rb [java class name] [args 1] [args 2] ...
で、動きます。多分。
また、
ruby rjclass.rb [java class name]
で、クラスファイルの情報を、これでもか、ってくらい表示します。ちょっといいかげんだけど。
また、
ruby rjnative.rb [java class name]
で、ネイティブメソッド定義用の雛を吐きます。「〜はげ〜んき」など、言いません。
Windows2000 Pro / ruby 1.6.7 mswin版 だけで動作確認しています。
Ruby と同じライセンスでお願いします。(と言っておくと、面倒がないらしい)。
原則、私に迷惑がかからないように。あとは好きにしてください。
バグ報告とか、利用報告とかあると、うれしく思います。
あ、著作権は放棄しません。というか、できません?
とりあえず並べてみました。
とりあえず、まだたっくさんあります。
未実装部分を New! って言うなよ・・・。いや、ほんま忘れてたんです。
Ruby やっぱすごいわぁ。一週間、実質週末3日間だけでこれだけできちゃうんだもんなぁ。
まじめな話、これでVMのナニが研究できるんじゃないかともくろんでます。とりあえず、来年の仕事だけれど、それは。
まぁ、ジョークってことで一つ。
名前。JRuby の向こうを張って、RJava ってしたかったんだけれど、既に、rjava , remote java っていうユーティリティがあるそうで断念。とりあえず Rava。なんとなく、シムシティーの新聞を思い出しませんか?
Ruby と Java 、いったりきたりしてソース書いてると、だめっすね。とりあえず Java がかけなくなった。文字列を''で囲んでみたり、';' を忘れてみたり。
拙いソースですが、改善点などあれば、ご教授いただければ幸いです。
Sun のクラスファイルのライセンスって、どうなってるんですかね? 何も考えず、JRE のクラスを解凍して使ってたんですが。これ自体を配ってるわけじゃないから大丈夫だとは思うんですが、実際、それがないと動かないし。ネイティブコードの名前とか、勝手に使ってるし。うーん、どうなのかな? 識者のコメント求む。
Sasada Koichi / sasada@namikilab.tuat.ac.jp