パスワードを忘れた? アカウント作成
4126 story

Rubyで書かれたJavaVM 48

ストーリー by Oliver
脱帽 部門より

ruby-listメーリングリストにRubyで書かれたJavaVMのアナウンスがあった。Rubyには既にJRubyというJavaで書かれたRubyインタプリタがあるが、こっちはpure Rubyで書かれた、JDKが吐き出した .classファイルを実行するJavaVMだ。すごっ。まだまだ実装されていないバイトコードが残っていたりスレッド未対応だったりするが、簡単なJavaプログラムなら動いた。実用性は別にして、こういうハックを見るとわくわくする。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • びっくり (スコア:4, 興味深い)

    by K.S. (5353) on 2002年10月16日 23時38分 (#184492) 日記
    一応、あのページを書いた者です。
    まさか何時も見ている/.に載るような話題になるとは思いませんでした ^^;

    一週間で出来たのは、やっぱruby が素敵なの(これが一番)と、前に(C++で)作ったものがあるからと、GC とかはruby のがあるからいいやー、ってんで色々楽できたのと。規模的にも3000行くらい書いておわりですし(大半は自動生成したものだし)。

    記事にしてくださって、感謝。
  • あら? (スコア:2, 参考になる)

    by take0m (4948) on 2002年10月16日 20時15分 (#184349) 日記
    と思ったら、
    ここ [srad.jp]で見たのか・・・
  • 合わせ鏡 (スコア:2, おもしろおかしい)

    by Anonymous Coward on 2002年10月16日 20時16分 (#184351)
    Rubyで書かれたJava VM上で動くRubyで書かれたJava VM上で動くRubyで書かれた...
  • JIT (スコア:2, 興味深い)

    by kai_kamome (4560) on 2002年10月16日 21時08分 (#184401) ホームページ 日記
    JITで、Rubyのバイトコードへコンパイルされたりしないのでしょうか。。。

    # Javaで書かれたJavaVMのJITはJavaバイトコードからJavaバイトコードへコンパイル(?)するのだろうか。。

    それはそれとして、ほんちゃんのVMで走らせる前にRava使ってVMの内側からアプリのデバッグとかできると割りと楽しいかも。
    テストのカバレッジを計測するツールとか、すごく簡単に出来てしまいそうな気がするのは私だけでしょうか。
    --
    wild wild computing
    • Re:JIT (スコア:2, 興味深い)

      by K.S. (5353) on 2002年10月16日 23時57分 (#184504) 日記
      バイトコードでもいいんですが、とりあえず Proc化してしまえばいいのかなぁ、とか考えてます。

      デバッガ用途に、VM自体の拡張は容易かと思います(他のVMに比べたら)。
      ただ、私はJavaは殆ど書かない人間なので(笑)、どういうニーズがあるのかよくわかっておりません ^^;

      > # Javaで書かれたJavaVMのJITはJavaバイトコードからJavaバイトコードへコンパイル(?)するのだろうか。。

      うーん、どうやるんだろう ^^;
      親コメント
    • by babie (6656) on 2002年10月16日 23時41分 (#184494)
      Rubyのバイトコードのことは、
      Rite(Ruby2.0)がでるまで触れないで下さい...

      matzさん頑張ってください。

      #業務に使えないのが悲しい。
      #といいつつ、社内アプリはRubyで動いてたりして(^^;
      親コメント
    • by skamio (5870) on 2002年10月17日 11時54分 (#184731)
      > # Javaで書かれたJavaVMのJITはJavaバイトコードからJavaバイトコードへコンパイル(?)するのだろうか。。

      JITってターゲットCPUのマシンコードへコンパイルするんじゃないでしょうか?
      #考えてたら、なんか頭がこんがらがってきた。
      親コメント
      • Re:JIT (スコア:3, 参考になる)

        by nminoru (5013) <nminoruNO@SPAMnminoru.jp> on 2002年10月17日 12時59分 (#184760) ホームページ
        JIT=Just In Time なので、そのコードを実行する直前に
        コンパイルするなら何から何への変換でもいいです。

        ただ、Java で書かれた JavaVM の代表 IBM の Jalapeno VM [ibm.com]は、
        バイトコードからネイティブコード(PowerPC コード)への変換になります。

        ちなみに
        広義の JIT コンパイラは、静的なコンパイルを行う AOT(=Ahead Of Time)コンパイラに対応した概念ですが、狭義の JIT コンパイラは、フェッチしてきた命令を片っ端からコンパイルするようなちょっとお馬鹿なコンパイラを意味します。
        最近は、動的コンパイル(dynamic compilation) とか適応型コンパイル(adaptive compilcation)と呼ぶことの方が多くなってきています。

        # Ruby にも adaptive compilation を入れよう。
        --
        コンタミは発見の母
        親コメント
  • by boo (899) on 2002年10月16日 20時20分 (#184355) 日記
    1週間で出来たってところがすごいなぁ
    --
    あぁ、「ン」が消えてるんですよ。「ビーフン・カレー」ね。
    • Re:これだけのものが (スコア:1, おもしろおかしい)

      by Anonymous Coward on 2002年10月16日 23時51分 (#184500)
      よおし、父さんPerlのコードを走らせるぞぉ!

      alias puby ruby

      まだまだ実装されていないバイトコードが残っていたり
      スレッド未対応だったりするが、
      簡単な1linerなら動いた。

      #-M1お願いします...(恥
      親コメント
  • 役に立つ? (スコア:1, 興味深い)

    by dsuke (4690) on 2002年10月16日 20時29分 (#184363)
    JRubyは前から知ってましたが、
    私がつかっていたのは、Jython [sourceforge.net]でした。
    Javaって非常に良い設計なのですが、堅いというか、めんどくさいというか、
    とにかくタイプ量がおおいですよね。
    まあ、それが良い場合も多いのだけれど。
    ですから、簡単なテストやプロトタイプはスクリプトでさくっと書くと便利です。

    しかし、RubyからJavaのコードを呼んでそんなにうれしいことあるの?
    標準ライブラリを読み込むんじゃなくて
    既存のclassの流用が主目的なのかな?
    • Re:役に立つ? (スコア:2, すばらしい洞察)

      by Anonymous Coward on 2002年10月16日 22時48分 (#184452)
      あれげ

      であることが目的かと。。
      親コメント
    • by K.S. (5353) on 2002年10月16日 23時50分 (#184499) 日記
      (殆どの人に)役に立たないんじゃないかと思います

      まぁ、実用のために書いたもんじゃないってことで一つ ^^;
      (主な開発目的は面白そうだったから、(および現実逃避)です)

      ネイティブメソッドをrubyで書ける(rubyじゃなきゃ書けないとも言う)ってのは、メリットになるのかなぁ、ならないのかなぁと少し思うんですが、どうでしょうねぇ
      JNI なり JRuby (使ったことない)なりで出来そうな気はしますが、気楽には出来そうにないですよね、とか。ただ、気楽に書けてどうするって気もする
      親コメント
    • by Anonymous Coward
      > しかし、RubyからJavaのコードを呼んでそんなにうれしいことあるの?

      JavaVMは何で書かれていますか?

      #Cで書いてあるOSに何の意味がありますか?
      • by dsuke (4690) on 2002年10月16日 21時03分 (#184399)
        そんな険悪にいったつもりはないだけどな~ (^^;

        ただ単純に、どういう使い方が有用なのかなと思っただけです。
        別にPythonが好きというわけでもなく
        ただ、単にRubyよりもPythonを先にさわっただけ。
        むしろRubyのほうが書きやすいとさえ思う。
        あのインデントがなんとも。。。
        親コメント
        • by Anonymous Coward on 2002年10月16日 21時24分 (#184413)
          あのインデントがいいのに……
          親コメント
        • by Anonymous Coward
          しかし、RubyからJavaのコードを呼んでそんなにうれしいことあるの?

          この一文が一般に与える印象が険悪でないと心底から感じているのであれば文章の書き方というものを根本から見直すことをおすすめします。
          • by iwa (2980) on 2002年10月17日 1時59分 (#184584)
            > この一文が一般に与える印象が険悪でないと心底から感じているのであれば

            険悪な印象が皆無だったのは私だけですか?

            # 「メリットがある」「有用である」の意味で「うれしい」という表現を
            # するのをしばしば見かけますし、自分でもしばしば使います。
            # 大学んとき、中国系の助手のせんせがよくそういう表現を使って
            # いたのでそれに慣れた、というのもあるのですが……。
            親コメント
          • by Anonymous Coward
            >この一文が一般に与える印象が険悪でないと心底から感じているのであれば文章の書き方というものを根本から見直すことをおすすめします。 な~んていう人を見下したような一文の方がよっぽど感じ悪い罠。
            • by Anonymous Coward
              先の文が成り立つのは「険悪に言ったつもりはない」なんて文があってのことなんだよね。
              #184484は最初から険悪になるように書かれていることに気がつかず、流れを読まずに脊髄反射しちゃダメだよ。
              ま、ねらい通りだわな。
    • by Anonymous Coward
      で、結局何の役に立つのか。

      #役立たずでも、とりあえずやってみるって言うのも好きですが
  • by pantora (11989) on 2002年10月16日 20時34分 (#184368)
    ちと、考えてみた。
    Rava Swing
    Rava 3D
    Rava Servlet
    Rava Server Page

    あぁ、自己満足でしかない。。。
    面白いのは確かですね。
    --
    PCにECC Registeredメモリの利用を推奨します。
  • by tm_is_tm (10582) on 2002年10月17日 12時41分 (#184754) 日記
    Rubyで書かれたJavaコンパイラかな。
  • by K.S. (5353) on 2003年03月24日 20時23分 (#285349) 日記
    誰も見ないと思うので書いてみる。

    あさって全国大会というヤツでこれをネタに15分しゃべります。さて、何をしゃべればいいかと悩んでおります。

    やはり、学術的なことに昇華する必要があるらしいんで、何を主題に喋るか。いや、主題は大体決まってるんだけど。

    やっぱり「面白そうだからやりました」だけで済む世界で閉じればよかった、マヂでそう思う(笑)
typodupeerror

開いた括弧は必ず閉じる -- あるプログラマー

読み込み中...