AOSD 2005 Industry Track: Fri Mar. 18

Posted on March 21, 2005


The industry track concluded with Olaf Spinczyk’s presentation on Aspect C++. It’s been over ten years since I’ve done any real C++ development, so I attended mostly to get a sense of how adoption of the technology is going. I sometimes get asked about using AOP for C++ when people attend classes and tutorials I give, so it’s nice to know more about this implementation.

AspectC++ has had 500 downloads since they did a release on Feb. 10. Nokia has used it to weave into production Symbian OS code (cool). Siemens and Samsung are trying it out too. There are still some limitations (C++ is a beast of complexity, so adding AOP is taking time): they are focused on source-code weaving (cf. to cfront).

Sam Pullara was our "closer" and he did a great job presenting on VM-level AOP. He compared different stages of weaving and analyzed how they work.

Some interesting problems in load-time weaving he identified include:

  • serialization of woven classes might break (due to incompatible formats if not woven on both client & server)
  • reflection in woven classes might break (e.g., if the application iterates over all methods or fields, even synthetic ones)
  • there are possible incompatibilities when there’s more than one agent/weaver (e.g., will AspectJ aspects weave into Hibernate’s dynamically generated proxies?)
  • the presence of shared system class caches could cause problems for scoping aspects to affect specific classes (I need to learn more about this)
  • stack traces can have synthetic frames (minor inconvenience)
  • increased amount of memory required for analysis
  • increased classload time

Sam also argued for more expressive pointcuts, e.g., exposing BeanInfo information (which would be a better way to match getters and setters and events too).

Adrian has blogged a much more exhaustive summary.