Jakarta Enterprise Landkarte: Plattform, Profile, Spezifikationen, Runtimes
Jakarta EE ist kein einzelnes Framework, sondern eine standardisierte Enterprise-Java-Plattform aus Profilen und einzelnen Spezifikationen. Die konkrete Laufzeit kommt von Implementierungen wie GlassFish, Open Liberty, WildFly, Payara oder TomEE.
Fachliches Verständnis
Diese Landkarte hilft dir, alte Java-EE-Systeme und moderne Jakarta-EE-Anwendungen sauber zu lesen: Was ist Standard? Was ist Runtime? Was ist Fachcode? Was ist Vendor-Konfiguration? 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
- Platform Profile enthält die breite Enterprise-Plattform.
- Web Profile fokussiert Webanwendungen.
- Core Profile zielt auf kleinere Microservice-Runtimes.
- Einzel-Spezifikationen wie CDI, REST, Servlet, Persistence oder Messaging definieren Verträge.
- Runtimes implementieren diese Verträge und liefern Betriebseigenschaften.
Typische Einsatzfälle
- Modernisierung von Java EE 7/8 nach Jakarta EE 10/11.
- Bewertung, ob ein System Web Profile, Core Profile oder volle Platform braucht.
- Trennung von portierbarem Fachcode und serverabhängiger Konfiguration.
Technisches Beispiel
Jakarta Enterprise Merksatz
Spezifikation: definiert Standard und API-Vertrag.
Framework: ruft deinen Code nach Lifecycle und Konvention auf.
Library: wird gezielt von deinem Code verwendet.
Runtime: implementiert Spezifikationen und betreibt Deployments.
Beispiel:
Jakarta RESTful Web Services = Spezifikation/Framework-API
Jersey, RESTEasy, CXF = Implementierungen
Open Liberty, WildFly, GlassFish = Runtime/Server
Enterprise-Fallen
- Jakarta EE mit einem konkreten Server verwechseln.
- Spezifikation und Implementierung vermischen.
- Alte javax.*-Pakete unkoordiniert mit jakarta.* mischen.
Legacy-Modernisierung
Java EE 8 nutzt javax.*; Jakarta EE 9+ nutzt jakarta.*. Migrationen sollten kontrolliert über Dependencies, Bytecode, Imports, Tests und Deployment Descriptor erfolgen.
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?