谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

BTraceを作った簡単なツールを作ってみるか

突然だけど、BTraceを使って、「対象クラス」を指定するだけで、
典型的なスクリプトを適用できるようなツールを作ってみようと思う。


やり方としては、対象クラスを設定ファイルに書いたうえで

  1. スクリプトのテンプレートを用意して、MessageFormatやテンプレートエンジンでマージしてコンパイル、適用する
  2. コンパイル済みのスクリプトを用意して、動的に対象クラスを差し替えられるようにする。

の2つが考えられる。


1つめの方が簡単にできそうだけど、多少なりともコンパイル時間が発生することを考えれば
2つめの方法でができた方が若干うれしい。ただ、2つめのの方法はBTrace自体の改造が必要になる。


、、、と思ってBTraceのソースを少し読んでみたんだけど、
そんな拡張ポイントが用意されているわけでもなく、
また、スクリプトはBTraceの中で最初にコンパイルされ、
以降はbyte配列として扱われているので、動的に書き換えるのも少し面倒だ。


あとVisualVMのBTraceプラグインのソースも若干読んで見たけど
net.java.btrace.visualvm.impl.BTraceEngineImpl#doStart(BTraceTask)
のあたりで、入力された文字列をコンパイルしている模様。
これは1つめの方法に近い。


ということで、まずは1つめの方法で実現してみることにした。