Methodik / Framework-WechselMigrationEE 8 -> EE 11

Migration Java EE javax.* nach Jakarta jakarta.*

Die große technische Bruchstelle ist der Paketwechsel von javax.* zu jakarta.* plus aktualisierte Server, Libraries, Deskriptoren und Tests.

Einordnung
Methodik / Framework-Wechsel
Enterprise-Rolle
Ohne kontrollierte Migration entstehen Classpath-Konflikte, Laufzeitfehler und uneindeutige Abhängigkeiten.
Diagramm zu Migration Java EE javax.* nach Jakarta jakarta.*

Fachliches Verständnis

Ohne kontrollierte Migration entstehen Classpath-Konflikte, Laufzeitfehler und uneindeutige Abhängigkeiten. In der Praxis ist wichtig, die Spezifikation nicht mit der konkreten Runtime zu verwechseln. Der Standard beschreibt die portablen APIs, die Implementierung entscheidet über Konfiguration, Performance, Betrieb und Support.

Kernkonzepte

  • Dependency Inventar.
  • Source Rewrite.
  • Bytecode/Third-party Prüfung.
  • Deployment Descriptor Update.
  • Integrationstests auf Zielruntime.

Typische Einsatzfälle

  • WebSphere/JBoss/GlassFish Legacy modernisieren.
  • Schrittweise Module umstellen.

Technisches Beispiel

bash
# Migrations-Checkliste in CI
mvn -q -DskipTests dependency:tree > target/dependencies.txt
jdeps --multi-release 21 target/*.war > target/jdeps.txt
# Imports transformieren, Descriptoren prüfen, Integrationstests gegen Zielruntime ausführen.
mvn verify -Pjakarta-ee-11,it-tests
Architekturregel: Jakarta APIs gehören an Systemgrenzen und Infrastrukturpunkte. Fachentscheidungen bleiben in Application Services und Domain-Modellen testbar und möglichst unabhängig vom Container.

Enterprise-Fallen

  • javax und jakarta in derselben API-Schicht mischen.
  • Nur Imports ersetzen und Tests sparen.
  • Vendor-Libraries vergessen.

Legacy-Modernisierung

Empfohlen ist ein Migrationspfad mit Inventar, automatisierter Transformation, Kompatibilitätstest, Rauchtests und fachlichen Regressionstests.

Vertiefung: Review-Fragen für Senior-Entwickler
  • Welche Spezifikation ist hier wirklich nötig?
  • Welche Runtime-Funktion wird genutzt und ist sie portabel?
  • Wo liegt die Transaktionsgrenze?
  • Sind API-Verträge, DTOs und Domain-Modelle getrennt?
  • Ist der Code ohne Application Server testbar?