Bibliothek vs. Framework vs. API? [geschlossen]

33

Was ist der Unterschied zwischen einer Bibliothek, einem Framework und einer API? Sie scheinen mir alle gleich zu sein. Ich würde gerne hören, wie die Leute darüber nachdenken.

Bob Dole
quelle
2
@Jorg: Du hättest das als Antwort einreichen sollen. So wie es aussieht, grenzt das an Spam und verstopft die Seite.
2
@Sergio - Jörg W Mittag hat 1171 durchdachte und gut aufgenommene Antworten auf SO (42 durchdachte und gut aufgenommene Antworten hier). Er versucht nicht, schwierig zu sein. Er versucht, P.SE zu verbessern, indem er zeigt, wie unnötig diese Frage ist (ganz zu schweigen davon, dass hier noch keine Antwort auf das Unterscheidungsmerkmal eines Frameworks erfolgt).
Corbin

Antworten:

35

Eine Bibliothek ist eine Sammlung von Funktionen / Objekten, die einem bestimmten Zweck dienen. Sie könnten eine Bibliothek in einer Vielzahl von Projekten verwenden.

Ein Framework ist eine Sammlung von Mustern und Bibliotheken, die beim Erstellen einer Anwendung hilfreich sind.

Eine API ist eine Schnittstelle, über die andere Programme mit Ihrem Programm interagieren können, ohne direkten Zugriff zu haben.

Anders ausgedrückt: Stellen Sie sich eine Bibliothek als Add-On / Teil einer Anwendung, ein Framework als Grundgerüst der Anwendung und eine API als nach außen gerichteten Teil der Anwendung vor.

GSto
quelle
7
Das ist keine sehr gute Definition eines Frameworks. Ich würde kein Framework wirklich als "Sammlung von Mustern und Bibliotheken" bezeichnen
TheLQ
Ein Framework ist mehr wie eine Umgebung zum
Einrichten. Andernfalls
Ja, ich war ein bisschen ratlos. hat jemand bessere vorschläge? Andernfalls können Sie sie gerne bearbeiten. Ich habe mir Wikipedia angesehen, das ein Framework aufruft: "Frameworks sind ein Spezialfall von Softwarebibliotheken, da sie wiederverwendbare Abstraktionen von Code sind, die in einer genau definierten Anwendungsprogrammierschnittstelle (API) eingebettet sind" Kontext dieser Frage als Hilfe.
GSto
3
Eine Bibliothek ist, wenn Ihr Code verantwortlich ist (Ihr Code "verwendet die Bibliothek") und ein Framework ist, wenn es kostenpflichtig ist (das Framework "führt Ihren Code aus"). Beispielsweise bestimmt ein Framework, in welcher Reihenfolge Dinge geschehen müssen (Swing, Servlets), während Sie bei einer Bibliothek entscheiden, wann und wie sie verwendet wird (Bildkonvertierung, Verschlüsselung). Eine API ist nur eine Definition einer Reihe von Funktionen, die Sie aufrufen können. Sie ist Teil von Bibliotheken und Frameworks.
Martin Wickman
14

Bisher gute Antworten, aber sie vermissen einen wichtigen Punkt - ein Framework verwendet IoC . Ihr Code ist von einem Framework umgeben. Es lebt in ihm. Im Gegensatz dazu den Code nur verwendet eine Bibliothek oder API. Es lebt außerhalb davon. IoC ist der Unterschied.

Scant Roger
quelle
Nicht unbedingt wahr. Ein Framework kann IoC verwenden, und Ihre Anwendung kann sich in einem Framework befinden, muss dies jedoch nicht. Dummerweise listet der Wikipedia-Eintrag zu Frameworks dies als "Unterscheidungsmerkmal" eines Frameworks auf und verweist auf diese Dissertation " dirkriehle.com/computer-science/research/dissertation/… ", aber die Dissertation selbst enthält nicht die Phrasen "Inversion" 'oder' ioc ', und tatsächlich heißt es: "In der Regel verwenden Anwendungen nicht nur ein Framework, sondern mehrere." (S. 26, Ref. S. 9)
Kirk Broadhurst
11
@Kirk Broadhurst - dachte tatsächlich an Martin Fowler : "Inversion of Control ist ein wesentlicher Teil dessen, was ein Framework von einer Bibliothek unterscheidet. (...) Ein Framework verkörpert ein abstraktes Design mit mehr eingebautem Verhalten. Um es zu verwenden Sie müssen Ihr Verhalten an verschiedenen Stellen im Framework einfügen, entweder durch Unterklassen oder durch Einfügen Ihrer eigenen Klassen. Der Code des Frameworks ruft dann Ihren Code auf ... "Wenn wir zu dem Schluss kommen, dass IoC kein Unterscheidungsmerkmal ist, gibt es kein Unterscheidungsmerkmal - sie sind alle gleich und das macht keinen Spaß.
Scant Roger
@ScantRoger, Verwendet das Java Collections Framework IoC?
Scheint
3

