© Excellent backgrounds/Shutterstock.com
Einführung in Apache Tamaya

Konfiguration in Java


Konfiguration erlaubt es, das Verhalten eines Softwaresystems in kontrollierter Art und Weise zu verändern, ohne dass eine Neuimplementierung notwendig ist. Dazu sind Design­entscheidungen darüber zu treffen, welche Aspekte konfigurierbar sind und welche eben nicht. Alles konfigurierbar zu machen, ist genauso sinnlos, wie alle Aspekte fest zu kodieren. Dennoch scheiden sich die Geister daran, was Konfiguration nun ist und wie sie gemanagt werden soll. Wir möchten mit dieser mehrteiligen Artikelreihe Licht ins Dunkel bringen.

Konfiguration ist ein häufiges und sehr facettenreiches Thema in der Softwarewelt. Auch wenn es bisher keine einheitliche Lösung für Konfiguration in Java gibt, wurden im letzten Jahr einige Anstrengungen unternommen, dies zu ändern. Daraus ist das neu gegründete Projekt Apache Tamaya [1] entstanden, mit dem eine Lösung für die vielfältigen Aufgaben der Konfiguration entwickelt werden soll.

Im Rahmen dieser Artikelreihe werden wir die Themen Konfiguration und Apache Tamaya genauer betrachten. Schnell wird sich zeigen, dass jeder eine Vorstellung davon hat, was Konfiguration ist und leisten soll. Unglücklicherweise werden sich kaum zwei Ansichten als deckungsgleich zeigen, was auch mit der Vielzahl der Anwendungsfälle zusammenhängt. In dieser Ausgabe werden wir uns zuerst sehr einfachen Einsatzszenarien im Java-SE-Umfeld widmen und dann im weiteren Verlauf immer neue Anforderungen aus anderen Einsatzbereichen, wie Java EE, Microservices und Cloud-basierten Anwendungen, hinzufügen. Ziel ist es, die Komplexität verständlich zu veranschaulichen, aber auch Gemeinsamkeiten aufzuzeigen. Diese erlauben es, Konfigurationsaspekte in einem Framework zu modellieren, so wie es aktuell mit Apache Tamaya gemacht wird.

Konfiguration mit Java SE

Lassen Sie uns zunächst die Konfigurationsmechanismen näher betrachten, die bereits mit Java geliefert werden. Das prominenteste Beispiel sind sicherlich .properties-Dateien, die sowohl in Textform als auch in xml-Form unterstützt werden. Dazu bietet die Klasse java.util.Properties Methoden, um einen entsprechenden InputStream zu lesen. Anschließend können die konfigurierten Werte mit getProperty(key) ausgelesen werden:

InputStream is = ...; Properties properties = new Properties(); properties.read(is); // properties.readXml(is);

Derselbe Mechanismus wird nun auch an anderen Stellen im JDK wiederverwendet, z. B. im Zusammenhang mit ResourceBundle oder dem java.util.ServiceLoader. Letzterer erlaubt es, Service...

Exklusives Abo-Special

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