
Java & Spring: über 15 Jahre Erfahrung als Fundament für Softwarearchitektur
Seit mehr als 15 Jahren entwickle ich mit Java, und das Spring Framework begleitet mich fast genauso lange. Diese Erfahrung ist keine Station im Lebenslauf, sondern das Fundament, auf dem meine heutigen Architekturentscheidungen stehen.
- Backend-Systeme mit klarer Struktur und sauber getrennten Zuständigkeiten
- Architekturentscheidungen, bei denen Wartbarkeit von Anfang an mitgedacht wird
- Wissenstransfer zwischen sehr unterschiedlichen Projektkontexten – vom IT-Dienstleister bis zum Großunternehmen
Java als Konstante über wechselnde Stationen
Mein beruflicher Weg führte mich durch ganz unterschiedliche Umfelder: comSysto, kernpunkt und codecentric auf der Seite der IT-Dienstleister, Audi und MAN auf der Seite der Großunternehmen. Jede dieser Stationen brachte andere Anforderungen, andere Teams und andere Rahmenbedingungen mit sich. Bei IT-Dienstleistern wechseln Kunden und Fachdomänen häufig, in Konzernen stehen gewachsene Systemlandschaften, lange Lebenszyklen und viele Beteiligte im Vordergrund.
Java war in dieser Zeit die Konstante. Gerade weil die Sprache und ihr Ökosystem in all diesen Kontexten verbreitet sind, ließen sich Erfahrungen von einem Projekt ins nächste übertragen. Was sich in einem Umfeld als tragfähiges Muster bewährt hatte, konnte in einem anderen erneut geprüft und angepasst werden. So entsteht über die Jahre ein Erfahrungsschatz, der weniger an einzelnen Projekten hängt als an wiederkehrenden Fragen: Wie schneidet man ein System sinnvoll? Wo gehört welche Verantwortung hin? Was macht Code auch nach Jahren noch verständlich? Mehr dazu auf der Seite zur Softwarearchitektur.
Wie sich Spring über die Jahre verändert hat
Wer Spring so lange nutzt, hat die Entwicklung des Frameworks selbst miterlebt. In den frühen Jahren wurde eine Spring-Anwendung überwiegend über umfangreiche XML-Dateien konfiguriert: Beans, ihre Abhängigkeiten und ihr Zusammenspiel standen explizit in der Konfiguration. Mit der Zeit setzten sich Annotationen und Java-basierte Konfiguration durch, die Konfiguration rückte näher an den Code. Spring Boot hat diesen Weg schließlich konsequent weitergeführt – mit sinnvollen Voreinstellungen, Auto-Konfiguration und eigenständig lauffähigen Anwendungen, die sich deutlich schneller aufsetzen lassen.
Diese Entwicklung miterlebt zu haben, ist mehr als eine historische Randnotiz. Wer weiß, was Spring früher explizit verlangt hat, versteht besser, was Spring Boot heute im Hintergrund automatisch erledigt. Das hilft, wenn eine Auto-Konfiguration nicht das tut, was man erwartet, und es schärft den Blick dafür, welche Konventionen man übernehmen und wo man bewusst abweichen sollte.
2011: Certified Spring Professional – das Framework systematisch verstehen
Im Jahr 2011 legte ich die Zertifizierung zum SpringSource Certified Spring Professional ab, damals auf Basis von Spring 3.0. Der eigentliche Gewinn lag weniger im Zertifikat selbst als in der Vorbereitung darauf. Im Projektalltag lernt man typischerweise genau die Teile eines Frameworks, die das aktuelle Vorhaben gerade braucht. Die Prüfungsvorbereitung zwang mich dagegen, Spring systematisch und in der Breite durchzuarbeiten – auch die Bereiche, die in meinen eigenen Projekten bis dahin keine Rolle gespielt hatten.
Dieses systematische Verständnis zahlt sich langfristig aus. Es macht den Unterschied, ob man ein Framework nur benutzt oder ob man seine Konzepte und Designentscheidungen nachvollziehen kann. Genau dieses Verständnis ist die Voraussetzung, um Spring auch in neuen, unbekannten Situationen sicher einzusetzen.
Was 15 Jahre Java und Spring für Architekturentscheidungen bedeuten
Die über mehr als 15 Jahre gewachsene Erfahrung mit Java und Spring ist bis heute die Grundlage, auf der ich Architekturentscheidungen treffe. Drei Themen ziehen sich dabei durch:
Struktur: Ein System braucht eine nachvollziehbare Gliederung, damit neue Teammitglieder sich zurechtfinden und Änderungen an der richtigen Stelle landen. Klare Zuständigkeiten: Jede Komponente sollte eine erkennbare Aufgabe haben – ein Prinzip, das Spring mit Dependency Injection und dem Denken in klar abgegrenzten Bausteinen seit jeher fördert. Wartbarkeit: Software lebt meist deutlich länger als das Projekt, in dem sie entsteht. Die Frage, wie leicht sich ein System in einigen Jahren noch ändern lässt, gehört deshalb von Beginn an auf den Tisch.
Gerade die Kombination aus langjähriger Praxis in wechselnden Umfeldern und einem systematischen Verständnis des Frameworks macht diese Erfahrung belastbar: Sie beruht nicht auf einem einzelnen Projekt, sondern auf Mustern, die sich über viele Jahre und unterschiedliche Organisationen hinweg bewährt haben. Im Betrieb laufen diese Anwendungen heute häufig containerisiert, siehe die Seite zu Cloud & Infrastruktur.
- SpringSource Certified Spring Professional (Spring 3.0), 2011