A modelling language for the effective design of Java annotations

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 plugin, 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.

[1]  Ian F. Darwin,et al.  AnnaBot: A Static Verifier for Java Annotation Usage , 2010, Adv. Softw. Eng..

[2]  Andrew Phillips @composite: macro annotations for Java C , 2009, OOPSLA Companion.

[3]  Gerti Kappel,et al.  Bridging Java Annotations and UML Profiles with JUMP , 2014, MoDELS.

[4]  Eelco Visser,et al.  DSL Engineering - Designing, Implementing and Using Domain-Specific Languages , 2013 .

[5]  Frank Budinsky,et al.  EMF: Eclipse Modeling Framework 2.0 , 2009 .

[6]  Herbert Schildt Java: The Complete Reference , 1996 .

[7]  Tony Clark,et al.  Beyond Annotations: A Proposal for Extensible Java (XJ) , 2008, 2008 Eighth IEEE International Working Conference on Source Code Analysis and Manipulation.

[8]  Jordi Cabot,et al.  Model-Driven Software Engineering in Practice , 2017, Synthesis Lectures on Software Engineering.

[9]  Gerti Kappel,et al.  JUMP - From Java Annotations to UML Profiles , 2014, MoDELS.

[10]  Edoardo Vacchi,et al.  @Java: Bringing a richer annotation model to Java , 2014, Comput. Lang. Syst. Struct..

[11]  Renaud Pawlak,et al.  AVal: an Extensible Attribute-Oriented Programming Validator for Java , 2006, 2006 Sixth IEEE International Workshop on Source Code Analysis and Manipulation.