Hatena::ブログ(Diary)

papamitra RSSフィード

2010-08-24

[][]ScalaのfjbgでHello,World

ScalaがBytecodeを作成するために使用しているfjbg(Fast Java Bytecode Generator)を使ってHello.classを作成してみた。

もちろん実行できる

$ ./fjbg.scala
$ java Hello
Hello,World

やってることはFJBGContextのJClassでHelloクラス作成。作成したクラスにaddNewMethodで<init>メソッド(コンストラクタ)とmainメソッドを追加。最後にHello.classに書き出して完成。

<init>とmainの中身は各emitXXXメソッドで追加している。

オペコードを直接扱っている感じがするのにもかかわらず、コンスタントプールについてはほとんど気にしなくていいのが良い。


ちなみにできたHello.classJava Decompilerデコンパイルするとこうなる。

import java.io.PrintStream;

public class Hello
{
  public static void main()
  {
    System.out.println("Hello,World");
  }
}