2007年12月8日土曜日

JavaRebelを試す。

昨晩のエントリで書いたJavaRebelを試してみた。
  1. まずはDownloadPagejavarebel-1.0.zipをDownloadする。
  2. EclipseでProjectを一つ作成し、そのフォルダにdownloadしたzip内の「javarebel.jar」を配置する。
  3. 次のようなClassを作成する。ボタンとラベルを配置したFrameを作成し、ボタンをClickすると「Hello.」と表示するだけの簡単なプログラム。
    package shin1o;
    
    @SuppressWarnings("serial")
    public class MyFrame extends javax.swing.JFrame {
        javax.swing.JLabel label;
    
        @SuppressWarnings("serial")
        public MyFrame() {
            label = new javax.swing.JLabel("messages.");
            javax.swing.JButton button = new javax.swing.JButton(
                    new javax.swing.AbstractAction() {
                        public void actionPerformed(java.awt.event.ActionEvent e) {
                            label.setText("Hello.");
                        }
                    });
            button.setText("click me.");
            setDefaultCloseOperation(DISPOSE_ON_CLOSE);
            getContentPane().setLayout(new java.awt.FlowLayout());
            setTitle("MyFrame");
            add(label);
            add(button);
            setSize(300, 75);
        }
    
        public static void main(String[] args) {
            new MyFrame().setVisible(true);
        }
    }
  4. Eclipseの「Run」「Open Run Dialog」で実行の構成を作成し、「Arguments」タブの「VM arguments」に
    -javaagent:javarebel.jar
    を設定し、「Run」で実行する。Debugではなくて実行。
  5. 上記の説明に書いたようなSimpleなFrameが表示されるはず。
  6. ButtonをClickすると、Labelのメッセージが「messages」から「Hello.」に変わる。
  7. この状態で、Eclipse上のソースを修正する。例えば、Helloの文字を別のモノに変えて、保存する。
  8. そして、実行画面でもう一度ButtonをClickすると修正後の動作になる。ClassがDynamicLoadされたのがわかる。
  9. さらに、例えば「Messages」等の新たなClassを作成し、そこへ新たに追加したstaticメソッド「getMessage()」等からメッセージを取得するように修正する。
  10. これもDynamicLoadの効果で動作中のプログラムに反映される。
  11. static でfinalなフィールドを用意し、それをメッセージとして使用してももちろん大丈夫!
  12. ただし、ResourceBundle#getBundle()で取得しているようなリソースはダメ。
でも便利かも!!

Blogged with Flock

コメントを投稿