(アスペクトのインスタンス化 != インスタンスレベルアドバイスウィービング) ???

*** 書きかけ ***

ふむ。インスタンスレベルでアドバイスをウィービングしたい動機は、直感的にわかるけど、アスペクトインスタンス化する動機は、何だろう? いや、アスペクトインスタンス化してはいけない、という意味じゃなくて、なんか、こう、違和感を感じる。具体的には、どうしてかはわからないけど、感じる。

AspectJ では、アスペクトインスタンス化は、基本的にはできない。なんで基本的に、って書いたかというと、実際にはできる方法があるから(バグかどうかは知らない)。privileged を使えば、インスタンス化は可能。

たとえば、CAESAR だと、deploy するときに、アスペクトインスタンス化する


...
deploy( new MyAspect() ) {
// この中だけアスペクトが有効
}
...
インスタンスレベルは(実際の構文はこんな感じじゃないらしいので注意)、

...
deploy( new MyAspect() on targetObj) { // targetObj のみアドバイスが有効

}
...

EOS だと(使ったことないからよくわからんけど)


public instancelevel aspect MyAspect {
}
からしい。よくわからん。

話はちょっとかわって・・・AspectJ を使い始めた当初は、アスペクトのコードが、実際のコード内に現れることは、何か違和感を感じていた。


public class MyClass {
public void m() {
LoggingAspect.m(); // なにか
}
}


参考

  • M. Mezini and K.Ostermann. Conquering Aspects with Caesar. the 2nd International Conference on Aspect-Oriented Software Development

http://www.st.informatik.tu-darmstadt.de/public/Publications.jsp

  • M. Haupt, C. Bockisch, M. Mezini, K. Ostermann. Towards Aspect-Aware Execution Models. Technical Report TUD-ST-2003-01.

http://www.st.informatik.tu-darmstadt.de/public/Publications.jsp

  • Hridesh Rajan and Kevin Sullivan. Need for Instance Level Aspect Language with Rich Pointcut Language

http://www.daimi.au.dk/~eernst/splat03/

  • Hridesh Rajan and Kevin Sullivan. Eos: Instance-Level Aspects for Integrated System Design

http://www.cs.virginia.edu/~eos/Publications.htm