  This paper describes a new modelling language for the effective design of
Java annotations. Since their inclusion in the 5th edition of Java, annotations
have grown from a useful tool for the addition of meta-data to play a central
role in many popular software projects. Usually they are conceived as sets with
dependency and integrity constraints within them; however, the native support
provided by Java for expressing this design is very limited. To overcome its
deficiencies and make explicit the rich conceptual model which lies behind a
set of annotations, we propose a domain-specific modelling language. The
proposal has been implemented as an Eclipse plug-in, including an editor and an
integrated code generator that synthesises annotation processors. The language
has been tested using a real set of annotations from the Java Persistence API
(JPA). It has proven to cover a greater scope with respect to other related
work in different shared areas of application.
