it-swarm-eu.dev

Was ist der Unterschied zwischen einer API und einem SDK?

Ich habe verschiedene APIs und SDKs durchgesehen, als mir klar wurde, dass ich den Unterschied zwischen etwas namens [~ # ~] api [~ # ~] und etwas namens = nicht wirklich erkennen konnte [~ # ~] sdk [~ # ~] .

Beide sind konzeptionell eine Möglichkeit für Ihr Programm, mit den Ressourcen einer anderen Software zu kommunizieren und diese zu steuern, unabhängig davon, ob es sich bei dieser anderen Software um einen Webdienst, eine Endbenutzer-App, einen Betriebssystemdienst oder -dämon oder einen Kernel handelt Gerätetreiber.

Was ist der semantische Unterschied zwischen einem SDK und einer API?

184
KeithS

Ich denke, es fällt eher nach dem Motto "Alle SDKs sind/enthalten APIs, aber nicht alle APIs sind SDKs".

Ein SDK scheint ein vollständiger Satz von APIs zu sein, mit denen Sie fast alle Aktionen ausführen können, die Sie zum Erstellen von Anwendungen benötigen würden. Darüber hinaus kann ein SDK andere Tools für die Entwicklung der Plattform/des Elements enthalten, für die es bestimmt ist.

Eine API hingegen ist nur eine Reihe verwandter Methoden, die für einen bestimmten Zweck geeignet sein können.

Das JDK (Java Development Kit) enthält beispielsweise die API sowie die Compiler, Laufzeiten und andere verschiedene Tools. Die Java API) besteht einfach aus allen Bibliotheken, aus denen die Kernsprache besteht, mit der Sie sofort arbeiten können.

180
user7007
  • API = Application Programming Interface
  • SDK = Software Development Kit

Der eigentliche Unterschied besteht also darin, dass eine API nicht mehr oder weniger als eine Schnittstelle zu "einem Dienst" ist, während ein SDK eine Reihe von Tools/Komponenten/Klassen für einen bestimmten Zweck ist. Ein SDK bietet Ihnen tatsächlich eine API, mit der Sie eine Schnittstelle herstellen können. Sie können jedoch eine API ohne die zugrunde liegenden Komponenten verwenden, z. B. wenn die API über einen Webdienst bereitgestellt wird.

Beispiele für APIs:

Beispiele für SDKs:

88
back2dos

API → dokumentierte Schnittstelle (zu einem bestimmten Zeitpunkt und für ein bestimmtes Publikum. Die Dokumentation ist möglicherweise unvollständig und/oder für die breite Öffentlichkeit nicht verfügbar, und dies kann absichtlich sein, dies mindert jedoch nicht die Tatsache, dass sie dokumentiert werden sollte für Dritte zur Verwendung.)

SDK → Schnittstellendokumentation (+ Beispiele & Tools)

24
ZJR

"SDK" ist im weiteren Sinne kollektiv als "API".

In der Regel finden Sie nur ein SDK für eine gesamte Plattform. Es gibt zum Beispiel ein MacOS X SDK und ein iOS SDK, die jeweils die APIs für viele verschiedene Funktionsbereiche enthalten.

"API" wurde ursprünglich auch als Sammelbegriff verwendet und wird immer noch häufig auf diese Weise verwendet (MAPI, WSAPI usw.), ist jedoch normalerweise auf eine bestimmte Technologie beschränkt. Der durch die "API" implizierte Umfang scheint sich im Laufe der Jahre verringert zu haben; Früher wurde über die "Mac Toolbox API" oder die "Windows API" gesprochen, die beide offensichtlich eine Menge Funktionalität enthielten. Heutzutage ist es nicht ungewöhnlich, dass "API" eine einzelne Systemfunktion bedeutet. Man könnte sagen, dass eine neue Version eines Betriebssystems Hunderte neuer APIs enthält, und es sind Hunderte neuer Systemaufrufe gemeint.

Keiner der Begriffe ist ohne Kontext sehr präzise.

17
Caleb

Was ist API?

