CCC: an Aspect-Oriented Intermediate Language


Aspect-oriented programming (AOP) is an emerging technique for modularizing crosscutting concerns, which cut across several basic modules. These concerns cannot be modularized with existing techniques such as object-oriented programming.

After AOP was first announced by Gregor Kiczales in ECOOP‘97, the AOSD tools and methodologies developed in a rapid speed, specially in Java area. Although.Net and Java are homologous, AOP tools on .Net platform are still in their experimental stage. For one thing, the .Net infrastructure is much more complex than Java, which makes the .Net languages, such as C#, have more language constructs than Java. Hence the mature AOP tools on Java platform can not port to .Net without redesign. For another, the .Net is languageindependent in its nature. So the AOP tool on .Net platform is better to also be language-independent, which brings many new problems.

The objective of our research is provide an infrastructure for implementing aspect-oriented language on .Net platform. To facilitate language implementation on .Net platform, Microsoft provides Microsoft Intermediate Language(MSIL). But MSIL does not support aspectoriented languages. To facilitate aspect-oriented language implementation on .Net platform, it is best to provide an aspect-oriented intermediate language. We designed an aspect-oriented intermediate language called CCC on .Net platform. CCC stands for Common language Cross Cutter. Any aspect-oriented .Net language could first be transformed to CCC and then woven by CCC compiler. Since CCC supports high-level aspect-oriented language constructs directly, such as aspect, there is a little work to do for language implementation and the developers could concentrate on language design.



The current implementation of CCC, together with several examples, can be downloaded here.