Eine Bibliothek ist eine Sammlung von Code, der zum Ausführen allgemeiner Aufgaben erstellt wurde. Bibliothekscode ist in der Regel relativ stabil und fehlerfrei. Die Verwendung geeigneter Bibliotheken kann die Menge an Code reduzieren, die geschrieben werden muss. Die Anzahl der Codezeilen für eine Anwendung wird tendenziell verringert, wodurch sich die Rate erhöht, mit der die Funktionalität bereitgestellt wird. In den meisten Fällen ist es besser, eine Bibliotheksroutine zu verwenden, als eigenen Code zu schreiben.

Eine API (Application Programming Interface) ist eine Schnittstelle zu einigen Funktionen, über die eine Anwendung auf die verfügbaren Funktionen zugreifen kann. Eine API kann als Schnittstelle bezeichnet werden. API gibt es auf vielen Ebenen, einschließlich System, Bibliothek, Framework, Programm und Anwendung. APIs sollten definiert werden, bevor der Code, der sie implementiert, implementiert wird.

APIs sollten stabil sein, obwohl Teile der API aus verschiedenen Gründen veraltet sein können. Je weiter verbreitet die API ist, desto schwieriger ist es, sie zu ändern. Die meisten, wenn nicht alle Java 1.0-APIs sind noch verfügbar, obwohl viele Methoden veraltet sind.

Ein Framework ist eine Sammlung von APIs, mit denen das Erstellen von Anwendungen vereinfacht werden soll. Frameworks bieten Implementierungen für wiederverwendbare Komponenten. Gute Frameworks sind in der Regel auf ihre Anwendung spezialisiert.

Das Java Collections Framework ist eine Sammlung von APIs für verschiedene Arten von Objekten, die zur Verarbeitung von Sammlungen verwendet werden können. Es bietet eine Hierarchie von APIs für verschiedene Sammlungen. Die Schnittstelle SortedSet im Java Collections Framework erweitert die Schnittstelle Set, die wiederum die Schnittstelle Collection erweitert. Diese APIs sind abstrakte Schnittstellen, und die tatsächlichen Implementierungen haben unterschiedliche Namen. Das Collections Framework vereinfacht die Implementierung von Collections und vereinfacht das Ändern von Implementierungen während der Entwicklung.

Frameworks können aus kleineren Frameworks aufgebaut werden, wie im Java Spring Framework für die J2EE-Entwicklung zu sehen ist. Spring besteht aus über einem Dutzend Frameworks, von denen viele einzeln verwendet oder durch andere Frameworks ersetzt werden können.

Die Verwendung der entsprechenden Bibliotheken, APIs und Frameworks kann die Entwicklung vereinfachen. Diese Komponenten kümmern sich um die häufigsten Probleme und ermöglichen es dem Entwicklungsteam, sich auf die anwendungsspezifischen Probleme zu konzentrieren.

BillThor
quelle
2

Ein Framework ist eine Weiterentwicklung der Bibliothek. Wenn Ihre Toolbox eine Bibliothek ist, ist Ihre Werkstatt ein Rahmen.

Wikipedia sagt

Eine API ist eine Abstraktion, die eine Schnittstelle für die Interaktion mit einer Reihe von Funktionen beschreibt, die von Komponenten eines Softwaresystems verwendet werden

Der wichtige Unterschied zwischen einer API und einer Benutzeroberfläche besteht darin, dass über eine API andere Software / Dienste programmgesteuert mit Ihrer Lösung interagieren können.

APIs können sowohl für Anwendungen (über DLLs oder Plugins) als auch für Websites und Dienste (über REST und Webservices) erstellt werden.

Homde
quelle
Schöne Analogie ...
Sunwukung
1

APIs definieren, wie etwas anderes verwendet werden soll, um festzustellen, welche Objekte und Methoden aus einer Quelle verwendet werden können. Wenn Sie beispielsweise Twitter oder Facebook in eine Website integrieren, wird eine API von Twitter oder Facebook verwendet, um sicherzustellen, dass die richtigen Daten aktualisiert werden.