API ist eine Schnittstelle, über die Softwareprogramme miteinander interagieren können. Es definiert eine Reihe von Regeln, die von den Programmen befolgt werden sollten, um miteinander zu kommunizieren. APIs geben im Allgemeinen an, wie die Routinen, Datenstrukturen usw. definiert werden sollen, damit zwei Anwendungen kommunizieren können. APIs unterscheiden sich in der von ihnen bereitgestellten Funktionalität. Es gibt allgemeine APIs, die Bibliotheksfunktionen einer Programmiersprache wie die API Java API) bereitstellen. Es gibt auch APIs, die bestimmte Funktionen wie die Google Maps-API bereitstellen. Es gibt auch sprachabhängige APIs, die kann nur von einer bestimmten Programmiersprache verwendet werden. Darüber hinaus gibt es sprachunabhängige APIs, die mit mehreren Programmiersprachen verwendet werden können. APIs müssen sehr sorgfältig implementiert werden, indem nur die erforderlichen Funktionen oder Daten nach außen offengelegt werden, während die anderen Teile beibehalten werden Die Verwendung von APIs ist im Internet sehr beliebt geworden. Es ist sehr üblich geworden, einige der Funktionen und Daten über eine API nach außen im Web zuzulassen. Diese Funktionen können kombiniert werden, um eine verbesserte Funktionalität zu bieten die Benutzer.

Was ist SDK?

SDK ist eine Reihe von Tools, mit denen Softwareanwendungen für eine bestimmte Plattform entwickelt werden können. SDKs enthalten Tools, Bibliotheken, Dokumentation und Beispielcode, mit denen ein Programmierer eine Anwendung entwickeln kann. Die meisten SDKs können aus dem Internet heruntergeladen werden, und viele der SDKs werden kostenlos zur Verfügung gestellt, um die Programmierer zu ermutigen, die Programmiersprache des SDK zu verwenden. Einige weit verbreitete SDKs sind Java SDK (JDK)), das alle Bibliotheken, Debugging-Dienstprogramme usw. enthält, was das Schreiben von Programmen in Java erheblich erleichtern würde. SDKs erleichtern das Leben eines Softwareentwicklers , da nicht nach miteinander kompatiblen Komponenten/Tools gesucht werden muss und alle in ein einziges Paket integriert sind, das einfach zu installieren ist.

Was ist der Unterschied zwischen API und SDK?

API ist eine Schnittstelle, über die Softwareprogramme miteinander interagieren können, während ein SDK eine Reihe von Tools ist, mit denen Softwareanwendungen für eine bestimmte Plattform entwickelt werden können. Die einfachste Version eines SDK kann eine API sein, die einige Dateien enthält, die für die Interaktion mit einer bestimmten Programmiersprache erforderlich sind. Eine API kann also als einfaches SDK ohne jegliche Debugging-Unterstützung usw. angesehen werden.

12
chiranjib

Ein SDK kann nichts anderes als eine API sein (Dateien für die Schnittstelle zu einer anderen App), enthält jedoch normalerweise anderen Code für das Debuggen und andere Elemente für Ihre IDE.

Ich habe keine Akronyme mehr.

7
JeffO

Alles, was zuvor erwähnt wurde, ist wahr, aber über SDK möchte ich hinzufügen, dass ein Software Development Kit ein wirklich vollständiges Paket mit (fast) allen notwendigen Tools für den Entwicklungsprozess ist (oder sein sollte), während API "nur" eine Schnittstelle ist interagieren mit.

5
Scorchio

Viele der anderen Antworten erklären, dass ein SDK Tooling ist, aber keines von ihnen kommt direkt heraus und sagt, dass eine API ein Spezifikation ist.

Die API für Compoonent X enthält alle Informationen, die Sie zum Schreiben einer anderen Komponente benötigen, die mit X interagiert. Ein SDK für Komponente X kann Bibliotheksroutinen enthalten, die Ihnen das Schreiben erleichtern Komponente, aber die Bibliotheken sind nicht die API: Sie sind lediglich ein Ausführungsform der API.

1
Solomon Slow

Meine zwei Cent: Ich glaube, der Begriff API wird oft falsch verwendet.

Eine API ist eine Anwendungsprogrammierschnittstelle.

Obwohl es sich um einen unangenehmen Namen handelt, bedeutet dies, dass es sich um eine Schnittstelle handelt. Eine Anwendung kann also eine API haben , damit andere Anwendungen mit ihr kommunizieren können. Und eine Software (z. B. eine Klasse in einem OO System)) bietet möglicherweise eine API, mit der andere Module im System mit ihr kommunizieren können.

Der Begriff API wird jedoch häufig als Synonym für "Bibliothek" verwendet. Ich denke nicht, dass das eine korrekte Verwendung des Wortes ist. Ein Teil der Bibliothek ist eine API, mit der Code sie verwenden kann, die Bibliothek jedoch nicht eine API.

Und ein SDK ist eine Art Bibliothek, also könnte dort die Verwirrung liegen.

1
Aviv Cohn