Framework-/Library-Entscheidungskatalog V3

Eine große Entscheidungsmatrix hilft, Framework, Library, Spezifikation und Tool sauber zu unterscheiden.

MatrixFramework vs LibraryEntscheidung
Framework- und Library-Auswahlmatrix
Framework- und Library-Auswahlmatrix

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

NameTypEinsatzWann passend
Spring BootFrameworkService RuntimeSchneller produktiver Service mit großem Ökosystem
Jakarta EESpezifikation/PlattformStandardisierte Enterprise RuntimePortabilität und zertifizierte Standards wichtig
QuarkusFrameworkCloud-native RuntimeContainer, OpenShift, schneller Start
MicroProfileSpezifikationCloud-native APIsHealth, Config, Fault Tolerance, JWT, OpenAPI
MicronautFrameworkCompile-time DI/MicroservicesSchneller Start, geringe Reflection
Hibernate ORMFramework/ORMPersistenzKomplexe Objekt-Relationen und JPA
MapStructLibraryMappingExplizites, schnelles DTO-Mapping
FlywayTool/LibraryDB MigrationLineare SQL-Migrationen
LiquibaseTool/LibraryDB MigrationChangeSets, mehrere DB-Typen
TestcontainersLibraryIntegrationstestsEchte DB/Broker im Test
OpenTelemetrySDK/StandardObservabilityTraces, Metrics, Logs kontextualisieren
ArchUnitLibraryArchitekturtestsRegeln im Build prüfen

Regeln

  1. Erst Problem beschreiben, dann Technologie wählen.
  2. Framework-Code an den Rand legen.
  3. Libraries bevorzugen, wenn ein Problem eng ist.
  4. Bei Spezifikationen Implementierung und Versionsstand prüfen.
  5. Lizenz, Security und Wartbarkeit in die Entscheidung aufnehmen.

Beispiel

ProblemEmpfehlungBegründung
Viele CRUD-/API-ServicesSpring Boot oder QuarkusProduktive Runtime und Betriebsintegration
Standardisierte App-Server-LandschaftJakarta EECDI/JTA/JAX-RS/JPA als Standards
Komplexes DB MappingHibernate/JPABewährtes ORM, aber Fetching bewusst planen
Mapping DTO ⇄ DomainMapStructCompile-time Mapping, keine Reflection-Magie
⌂ Cockpit