The Alpha Project
Alpha is a new aspect-oriented language with a powerful and open pointcut language that exploits information from different models of program semantics, such as the execution trace, the syntax tree, the heap, static type system, etc., and supports abstraction mechanisms analogous to functional abstraction. This rich join point model and the powerful abstraction mechanisms of the pointcut language considerably raise the abstraction level and modularity of pointcuts. With Alpha pointcuts one can declaratively and concisely quantify over the execution of a program.
Subprojects
Gamma
Gamma is an experimantal pointcut language based on Alpha's, but with the ability to reason about future events in the execution in addition to the whole history.
The implementation is available on reques.t
Alpha Interpreter
The Alpha interpreter implements the Alpha pointcut language using a simple object oriented programming language similar to the L2 calculus. This implementation serves as a base for experimenting with new language features and optimizations.
The implementation source code can be downloaded in the Downloads section below.
AlphaJ
The AlphaJ project aims at using the power of the Alpha pointcut language on top of the Java programming language.
The AlphaJ project is currently under development and yet there is no version available for downloading.
Related Publications
Partial Evaluation of Pointcuts
Proceedings of the Ninth International Symposium on Practical Aspects of Declarative Languages (PADL), Springer, January 2007
[foal.pdf]
Expressive Pointcuts for Increased Modularity
European Conference on Object-Oriented Programming (ECOOP'05), Springer LNCS, 2005
[foal.pdf]
Back to the Future: Pointcuts as Predicates over Traces
In Proceedings of the Workshop on Foundations of Aspect-Oriented Languages (FOAL'05), Chicago, USA, 2005.
[foal.pdf]
Downloads
| Alpha interpreter |
The source code of the Alpha interpreter written in Java together with some example Alpha programs. (This version is a bit outdated and will be replaced by a new version soon.) This version requires SWI-Prolog to be installed and the Java-Prolog-Bridge JPL to be in the classpath. |
| Examples |
We implemented the Display-Updating problem in different versions: firstly an object oriented version in Java, secondly two aspect oriented versions in AspectJ which simply localize the updating functionality in an aspect with the same behavior as the object oriented version. And finally an aspect oriented version in AspectJ realizing the updating behavior in a robust and precise way which can be expressed declaratively as a pointcut in Alpha. For more information, see the Paper "Expressive Pointcuts for Increased Modularity" and the readme file in the archive. The archive contains an eclipse project, but the directory "src" also simply contains the sources which can be used with other development tools. |
Contact
If you have any questions about or comments on Alpha or comments, please contact

