アスペクト指向プログラミングのための Java の最適なツールは何ですか?
ツールの要件はもちろん、IDE のサポート、表現力、適切なドキュメントです。
JBossAOPとAspectJは、AOPで一般的に使用される成熟したフレームワークの2つです。もう1つの人気のある選択肢はSpringAOPですが、他の2つの機能の一部が欠けています。
JBossAOPとAspectJはどちらも同様の機能を備えていますが、大きな違いの1つは、AspectJがJava言語の拡張機能に依存しているのに対し、JBossAOPは依存していないことです。
AOP要件がかなり単純な場合は、ASMなどのバイトコード操作ライブラリも検討する価値があります。ASMを使用して単純な「around-advice」(つまり、メソッド呼び出しの前後に挿入されるコード)を実装しましたが、JBossAOPのより軽量な代替手段であることがわかりました。ASMは、きちんと設計され、十分に文書化されています。
AspectJと申します。私の知る限り、IDE の部分は欠けていますが、ドキュメントと表現力は、私が見た AOP フレームワークの中で最高のものです。
すでにSpringを使用している場合、マネージオブジェクトはすでにAOPをサポートしています。AspectJほど柔軟ではありませんが、AspectJのようにコンパイル前の手順は必要ありません。
Spring AOP サポートについて。デフォルトでは、Spring の管理可能なオブジェクトにのみ関連し、AFAIK は AspectJ に基づいています。
まだ自分で確認していませんが、AOP やその他のオブジェクト (Tomcat での読み込み時間の織り込みなど) を使用できるようです。詳細はこちら。