Framework
Ein Framework ist eine Softwaregrundlage für die Entwicklung von Anwendungen, die eine vorgegebene Architektur, eine Reihe von Komponenten, Werkzeugen und Regeln für die Organisation des Codes bereitstellt. Mit einem Framework müssen Entwickler typische Mechanismen nicht von Grund auf neu erstellen, sondern können bereits implementierte Lösungen für Routing, Datenbankzugriffe, Benutzeroberflächen, Sicherheit und andere Aufgaben verwenden.
Im Unterschied zu einer einzelnen Bibliothek gibt ein Framework in der Regel die grundlegende Struktur einer Anwendung vor und bestimmt, wie deren Komponenten miteinander interagieren.
Wozu dient ein Framework?
Bei der Entwicklung unterschiedlicher Anwendungen müssen immer wieder ähnliche technische Aufgaben gelöst werden: Anfragen verarbeiten, Daten validieren, mit Datenbanken kommunizieren, Benutzersitzungen verwalten oder Benutzeroberflächen darstellen.
Ein Framework stellt fertige Mechanismen für solche Aufgaben bereit. Entwickler können sich dadurch auf die Funktionen des jeweiligen Produkts konzentrieren und die vom Framework vorgegebene Architektur nutzen.
Dies ermöglicht:
- eine schnellere Entwicklung;
- weniger wiederkehrenden Code;
- eine standardisierte Projektstruktur;
- die Nutzung fertiger Komponenten;
- eine einfachere Zusammenarbeit zwischen Entwicklern;
- die Nutzung bereits implementierter Sicherheits- und Datenverarbeitungsmechanismen;
- eine einfachere Wartung umfangreicher Projekte.
Beispielsweise muss ein Team die Anmeldung und Sitzungsverwaltung einer Webanwendung nicht selbst entwickeln, wenn das gewählte Framework dafür bereits geprüfte Mechanismen mitbringt.
Die konkreten Möglichkeiten hängen von der Programmiersprache, dem Einsatzzweck und der Architektur des jeweiligen Frameworks ab.
Wie funktioniert ein Framework?
Ein Framework stellt ein Grundgerüst für eine Anwendung bereit, in das Entwickler ihren eigenen Code integrieren.
In einer Webanwendung kann ein Framework beispielsweise einen Teil der standardmäßigen Verarbeitung selbst übernehmen:
- Eine HTTP-Anfrage vom Webserver oder Client empfangen.
- Ermitteln, welche Komponente die Anfrage verarbeiten soll.
- Den entsprechenden Anwendungscode ausführen.
- Bei Bedarf die Kommunikation mit einer Datenbank organisieren.
- Das Ergebnis erzeugen.
- Eine HTTP-Antwort an den Client zurückgeben.
Beispielsweise schreibt ein Entwickler bei diesem Ablauf lediglich die Funktion, die eine Produktseite zusammenstellt — das Routing und die Erzeugung der HTTP-Antwort übernimmt das Framework.
Entwickler müssen dabei nicht den gesamten Mechanismus zur Verarbeitung von Anfragen selbst implementieren. Sie definieren die erforderliche Geschäftslogik entsprechend den Regeln des gewählten Frameworks.
Framework und Library: Was ist der Unterschied?
Eine Library (Bibliothek) ist eine Sammlung fertiger Funktionen, Klassen oder anderer Komponenten, die ein Entwickler aus seinem eigenen Code heraus aufruft.
Ein Framework hingegen definiert in der Regel die Architektur des Programms und steuert selbst die Ausführungsreihenfolge eines wesentlichen Teils des Codes.
Der Unterschied wird häufig anhand des Prinzips der Inversion of Control (Umkehrung der Steuerung) erklärt:
- Bei Verwendung einer Bibliothek ruft die Anwendung die benötigte Funktion der Bibliothek auf.
- Bei Verwendung eines Frameworks erstellt der Entwickler Komponenten nach vorgegebenen Regeln, die vom Framework zum jeweils erforderlichen Zeitpunkt aufgerufen werden.
Beispielsweise ruft ein Programm eine Bibliothek zur Datumsformatierung selbst auf, während ein Web Framework den vom Entwickler geschriebenen Controller erst dann aufruft, wenn eine passende Anfrage eintrifft.
Die Grenze zwischen Bibliothek und Framework ist jedoch nicht immer eindeutig. Moderne Softwarewerkzeuge können Eigenschaften beider Ansätze miteinander kombinieren.
Welche Arten von Frameworks gibt es?
Frameworks werden für unterschiedliche Bereiche der Softwareentwicklung entwickelt.
Web Frameworks werden zur Entwicklung von Websites, Webanwendungen und APIs eingesetzt. Sie können Funktionen für Routing, HTTP-Verarbeitung, Datenbankzugriffe, Benutzersitzungen und weitere Komponenten bereitstellen.
Frontend Frameworks dienen der Entwicklung von Benutzeroberflächen und der Verwaltung ihres Zustands.
Backend Frameworks unterstützen die Entwicklung der serverseitigen Komponenten von Anwendungen, APIs und Geschäftslogik.
Mobile Frameworks stellen Werkzeuge für die Entwicklung mobiler Anwendungen bereit.
Testing Frameworks definieren die Struktur automatisierter Tests und stellen Funktionen für deren Ausführung und die Überprüfung der Ergebnisse bereit.
Darüber hinaus gibt es Frameworks für maschinelles Lernen, Datenverarbeitung, Spieleentwicklung, Desktop-Anwendungen und zahlreiche weitere Aufgaben.
Beispiele für Frameworks
Zu den bekannten Frameworks und entsprechenden Softwareplattformen gehören:
- Django – ein Web Framework für Python;
- Flask – ein leichtgewichtiges Web Framework für Python;
- Spring Framework – ein Framework für die Entwicklung von Java-Anwendungen;
- Ruby on Rails – ein Web Framework für Ruby;
- Laravel – ein Web Framework für PHP;
- ASP.NET Core – ein Framework für die Entwicklung von Webanwendungen und APIs auf der .NET-Plattform;
- Angular – ein Framework für die Entwicklung von Web-Benutzeroberflächen;
- Flutter – ein Framework für die Entwicklung plattformübergreifender Anwendungen.
Beispielsweise wird Django häufig für datengetriebene Webanwendungen eingesetzt, während Flutter dieselbe Codebasis auf mehreren mobilen Plattformen ausführt.
Einige verbreitete Werkzeuge lassen sich nicht eindeutig ausschließlich als Bibliothek oder Framework einordnen. React wird beispielsweise offiziell als Bibliothek für die Entwicklung von Benutzeroberflächen bezeichnet, im allgemeinen Sprachgebrauch jedoch häufig als Frontend Framework bezeichnet.
Vorteile eines Frameworks
Die Verwendung eines fertigen Frameworks kann verschiedene Vorteile bieten:
- kürzere Entwicklungszeiten;
- Wiederverwendung vorhandener Lösungen;
- einheitliche Projektstruktur;
- verfügbare Dokumentation und Entwicklungswerkzeuge;
- Möglichkeit zur Integration zusätzlicher Module;
- vereinfachte Zusammenarbeit im Entwicklungsteam;
- fertige Mechanismen für typische Entwicklungsaufgaben.
Beispielsweise findet ein neues Teammitglied sich in einem Projekt schneller ein, wenn die Verzeichnisstruktur den Konventionen eines verbreiteten Frameworks folgt.
Populäre Frameworks verfügen häufig außerdem über ein umfangreiches Ökosystem von Erweiterungen und eine aktive Entwickler-Community.
Einschränkungen eines Frameworks
Die Verwendung eines Frameworks bringt gleichzeitig bestimmte Einschränkungen mit sich. Entwickler müssen dessen Architektur, API und Regeln kennen. Darüber hinaus entsteht eine Abhängigkeit von der gewählten Technologie, ihren Aktualisierungen und der Kompatibilität verschiedener Versionen.
Zu den möglichen Einschränkungen gehören:
- notwendige Einarbeitung in die Besonderheiten des Frameworks;
- durch die Architektur vorgegebene Einschränkungen;
- zusätzliche Abhängigkeiten;
- Aufwand beim Wechsel zu einer anderen Technologie;
- Notwendigkeit, das Framework selbst regelmäßig zu aktualisieren;
- mögliche Überdimensionierung für kleine Projekte.
Beispielsweise kann für eine einfache Landingpage mit einem Kontaktformular ein umfangreiches Web Framework mehr Aufwand verursachen als eine schlanke eigene Lösung.
Die Wahl eines Frameworks hängt daher nicht nur von der Anzahl der verfügbaren Funktionen, sondern auch von den Anforderungen des jeweiligen Projekts ab.
FAQ
Ein Framework ist ein fertiges Softwaregrundgerüst für die Entwicklung. Es stellt die Struktur und standardisierte Komponenten einer Anwendung bereit, während Entwickler den Code ergänzen, der die spezifischen Funktionen des jeweiligen Projekts umsetzt.
Eine Bibliothek stellt Funktionen bereit, die von einem Programm aufgerufen werden. Ein Framework gibt dagegen in der Regel die Architektur der Anwendung vor und ruft den vom Entwickler geschriebenen Code entsprechend seinem eigenen Lebenszyklus und seinen Regeln auf.
Ja. Entwickler können die erforderlichen Komponenten selbst programmieren oder einzelne Bibliotheken verwenden. Bei größeren Projekten kann ein Framework jedoch den Umfang wiederkehrender Entwicklungsarbeiten reduzieren und die Codestruktur standardisieren.
React wird offiziell als JavaScript-Bibliothek zur Entwicklung von Benutzeroberflächen bezeichnet. Zusammen mit zusätzlichen Werkzeugen kann React jedoch Bestandteil einer vollständigen Frontend-Architektur sein. Daher wird es im allgemeinen Sprachgebrauch teilweise auch als Framework bezeichnet.