Navigation Menu

Skip to content

koichiro/rava

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 

Repository files navigation

---------------------
	Rava / JavaVM on Ruby

		written by K.Sasada
			---------------------
	------------------------
-----------------------


■ 1 - Rava / JavaVM on Ruby

- Tue, 15 Oct 2002 09:47:06 +0900、初稿。

□ 1.1 なんじゃそりゃ

Ruby で書いた JavaVM です。JRuby ってあるじゃないですか。あれは、Java 
で Ruby インタープリタ動かすやつですけれども、これは、Ruby で Java バイ
トコードを動かします。

どう考えても、使う利点って(殆ど)無いような気もしますが。

誰か考えてそうで、だけど(その無意味さに)誰も作っていなかった(一応、Google
様は知らなかった)。

まぁ、ジョークの一つとしてご笑覧ください。

□ 1.2 つかうとうれしいひと

どんな人が使うとうれしいかと申しますと。

- JavaVM 勉強したいけど、ドキュメント読むの面倒だなぁ、Ruby 
  ソースのほうが、読むの楽だしぃ、という人(いるんかそんなの)
- もう、Ruby しか使いたくないけど、しょうがなく Java を使う人
  (うれしいのかほんとに)

少しまじめに(必死に利点を考えて)、

- Java ネイティブメソッドを書きたいけれど、プロトタイプを作りたい
  (Ruby スクリプトでネイティブメソッドかけるので、プロトタイプを作るのは便利かもしれない)

でも、たしか JRuby もそういうことできるんだよねぇ、確か。違ったっけ。

Java のプログラムが Ruby から呼べても、そんなうれしいこと無さそうな気が
するしなぁ。

□ 1.3 もくてき

自分の目的ですが。

- Ruby の練習
- JavaVM の復習
- 今後の研究のため(ほんとか?)
- 現実逃避(動機の 50% くらい)

□ 1.4 つかいかた

まず、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]
>

で、ネイティブメソッド定義用の雛を吐きます。

□ 1.5 だうんろーど

[[http://www.namikilab.tuat.ac.jp/~sasada/prog/raja001.lzh]]

Windows2000 Pro / ruby 1.6.7 mswin版 だけで動作確認しています。


□ 1.6 おやくそく

Ruby と同じライセンスでお願いします。(と言っておくと、面倒がないらしい
)。

原則、私に迷惑がかからないように。あとは好きにしてください。

バグ報告とか、利用報告とかあると、うれしく思います。

あ、著作権は放棄しません。というか、できません?

□ 1.7 もうできてること

とりあえず並べてみました。

- バイトコード半分くらい?
- メソッド呼び出し
- スタティックメソッド呼び出し
- フィールド読み書き
- スタティックフィールド読み書き
- ネイティブメソッドを ruby で書き書き
- クラスの解釈・表示
- 継承・ポリモフィズムの実現(メソッド呼び出しで出来上がってるってことだけど)

□ 1.8 まだできてないこと

とりあえず、まだたっくさんあります。

- バイトコード半分くらい?
- スレッド
- うごかないネイティブメソッドがごろごろ
- ネイティブメソッドのも〜っと簡単な追加
- jar アーカイブから直接クラスをロード
- 完璧なコード(バグが結構ありそう)
- 速さ(おせー・・・)
- テスト(どーやって作ればいいんだ、こんなものに)
- すてきな名前(Rava はかっこわるいぞ)
- まだまだありそう

□ 1.9 おもうこと

Ruby やっぱすごいわぁ。一週間、実質週末3日間だけでこれだけできちゃうん
だもんなぁ。

まじめな話、これでVMのナニが研究できるんじゃないかともくろんでます。と
りあえず、来年の仕事だけれど、それは。

まぁ、ジョークってことで一つ。

名前。JRuby の向こうを張って、RJava ってしたかったんだけれど、既に、rjava
, remote java っていうユーティリティがあるそうで断念。とりあえず Rava。
なんとなく、シムシティーの新聞を思い出しませんか?

Ruby と Java 、いったりきたりしてソース書いてると、だめっすね。とりあえ
ず Java がかけなくなった。文字列を''で囲んでみたり、';' を忘れてみたり。

拙いソースですが、改善点などあれば、ご教授いただければ幸いです。


■ 2 れんらくさき

ご意見、ご要望、ご苦情はこちらのメールアドレスへお願いします。

 sasada@namikilab.tuat.ac.jp

また、一時配布先は

 http://www.namikilab.tuat.ac.jp/~sasada/

のどこかにあると思います。


なお、本プログラムは、並木研究室とは、あまり関係がありません。

ささだの趣味です。

だけど、上に述べたとおり、研究で利用するかもしれません。

しないかもしれません。