Tatsächlich können diese Begriffe je nach verwendetem Kontext viele verschiedene Bedeutungen haben.
Unter Mac OS X sind Frameworks beispielsweise nur Bibliotheken, die in einem Bundle zusammengefasst sind. Innerhalb des Bundles finden Sie eine aktuelle dynamische Bibliothek (libWhatever.dylib). Der Unterschied zwischen einer leeren Bibliothek und dem Framework auf dem Mac besteht darin, dass ein Framework mehrere verschiedene Versionen der Bibliothek enthalten kann. Es kann zusätzliche Ressourcen enthalten (Bilder, lokalisierte Zeichenfolgen, XML-Datendateien, UI-Objekte usw.). Sofern das Framework nicht für die Öffentlichkeit freigegeben wird, enthält es normalerweise die erforderlichen .h-Dateien, die Sie zur Verwendung der Bibliothek benötigen.
Somit haben Sie alles in einem einzigen Paket, was Sie benötigen, um die Bibliothek in Ihrer Anwendung zu verwenden (eine C / C ++ / Objective-C-Bibliothek ohne .h-Dateien ist ziemlich nutzlos, es sei denn, Sie schreiben sie selbst gemäß einer Bibliotheksdokumentation), anstatt a Eine Reihe von Dateien, die verschoben werden müssen (ein Mac-Bundle ist nur ein Verzeichnis auf Unix-Ebene, aber die Benutzeroberfläche behandelt es wie eine einzelne Datei, so als hätten Sie JAR-Dateien in Java, und wenn Sie darauf klicken, wird dies normalerweise nicht angezeigt was drin ist, es sei denn, Sie wählen explizit aus, um den Inhalt anzuzeigen).
Wikipedia nennt Framework ein "Schlagwort". Es definiert ein Software-Framework als
Ein Software-Framework ist ein wiederverwendbares Design für ein Softwaresystem (oder Subsystem). Ein Software-Framework kann Unterstützungsprogramme, Codebibliotheken, eine Skriptsprache oder andere Software enthalten, um die Entwicklung und Zusammenkleben der verschiedenen Komponenten eines Softwareprojekts zu unterstützen. Verschiedene Teile des Frameworks können über eine API verfügbar gemacht werden.
Ich würde also sagen, eine Bibliothek ist genau das, "eine Bibliothek". Es ist eine Sammlung von Objekten / Funktionen / Methoden (abhängig von Ihrer Sprache) und Ihre Anwendung "verlinkt" dagegen und kann somit die Objekte / Funktionen / Methoden verwenden. Es handelt sich im Grunde genommen um eine Datei mit wiederverwendbarem Code, die normalerweise von mehreren Anwendungen gemeinsam genutzt werden kann (Sie müssen nicht immer wieder denselben Code schreiben).
Ein Framework kann alles sein, was Sie in der Anwendungsentwicklung verwenden. Dies kann eine Bibliothek, eine Sammlung vieler Bibliotheken, eine Sammlung von Skripten oder eine beliebige Software sein, die Sie zum Erstellen Ihrer Anwendung benötigen. Framework ist nur ein sehr vager Begriff.
Hier ist ein Artikel über jemanden zum Thema " Library vs. Framework ". Ich persönlich halte diesen Artikel für sehr umstritten. Es ist nicht falsch, was er dort sagt, aber er wählt nur eine der vielen Definitionen des Frameworks aus und vergleicht diese mit der klassischen Definition der Bibliothek. Zum Beispiel sagt er, dass Sie einen Rahmen für die Unterklassifizierung benötigen. "Ja wirklich?" Ich kann ein Objekt in einer Bibliothek definieren lassen, es verknüpfen und in meinem Code unterordnen. Ich sehe nicht ein, wie ich dafür einen "Rahmen" brauche. In gewisser Weise erklärt er eher, wie der Begriff Framework heutzutage verwendet wird. Es ist nur ein gehyptes Wort, wie ich schon sagte. Einige Unternehmen veröffentlichen nur eine normale Bibliothek (im Sinne einer klassischen Bibliothek) und nennen sie ein "Framework", weil es ausgefallener klingt.