Frameworks sind in gewisser Hinsicht tendenziell etwas umfangreicher, da sie zeitweise fast eine eigene Sprache bilden können. jQuery ist ein Beispiel für ein Framework, das eine eigene Syntax hat und ein bisschen mehr Gewicht hat, um in gewisser Weise in meinen Code zu gelangen. Frameworks können auch Plattformen sein, die sie in gewissem Sinne APIs ähnlich machen, z. B. Win32API oder .Net Framework. Jedes Framework verfügt über zahlreiche Methoden zum Erstellen einer Anwendung. Es kann also Frameworks geben, die APIs enthalten, und APIs, die auch als Frameworks angesehen werden.

Bibliotheken sind in der Regel Binärdateien, die eine API oder ein Framework implementieren. In einigen Fällen müssen Sie daher eine API oder ein Framework verwenden. Zumindest sehe ich diese Begriffe und die Unterschiede zwischen ihnen so.

JB King
quelle
1

Gehe in eine Bibliothek und beginne Bücher zu lesen. Wenn Sie die Anwendung sind, ist die Büchersammlung die Bibliothek. Die Regale, die Schränke und die Verbindung, die all dies beherbergt, bilden den Rahmen. Alles, was Sie beim Lesen der Bücher in Kontakt bringen, ist die API.

erforschen
quelle
Das ist eine wundervolle Antwort.
Magus
0

Eine Bibliothek ist eine Sammlung von Code, der verwendet wird, um allgemeine Aufgaben zu vereinfachen - es können Klassen, Funktionen oder was auch immer für Ihre Sprache oder Plattform spezifisch ist sein. Ein gutes Beispiel ist eine Bibliothek zur Zeichenfolgenbearbeitung, die Hilfestellungen für allgemeine Aufgaben (Erstellen, Aufteilen, Suchen oder Sortieren von Zeichenfolgen usw.) bietet.

Eine API (Application Programming Interface) ist eine Definition ("Schnittstelle") für die Arbeit mit einer anderen Anwendung, einem anderen System oder einer anderen Technologie. Es definiert im Wesentlichen die Operationen, die für die Interaktion mit diesem anderen System verfügbar sind. Eine API kann eine Bibliothek sein (dh, die API ist in eine Bibliothek oder eine Gruppe von Klassen eingeschlossen). Der Unterschied besteht jedoch darin, dass eine API immer auf ein externes System verweist - unabhängig davon, ob es sich um eine Datenbank, einen Webdienst, eine andere Anwendung oder das Betriebssystem handelt selbst.

Ein Framework ist ein umfangreicheres Konzept - es enthält normalerweise eine Reihe von Bibliotheken und APIs, um allgemeine Aufgaben auszuführen. Es existiert auf einer höheren konzeptionellen Ebene - es ist nicht nur eine Sammlung von Werkzeugen, sondern auch eine Sammlung von Entwurfsmustern, Best Practices und Methoden. Ein Software-Framework ist eine Erweiterung eines allgemeinen Frameworks. Zu seinen Bedeutungen gehört, dass es eine Grundlage darstellt, auf der die Dinge aufgebaut sind, Unterstützung und Struktur bietet und Anforderungen anleitet und definiert.

Kirk Broadhurst
quelle
0

Die Anwendung wird mithilfe von auf einem Framework basierenden Bibliotheken entwickelt und kommuniziert über eine API.

Wenn Sie eine App erstellen, sagen Sie eine Online-Bildverarbeitungsanwendung,

  • Sie können einige vorgefertigte Bildverarbeitungsbibliotheken verwenden.
  • Auf jedem Framework, das Sie kennen und das Sie bei der Erstellung der Anwendung unterstützt.
  • Sie werden die Anwendung so bereitstellen, dass sie mit der Außenwelt interagieren kann. Dies wäre die API Ihrer Anwendung für den Rest der Welt.

Wenn ein Anruf bei Ihrer Anwendung eingeht

  • Es würde so gehandhabt werden, wie Sie es unter Anleitung des Frameworks entworfen haben
  • Bearbeitung des von der Bibliothek geführten Anrufs
  • Auf diese Funktionen wird über Ihre API von außerhalb zugegriffen

an die anrufende Person

Gründe, warum diese existieren:

  • Bibliothek: erspart Ihnen die Neuerfindung des Rades
  • Framework: Bewahrt Sie vor unerwarteten Fallen bei Systemdesign und -handhabung, sofern das Framework selbst keine Mängel aufweist
  • API: Gewährleistet die Sicherheit der Anwendung, indem der Kern vom realen Zugriff aus verbunden wird
Ganesh
quelle