© Excellent backgrounds/Shutterstock.com
Java-Annotationen und Software-Engineering

Wolf im Schafspelz?


Annotationen haben das Potenzial, langfristig die Wartbarkeit von Software empfindlich zu beeinträchtigen. Hinter ihrer einfachen Form kann sich eine faktisch unbeschränkte Funk­tionalität verbergen, die es sogar ermöglicht, grundlegende Prinzipien der objektorientierten Programmierung außer Kraft zu setzen. Im Beitrag werden einige Aspekte dieser Gefahr genauer dargestellt. Angesichts der inzwischen kaum wieder zurücknehmbaren Entwicklung kann verantwortungsvolle Programmierung nur darin bestehen, Annotationen diszipliniert und mit Bedacht einzusetzen.

Die Einführung von Annotationen in Java 5 hat – weitgehend unbeachtet – eine Entwicklung eingeleitet, deren Konsequenzen nur schwer absehbar sind. Wahrscheinlich wird es niemand ernsthaft in Betracht ziehen, aber rein technisch gesehen ist es kein Problem, jedes Programm in die in Listing 1 gezeigten Formen zu bringen. Die eigentliche Funktion wird dann in speziellen Annotationsprozessoren und Laufzeitbibliotheken verborgen.

Selbstverständlich ist das eine sehr extreme Verwendung von Annotationen. Aber sie zeigt, dass es nützlich ist, sich mit diesem Sprachelement genauer zu befassen.

Listing 1

import magic.annotation.handling.Execute; @Execute public class Main {} // oder @Execute("Hier steht irgendein Text," + "der bestimmt, was gemacht werden soll" + " – muss nicht sinnvoll lesbar sein") public class Main{}

Was sind Annotationen?

Annotationen sind deklarative Sprachelemente. Syntaktisch gesehen haben sie ihre Wurzeln in den „Tagged Paragraphs“ der Dokumentationskommentare, wie sie in der Urversion der Java-Sprachspezifikation (JLS) beschrieben werden (Abschn. 18.4.1 ff.). Bei der ersten Revision wurden die Dokumentationskommentare aus der Sprache verbannt und der Spezifikation des entsprechenden Werkzeugs (javadoc) zugeordnet. In der dritten JLS-Ausgabe findet sich erstmals der Begriff Annotation: „An annotation is a modifier consisting of the name of an annotation type (§9.6) and zero or more element-value pairs, each of which associates a value with a different element of the annotation type. The purpose of an annotation is simply to associate information with the annotated program element.“ [1].

Seitdem sind die Möglichkeiten und die Verarbeitung von Annotationen mit jeder neuen Version erweitert und verändert worden. Gleichzeitig wurde versucht, die Beschreibung zu verallgemeinern: „An annotation is a marker which associates information with a program construct, but has no effect at run time. An a...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang