Library vs. Framework: Das sind die Unterschiede
Allgemein haben Libraries und Frameworks das gleiche Ziel: Sie wollen den Funktionsumfang eines Programms erweitern. Trotzdem sind beide Begriffe nicht identisch und weisen einige Unterschiede auf.
Libraries und wie sie funktionieren
Bei einer Bibliothek (englisch: library) handelt es sich um eine Sammlung von Klassen und Funktionen. Einige arbeiten dabei im Hintergrund und bleiben nach außen hin verborgen. Eine Programmierschnittstelle, kurz API (kurz für application programming interface), ermöglicht dann den Zugriff auf die nötigen Funktionen. Der Entwickler ruft diese Funktionen nun direkt auf und behält somit die Kontrolle, zu welchem Zeitpunkt und in welchem Umfang er diese Aufrufe tätigt.
Library vs. Framework
Ein Framework hingegen ist eine spezielle Form der Library. Das Framework selbst ist dabei kein fertiges Programm, sondern muss an vorgesehenen Stellen ergänzt werden. Um dies zu tun, werden geeignete Klassen implementiert und registriert, welche dann von dem Framework genutzt und kontrolliert werden können.
„Das Framework stellt eine wiederverwendbare, gemeinsame Struktur für Anwendungen zur Verfügung. Entwickler binden das Framework in ihre eigenen Anwendungen ein und erweitern es so, dass es ihre bestimmten Anforderungen erfüllt.“
So beschreibt der Informatiker Johnson gemeinsam mit Brian Foote in einem Artikel zur objektorientierten Programmierung aus dem Jahre 1988 ein Framework als wiederverwendbare Struktur, welche nur für die speziellen Anforderungen der eigenen Anwendung erweitert werden muss.
Der Entwickler gibt also die Kontrolle, wann die erstellten Klassen verwendet werden, ab. Deswegen nennt man diese Art der Kontrollumkehr auch „Inversion of Control“. Konkret kann ein solches Framework mithilfe des Listener-Patterns eingebunden werden. So könnte ein Framework beispielsweise die Funktion eines Buttons bereitstellen. Nun kann eine Listener-Methode registriert werden, welche das Framework immer beim Drücken dieses Buttons aufruft.
Kurz zusammengefasst
Kurz gesagt: Bei einer Library ruft der Entwickler innerhalb seines Codes die Klassen und Funktionen der Bibliothek direkt auf. Hingegen ruft das Framework, eine bestimme Form der Library, vorgesehene Funktionen wenn nötig selbständig auf. Damit folgt es dem Paradigma „Inversion of Control“.