Framework-/Library-Entscheidungskatalog V3
Eine große Entscheidungsmatrix hilft, Framework, Library, Spezifikation und Tool sauber zu unterscheiden.
MatrixFramework vs LibraryEntscheidung
In dieser Datei
Entscheidungsmodell
Eine Library löst meist ein fokussiertes Problem. Ein Framework gibt Struktur, Laufzeitmodell und Integrationspunkte vor. Eine Spezifikation definiert Verträge, die mehrere Implementierungen erfüllen können. Ein Tool unterstützt Build, Test, Analyse oder Betrieb.
Matrix
| Name | Typ | Einsatz | Wann passend |
|---|---|---|---|
| Spring Boot | Framework | Service Runtime | Schneller produktiver Service mit großem Ökosystem |
| Jakarta EE | Spezifikation/Plattform | Standardisierte Enterprise Runtime | Portabilität und zertifizierte Standards wichtig |
| Quarkus | Framework | Cloud-native Runtime | Container, OpenShift, schneller Start |
| MicroProfile | Spezifikation | Cloud-native APIs | Health, Config, Fault Tolerance, JWT, OpenAPI |
| Micronaut | Framework | Compile-time DI/Microservices | Schneller Start, geringe Reflection |
| Hibernate ORM | Framework/ORM | Persistenz | Komplexe Objekt-Relationen und JPA |
| MapStruct | Library | Mapping | Explizites, schnelles DTO-Mapping |
| Flyway | Tool/Library | DB Migration | Lineare SQL-Migrationen |
| Liquibase | Tool/Library | DB Migration | ChangeSets, mehrere DB-Typen |
| Testcontainers | Library | Integrationstests | Echte DB/Broker im Test |
| OpenTelemetry | SDK/Standard | Observability | Traces, Metrics, Logs kontextualisieren |
| ArchUnit | Library | Architekturtests | Regeln im Build prüfen |
Regeln
- Erst Problem beschreiben, dann Technologie wählen.
- Framework-Code an den Rand legen.
- Libraries bevorzugen, wenn ein Problem eng ist.
- Bei Spezifikationen Implementierung und Versionsstand prüfen.
- Lizenz, Security und Wartbarkeit in die Entscheidung aufnehmen.
Beispiel
| Problem | Empfehlung | Begründung |
|---|---|---|
| Viele CRUD-/API-Services | Spring Boot oder Quarkus | Produktive Runtime und Betriebsintegration |
| Standardisierte App-Server-Landschaft | Jakarta EE | CDI/JTA/JAX-RS/JPA als Standards |
| Komplexes DB Mapping | Hibernate/JPA | Bewährtes ORM, aber Fetching bewusst planen |
| Mapping DTO ⇄ Domain | MapStruct | Compile-time Mapping, keine Reflection-Magie |