BTraceを作った簡単なツールを作ってみるか
突然だけど、BTraceを使って、「対象クラス」を指定するだけで、
典型的なスクリプトを適用できるようなツールを作ってみようと思う。
やり方としては、対象クラスを設定ファイルに書いたうえで
- スクリプトのテンプレートを用意して、MessageFormatやテンプレートエンジンでマージしてコンパイル、適用する
- コンパイル済みのスクリプトを用意して、動的に対象クラスを差し替えられるようにする。
の2つが考えられる。
1つめの方が簡単にできそうだけど、多少なりともコンパイル時間が発生することを考えれば
2つめの方法でができた方が若干うれしい。ただ、2つめのの方法はBTrace自体の改造が必要になる。
、、、と思ってBTraceのソースを少し読んでみたんだけど、
そんな拡張ポイントが用意されているわけでもなく、
また、スクリプトはBTraceの中で最初にコンパイルされ、
以降はbyte配列として扱われているので、動的に書き換えるのも少し面倒だ。
あとVisualVMのBTraceプラグインのソースも若干読んで見たけど
net.java.btrace.visualvm.impl.BTraceEngineImpl#doStart(BTraceTask)
のあたりで、入力された文字列をコンパイルしている模様。
これは1つめの方法に近い。
ということで、まずは1つめの方法で実現してみることにした。