Probekit は、スクリプト記述可能なバイトコード・インスツルメンテーション (BCI: byte-code instrumentation) によるフレームワークです。これを使用して、Java コード・フラグメントを作成し、これをプログラムに挿入することで、プログラムを実行しながらプログラムに関する情報を提供することができます。
Probekit ファイルには、1 つまたは複数のプローブを格納でき、各プローブを 1 つ以上のプローブ・フラグメントから構成することができます。指定されたプログラムで使用するプローブと、プローブ・フラグメントを実行する時期を指定することができます。
プローブ・フラグメントは一連の Java メソッドとしてまとめられ、その後コンパイルされます。プローブがコンパイルされると、プローブのコード・フラグメントが標準のボイラー・プレートと結合され、新しいクラス用の Java ソース・コードが生成されます。 プローブ・フラグメントから生成された関数は、生成されたプローブ・クラスの静的メソッドとして出力されます。
プローブが適用されると、BCI エンジンがプローブとそのターゲット・パターンのリストを参照して、プローブ・フラグメント・メソッドの呼び出しをターゲット・プログラムに挿入します。ターゲット・メソッドに呼び出しステートメントを挿入するプロセスを「インスツルメンテーション」と呼びます。 プローブ・フラグメントによって要求されるデータ項目 (例えば、メソッド名や引き数) は、引き数として渡されます。このシステムの利点の 1 つは、少ないオーバーヘッドで多数のターゲット・メソッドにプローブを挿入できることです。
クラス内のいずれかのメソッドがフィルター・ルールを満たし、インスツルメンテーションに適格であるとき、そのクラスを「プローブ実行済みクラス」と呼びます。