Ich versuche einem Nicht-Entwickler den Unterschied zwischen einer API und einem SDK zu erklären. Ich muss erklären, warum ein kommerzieller Anbieter von Fingerabdrucksoftware wahrscheinlich kein SDK bereitstellt, obwohl er sicherlich eines verwendet hat.
Sowohl Gerätehersteller als auch Softwareanbieter können und sollten eine genau definierte API verfügbar machen. Mit dieser API können andere Softwareprogramme mit den eigenen Softwarekomponenten oder Hardwaregeräten des Herstellers zusammenarbeiten.
Wenn jemand mehr Ideen hat, um dies klar zu erklären, würde ich mich sehr über die Vorschläge freuen. Ich möchte betonen, dass das Ziel darin besteht, die Konzepte einem Nicht-Programmierer zu erklären, der die Umgangssprache der Entwickler nicht kennt .
Im Zusammenhang mit einem Fingerabdrucksensor im Vergleich zu einer Software zur Registrierung / Überprüfung habe ich Folgendes versucht:
Wenn ich ein Hersteller von Fingerabdruckgeräten / Sensoren bin und keine Software schreibe, kann ich mein Produkt besser vermarkten:
- Stellen Sie sicher, dass meine Gerätetreiber auf einer Vielzahl von Betriebssystemen installiert werden können
- Definieren und bereitstellen Sie eine API für Softwareentwickler, um Programme zu schreiben (z. B. zur Registrierung, Überprüfung), um mit meinem Gerät zu „sprechen“ oder es zu verwenden
- Entwickeln und Bereitstellen eines SDK (ein Schritt über eine API hinaus), damit Softwareentwickler einfacher und schneller Programme schreiben können, die mit meinem Gerät funktionieren. SDKs können Hilfecodebibliotheken, Referenzanwendungen, Dokumentation usw. bereitstellen.
API ist wie die Bausteine eines Puzzlespiels, mit dem ein Kind spielt, um Blöcke in verschiedenen Formen zu verbinden und etwas zu bauen, an das es denken kann.
SDK hingegen ist eine geeignete Werkstatt, in der alle Entwicklungswerkzeuge verfügbar sind und keine vorgeformten Bausteine. In einem Workshop haben Sie die eigentlichen Werkzeuge und sind nicht auf Blöcke beschränkt. Sie können daher Ihre eigenen Blöcke erstellen oder zunächst etwas ohne Blöcke erstellen.
Das Codieren ohne SDK oder API ist so, als würde man alles ohne Workshop von Grund auf neu erstellen - man muss sogar seine eigenen Tools erstellen
quelle
not limited to blocks, or can create something without any blocks to begin with
wie beim SDK erhalten Sie noch bessere Zusammensetzungen der API-Blöcke, mit denen Sie arbeiten können. SDK baut auf einer API auf.Angenommen, Unternehmen C bietet Produkt P an und P beinhaltet in irgendeiner Weise Software. Dann kann C Softwareentwicklern, die die Softwaresysteme von P steuern, eine Bibliothek / einen Satz von Bibliotheken anbieten.
Diese Bibliothek / Bibliotheken sind ein SDK . Es ist Teil der Systeme von P. Es ist ein Kit, das Softwareentwickler verwenden können, um das Softwareteil von P. zu modifizieren, zu konfigurieren, zu reparieren, zu verbessern usw.
Wenn C die Funktionalität von P anderen Unternehmen / Systemen anbieten möchte, geschieht dies mit einer API .
Dies ist eine Schnittstelle zu P. Eine Möglichkeit für externe Systeme, mit P. zu interagieren.
Wenn Sie in Bezug auf die Implementierung denken, werden sie ziemlich ähnlich erscheinen. Besonders jetzt, wo das Internet zu einem großen verteilten Betriebssystem geworden ist.
In der Absicht sind sie jedoch tatsächlich ziemlich verschieden.
Sie erstellen etwas mit einem SDK und verwenden oder konsumieren etwas mit einer API.
quelle
Die Anwendungsprogrammierschnittstelle besteht aus einer Reihe von Routinen / Datenstrukturen / Klassen, die eine Möglichkeit zur Interaktion mit der Zielplattform / -software wie OS X, Android, Projektmanagementanwendung, Virtualisierungssoftware usw. angeben.
Während das Software Development Kit ein Wrapper für APIs ist, der Entwicklern die Arbeit erleichtert.
Mit dem Android SDK können Entwickler beispielsweise mit der gesamten Android-Plattform interagieren, während die Plattform selbst aus zusammengesetzten Softwarekomponenten besteht, die über APIs kommunizieren.
Manchmal werden auch SDKs erstellt, um die Entwicklung in einer bestimmten Programmiersprache zu erleichtern. Beispielsweise bietet der Selenium-Webtreiber (in Java integriert) APIs, um jeden Browser nativ zu steuern, während Capybara als SDK betrachtet werden kann, das Ruby-Entwicklern die Verwendung des Selenium-Webtreibers erleichtert. Der Selenium-Webtreiber ist jedoch auch ein SDK für sich, da er die Interaktion mit verschiedenen nativen Browsertreibern in einem Paket kombiniert.
quelle
Ich bin mir nicht sicher, ob es eine offizielle Definition dieser beiden Begriffe gibt. Ich verstehe eine API als eine Reihe dokumentierter programmierbarer Bibliotheken und unterstützender Quellen wie Header oder IDL-Dateien. SDKs enthalten normalerweise APIs, fügen jedoch häufig Compiler, Tools und Beispiele zum Mix hinzu.
quelle
API ist eine Spezifikation, wie etwas zu tun ist, eine Schnittstelle wie "Die Eisenbahnschienen sind vier Fuß voneinander entfernt und die Metallstange ist 1 Zoll breit". Nachdem Sie die API haben, können Sie jetzt einen Zug bauen, der auf diese Eisenbahn passt Tracks, wenn Sie irgendwohin wollen. API ist nur eine Information darüber, wie Sie Ihren Code erstellen, sie macht nichts.
SDK ist ein Paket aktueller Tools, die sich bereits Sorgen um die Spezifikationen gemacht haben. "Hier ist ein Zug, etwas Kohle und ein Wartungsmann. Verwenden Sie ihn, um von Ort zu Ort zu fahren." Mit dem SDK sorgen Sie sich nicht um Einzelheiten. Ein SDK ist ein tatsächlicher Code, der von sich aus verwendet werden kann, um etwas zu tun, aber natürlich startet der Zug nicht spontan, Sie müssen immer noch einen Schaffner beauftragen, den Zug zu steuern.
SDKs haben auch eigene APIs. "Wenn Sie den Zug antreiben möchten, geben Sie Kohle hinein", "Ziehen Sie den blauen Hebel, um den Zug zu bewegen.", "Wenn der Zug sich lustig verhält, rufen Sie den Wartungsmann an" usw.
quelle
API = Wörterbuch der verfügbaren Wörter und ihrer Bedeutungen (und der erforderlichen Grammatik, um sie zu kombinieren)
SDK = Ein Textverarbeitungssystem… für 2-jährige Babys… das direkt aus Ideen schreibt
Obwohl Sie nach einigen Jahren zur Schule gehen und ein Meister in Ihrer Sprache werden KÖNNTEN, können Sie mit dem SDK in kürzester Zeit ganze aussagekräftige Sätze schreiben (Verzeihen Sie die Tatsache, dass Sie in diesem Beispiel als Baby noch nicht einmal bekommen haben um eine andere Sprache zu lernen, um zumindest die Verwendung des SDK zu lernen.)
quelle
Wie wäre es ... Es ist, als ob Sie ein Heimkinosystem in Ihrem Haus installieren möchten. Die Verwendung einer API ist wie das Abrufen aller Drähte, Schrauben, Bits und Teile. Die Möglichkeiten sind endlos (nur durch die erhaltenen Teile eingeschränkt), aber manchmal überwältigend. Ein SDK ist wie ein Kit. Sie müssen es noch zusammensetzen, aber es ist eher so, als würden Sie vorgeschnittene Teile und Anweisungen für ein IKEA-Bücherregal erhalten als eine Schachtel Schrauben.
quelle
Sie verwenden ein SDK, um auf die Funktionen einer Bibliothek zuzugreifen, und eine API, um sie zu steuern.
quelle
API = Anwendungsprogrammierschnittstelle SDK = Software Development Kit
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.
Beispiele für APIs: Java-API, Google Maps-API, Flash Player-API.
Beispiele für SDKs: JDK, GWT, Flex SDK.
quelle