What is JAMI?
JAMI is a metamodel of aspect languages. The goal of this metamodel is to facilitate the implementation of (your own) “experimental” aspect languages, without having to reinvent everything from scratch, as the meta model already defines many common (aspect) language constructs and their implementation. More precisely, the meta model provides you with the following:
- Common “design dimensions” that are relevant to the implementation of aspect languages; these dimensions each define some commonly used concepts for that dimension, including their semantics. You can refine these by extending the meta model, if needed.
- Each concept represented in the meta model specifies/implements the semantics of that given construct. Using an interpreter (also included) you can actually “run” aspect programs which are built from instances of the concepts defined by the meta model. The meta model defines, in a sense, an operational semantics. You can specify alternative semantics for a construct, by refining it in the meta model and specifying different semantics in its implementation.
Why would I want to use it?
If you are developing aspect oriented programming languages, you may sometimes want to test a new language feature, or perhaps experiment with a domain specific (aspect) language. In such cases, the meta model and interpreter may help you to quickly build a working prototype of your language, so that you can test (using real programs written in your aspect language) whether your idea works in practice - without dealing (at that point) with complicated machinery such as bytecode manipulation, weaving, and the like.
An additional use of the metamodel is to facilitate the writing of (static) checking tools that detect common problems related to aspects (e.g. advice ordering at shared joinpoints), at a metamodel level. That is, such tools could be made language-independent, at least to a certain extent.
Who wrote JAMI?
Designing and implementing this metamodel was possible thanks to funding by the European Network of Excellence on AOSD. Defining the initial language dimensions and concepts within the metamodel was done collaboratively by several partners within this research project, most notably by people from the Vrije Universiteit Brussel, the Technische Universität Darmstadt, the INRIA institute, and the University of Twente.