Library und Framework, was ist der Unterschied?

Frage ich viele erfahrene Java-Kollegen (teilweise Projektleiter!) „was denn der Unterschied zwischen einer Library und Framework sei?“, erhalte ich meistens die falsche Antwort: „Es ist eine Sammlung von Bibliotheken die ein bestimmtes Thema umfassen.“.
Ja, das hauseigene Framework unseres Kunden besteht zufällig aus sehr vielen Bibliotheken bzw. JAR-Modulen. Aber das ist eine Entscheidung die nichts mit einem Framework-Character zu tun hat.

Die richtige Antwort lautet eher:

„Es ist eine Bibliothek, die die Steuerung der Funktionsaufrufe umkehrt und das Klassendesign vorgibt.“

Programm benutzt eine Bibliothek.

Benutzung einer Library

Wenn wir eine API benutzen, rufen wir für gewöhnlich selbst den Code auf. Unser Programm entscheidet wann und wo wir API-Code aufrufen. Der Kontrollfluss geht von der oberen zur unteren Schicht. Das ist erstmal nichts schlechtes, so lange wir uns der Abhängigkeit zu dieser API bewusst sind.

Programm benutzt ein Framework.

Benutzung eines Framework

Anders bei einem Framework: Wir geben einer API die Aufrufkontrolle.
Unser Programm hat bestimmte Funktionen und Klassen, registriert diese dann beim Framework und irgendwann werden sie von diesem aufgerufen.

Was die Frameworks machen, hat sich unter dem Begriff Inversion of Control-Prinzip (Umkehrung der Kontrolle) etabliert, kurz IoC. Vor dem Aufkommen des Architektur- und Pattern-Hypes nannte man diese Methodik schärzhaft das Hollywood-Prinzip:

„Don’t call us, we’ll call you!“.

Damit sollte endgültige klar werden, was ein Framework ausmacht.
Zum Thema IoC werde ich in nächster Zeit mehr und genaueres schreiben.

Ein Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Blue Captcha Image Refresh

*