Legacy Java EE Support und Modernisierung
Viele Enterprise-Anwendungen sind seit zehn, fünfzehn oder zwanzig Jahren produktiv. Sie erfüllen weiterhin eine wichtige Aufgabe, lassen sich aber nicht ohne Weiteres ersetzen.
Gleichzeitig wird es schwieriger, sie zuverlässig weiterzuentwickeln. Das Wissen über die Anwendung konzentriert sich auf wenige Personen, frühere Entwickler verlassen das Unternehmen und ältere Frameworks oder Laufzeitumgebungen müssen mit heutigen Sicherheits- und Infrastrukturvorgaben in Einklang gebracht werden.
Ich unterstütze Teams bei der Weiterentwicklung und technischen Modernisierung bestehender Java-EE-Anwendungen oder übernehme diese vollständig.
Ich habe beides erfolgreich gemacht: als Teil eines Teams gearbeitet und die Verantwortung für eine Anwendung vollständig übernommen. Am liebsten habe ich jedoch mindestens eine Ansprechperson auf Augenhöhe, die ein bis zwei Stunden pro Woche für Austausch, Abwägungen und Prioritäten einplanen kann. So entstehen meist die besseren Entscheidungen – und Zusammenarbeit macht einfach mehr Spaß.
Assessment
Ich arbeite mich in bestehende Codebasen ein – auch dann, wenn die Dokumentation unvollständig ist oder ganz fehlt, zentrale Entscheidungen viele Jahre zurückliegen und die Menschen, die ihre Hintergründe erklären könnten, nicht mehr verfügbar sind.
Zunächst geht es darum, das System so weit zu verstehen, dass auch substanzielle Änderungen kontrolliert und mit vertretbarem Risiko umgesetzt werden können.
Fehler beheben und Funktionen weiterentwickeln
Eine Legacy-Anwendung ist kein abgeschlossenes System. Fachliche Anforderungen ändern sich, neue Schnittstellen werden benötigt und bestehende Funktionen müssen angepasst werden.
Ich unterstütze bei:
- Fehleranalyse und Fehlerbehebung
- Analyse schwer nachvollziehbarer Produktionsprobleme
- Stabilisierung problematischer Bereiche
- Umsetzung neuer Anforderungen
Abhängigkeiten und Laufzeitumgebungen aktualisieren
Auch wenn die Anwendung selbst bestehen bleibt, kann ihre technische Basis nicht dauerhaft unverändert bleiben.
Ich unterstütze unter anderem bei:
- Updates von Java und Jakarta EE
- Migrationen auf aktuelle JBoss- und WildFly-Versionen
- Aktualisierung von Struts (auch Upgrade von Struts 1 auf 2)
- Aktualisierung von Hibernate
- Austausch nicht mehr unterstützter Bibliotheken
- Behebung von Kompatibilitätsproblemen nach Updates
Sicherheitsprobleme und CVEs bearbeiten
Ältere Java-Anwendungen enthalten häufig umfangreiche Abhängigkeitsbäume. Eine gemeldete Schwachstelle lässt sich deshalb nicht immer durch ein einfaches Versionsupdate beheben.
Ich analysiere, ob und wie eine Anwendung betroffen ist, welche Abhängigkeiten aktualisiert werden müssen und welche Anpassungen notwendig sind, damit sie anschließend weiterhin zuverlässig funktioniert.
Moderne Systeme integrieren
Bestehende Anwendungen müssen zunehmend mit neuer Infrastruktur zusammenarbeiten – etwa mit moderner Authentifizierung, neuen APIs oder zentralen Plattformdiensten.
Je nach Ausgangslage kann das durch eine direkte Anpassung, eine schrittweise Migration oder einen kompatiblen Adapter geschehen.
In einem meiner Projekte habe ich beispielsweise für eine historische Authentifizierungsschnittstelle einen Adapter für Keycloak entwickelt. Bestehende Legacy-Anwendungen konnten ihre bisherige Schnittstelle weiterverwenden, während die zentrale Authentifizierung modernisiert wurde.
Modernisieren, ohne den laufenden Betrieb aus den Augen zu verlieren
Nicht jede Anwendung braucht sofort einen vollständigen Rewrite.
Welche Teile aktualisiert, ersetzt oder zunächst bewusst beibehalten werden sollten, hängt von der konkreten Anwendung und ihrer geplanten Lebensdauer ab.
Ich entwickle dafür keine abstrakte Zielarchitektur auf dem Reißbrett, sondern gehe schrittweise vor: die vorhandene Anwendung verstehen, akute Probleme lösen und ihre technische Basis dort modernisieren, wo es für Betrieb, Sicherheit und Weiterentwicklung notwendig ist.
Technologien
Mein Schwerpunkt liegt auf historisch gewachsenen Enterprise-Webanwendungen, unter anderem mit:
- Java EE und Jakarta EE
- Struts 1 und 2, Servlets
- JSP und Freemarker
- Hibernate
- JBoss und WildFly
Erfahrung mit gewachsenen Systemen
Mich interessieren gerade die Systeme, bei denen man sich zunächst orientieren, Zusammenhänge rekonstruieren und einen gangbaren Weg durch historisch gewachsene Strukturen finden muss.
Agentic Engineering hilft mir heute, große Codebasen schneller zu untersuchen, Abhängigkeiten nachzuvollziehen und Änderungen vorzubereiten. Entscheidend bleibt jedoch die Erfahrung, um Ergebnisse einzuordnen, Risiken zu erkennen und Änderungen so umzusetzen, dass die Anwendung anschließend zuverlässig weiterläuft.
Sie benötigen Unterstützung für eine bestehende Java-Anwendung?
Für Projektanfragen oder ein erstes Gespräch: raphael.kirchner@customwebcode.com