JDI入門 その1
あー、プログラムネタを思いついた。
JDIの日本語で解説してるHPとかないから、それを書こう。
うん、需要はなさそうだが。
以下超マニアックゆえ、お好きな方だけどうぞ・・・。(笑
入門その1
まずは、JDIって何?からか。
JDIとは、JavaDebugInterfaceの略ですな。
ほらほら、Eclipseとか使ってる人にはおなじみ、ブレークポイント設定したり、
変数の中身がりがり読んだり、そういうのやるためのAPI。
まー、多分あんまり必要としてる人はいないと思うけど(笑。
たまにはマニアックな内容を書こうと。
んで。まずは、VirtualMachineを起動できないとね。
最初の1歩。まず、jarにPath通さないとね。
JDK 5.0だとJDKをインストールしたときに、一緒についてくるlib\tools.jarにPathをとーしましょう。
さて。まずは、サンプルコード。
public class JdiTest { public static void main(String[] args) throws IOException, IllegalConnectorArgumentsException, VMStartException { LaunchingConnector connector = Bootstrap.virtualMachineManager().defaultConnector(); Maparguments = setupArguments(connector); VirtualMachine vm = connector.launch(arguments); vm.resume(); } private static Map setupArguments(Connector c) { Map map = c.defaultArguments(); Connector.Argument argument = map.get("main"); argument.setValue("HelloWorld"); return map; } }
import文は省略。
まー、プログラムの解説から。
至極単純。HelloWorldっていうクラスを動かす。それだけ。
ただし、標準IOのリダイレクトとかやってないので、表示とかしないけどね。
んーで、上の行から解説。
まず、メイン関数。
JVMはまず、コネクトを張ります。いろいろ方法はある(らしい)けど、とりあえず楽なのは、最初の1行。これでコネクトを張るオブジェクトが取ってこれる。
次は、VMの引数を指定する。これ、とりあえずメソッド化で、後回し。
最後は、VMのオブジェクトを生成して、VM.resume()しましょう。これで、起動。
んで、メソッド化した分。
defaultの引数をとってきて、"main"にHelloWorldを指定する。
まー、こんなもんだね。
次はなんにしようかねぇ。