Schnittstellen zur Programmierung von Anwendungen (APIs) dienen als Kommunikationswege zwischen verschiedenen Softwarekomponenten. Im Gegensatz dazu stellen Software Development Kits (SDKs) umfassende Toolsets dar, welche APIs für spezifische Aufgaben bündeln.
Die Grundlage eines jeden Entwickler-Ökosystems bilden zwei wesentliche Werkzeuge: das SDK und die API. In der heutigen Zeit ist ein klares Verständnis ihrer grundlegenden Unterschiede von entscheidender Bedeutung, da beide im modernen Softwareentwicklungsprozess intensiv genutzt werden.
Diese beiden Elemente treiben die gesamte Entwicklungslandschaft an. SDKs und APIs sind die Haupttreiber für die Implementierung von Schnittstellen und der Webkommunikation mit externen Anbietern.
Sowohl SDKs als auch APIs tragen maßgeblich zur Verbesserung der Gesamtfunktionalität und Leistung Ihrer Applikationen bei. Um die Benutzererfahrung sowohl für interne Teams als auch für Endnutzer zu optimieren, ist es unerlässlich, die Funktionsweise und die Unterschiede dieser Tools zu verstehen und zu erkennen, wie sie den Softwareentwicklungsprozess unterstützen.
Lassen Sie uns diese Werkzeuge nun genauer untersuchen.
Was genau ist ein SDK?
SDK, das Akronym für „Software Development Kit“ (auch bekannt als „devkit“), bezeichnet eine Sammlung von Softwareentwicklungswerkzeugen, die speziell auf bestimmte Plattformen zugeschnitten sind. Zu diesen Werkzeugen gehören beispielsweise Debugger, Compiler, Codebibliotheken (Frameworks) sowie Routinen und Subroutinen, die an ein bestimmtes Betriebssystem angepasst sind.
Die Kernbestandteile eines typischen SDKs umfassen:
- Debugger: Ein Debugger hilft Entwicklern dabei, Fehler in ihrem Programmcode aufzuspüren und zu beheben.
- Compiler: Ein Compiler ist ein Programm, das Anweisungen in einer Programmiersprache verarbeitet und in eine für den Computer verständliche Sprache, den „Maschinencode“, übersetzt.
- Codebeispiele: Diese zeigen Programmieraufgaben und Szenarien auf, um das Verständnis einer Applikation oder Webseite zu erleichtern.
- Routinen und Subroutinen: Eine Routine oder Subroutine ist eine Methode, Funktion, Prozedur, ein Unterprogramm oder ein Codeabschnitt, der von überall im Programmcode aufgerufen und ausgeführt werden kann. Die Funktion „Datei speichern“ wird beispielsweise über eine Routine ausgeführt.
- Codebibliothek: Eine Codebibliothek ermöglicht Entwicklern, bereits vorhandene Ressourcen (wie Codeabschnitte) wiederzuverwenden, anstatt sie neu entwickeln zu müssen.
- Test- und Analysewerkzeuge: Mit diesen Werkzeugen lässt sich die Performance der Anwendung in Test- und Produktionsumgebungen bewerten.
- Dokumentation: Entwickler nutzen die bereitgestellte Dokumentation während des Entwicklungsprozesses als Referenz.
In der Regel enthält ein SDK mindestens eine API, da Anwendungen ohne APIs nicht interagieren, Daten austauschen, funktionieren oder zusammenarbeiten können.
Wie arbeitet ein SDK?
SDKs stellen Entwicklern die Werkzeuge zur Verfügung, die sie für eine unkomplizierte Entwicklung von Softwareapplikationen benötigen.
Beispielsweise stellt Facebook SDKs für Googles Android und Apples iOS bereit. Diese SDKs funktionieren als Open-Source-Bibliotheken, die es Ihnen ermöglichen, Facebook in Ihre Android- oder iOS-App zu integrieren. Microsoft bietet das .NET Framework SDK für umfangreiche Applikationen an, welches Beispiele, Werkzeuge und Bibliotheken für die Windows-Anwendungsentwicklung beinhaltet.
Nach dieser Einführung in die Kernfunktionen von SDKs, betrachten wir nun genauer deren Funktionsweise.
- Zunächst wird das benötigte „Kit“ für Ihre Plattform erworben, heruntergeladen und installiert. Dies kann das Herunterladen von Dateien umfassen, die Komponenten, Befehlssätze und Beispiele beinhalten.
- Als Nächstes können Sie auf alle notwendigen Tools und die integrierte Entwicklungsumgebung (IDE) zugreifen, um eine neue Applikation zu entwickeln. Entwickler beginnen dann mit der Programmierung ihrer Anwendungen. Die Bedeutung des Compilers wird hier offensichtlich.
- Schließlich können Anleitungen, Dokumentation, Codebeispiele und Analysewerkzeuge zur Überprüfung der neuen Anwendung herangezogen werden.
Nach dem Abschluss dieser Schritte kann Ihre SDK-Reise beginnen.
Verschiedene Typen von SDKs
Web- und Mobile-App-Entwicklungen basieren größtenteils auf SDKs. Sehen wir uns einige der häufigsten SDK-Typen an:
- Plattform-SDKs: Diese SDKs sind die essentiellen Komponenten für die App-Entwicklung jeder Plattform. Das Windows 10 SDK wird beispielsweise zur Entwicklung von Windows 10 Store Apps genutzt.
- Erweiterungs-SDKs: Diese optionalen SDKs werden zur Erweiterung und Anpassung der Entwicklungsumgebung verwendet. Sie sind jedoch nicht zwingend notwendig, um Apps für eine bestimmte Plattform zu entwickeln.
- Programmiersprachenspezifische SDKs: Solche SDKs werden verwendet, um Programme in bestimmten Sprachen zu entwickeln. Das Java Developer Kit (JDK) wird beispielsweise für die Entwicklung von Anwendungen in der Programmiersprache Java verwendet.
- Analytics-SDKs: Diese SDKs sammeln Daten wie Benutzerverhalten und -aktionen. Ein Beispiel hierfür ist das Analytics SDK von Google.
- Monetarisierungs-SDKs: Solche SDKs werden von Entwicklern eingesetzt, um Werbung in bestehenden Apps einzublenden und damit Einkünfte zu erzielen.
Vorteile von SDKs
SDKs bieten der Entwickler-Community zahlreiche Vorteile. Hauptsächlich ersparen sie ihnen den Aufwand, sich ausführlich mit Software-Entwicklungskits auseinanderzusetzen, um Applikationen zu kreieren.
- Zugriff auf vorgefertigte Komponenten: SDKs bieten einfachen Zugang zu vorgefertigten Teilen, was die benötigte Zeit für die Softwareentwicklung reduziert. Das Android Maps SDK ermöglicht es Ihnen beispielsweise, verschiedene Standortdienste in Ihrer App zu konfigurieren und zu implementieren. Das SDK bietet einfachen Zugriff auf Komponenten und integriert sie in die App (z. B. Standortkoordinaten wie Längengrad, Breitengrad, Dienste innerhalb eines bestimmten Standorts).
- Nahtlose Integrationen: SDKs ermöglichen reibungslosere Integrationen mit unterschiedlicher Software und Anwendungen. Sie bieten über eine gut strukturierte Dokumentation ebenfalls direkten Zugriff auf notwendige Informationen.
- Abkürzungen für Entwickler: SDKs erlauben Entwicklern die Wiederverwendung von Codeabschnitten, wodurch der Entwicklungszyklus verkürzt wird. Das gibt Entwicklern genügend Zeit, sich auf essenzielle Aufgaben zu konzentrieren.
- Integrierter Support: SDKs werden mit integriertem Code-Know-how (Support) inklusive einer ausführlichen Dokumentation ausgeliefert. Entwickler sind also nicht darauf angewiesen, externe Experten zur Lösung ihrer Fragen zu konsultieren.
- Erschwinglichkeit: Die genannten Aspekte helfen dabei, unnötige Ausgaben in der Softwareentwicklung und in der Phase nach der Veröffentlichung zu vermeiden.
Lassen Sie uns nun zur zwischengeschalteten API-Komponente übergehen.
Was verbirgt sich hinter dem Begriff API?
API, das Akronym für „Application Programming Interface“, definiert eine Reihe von Regeln, die festlegen, wie Plattformen, Geräte oder Anwendungen miteinander kommunizieren. Eine API kann entweder Teil eines SDKs sein oder unabhängig davon existieren. In beiden Szenarien wird eine systemische Synchronität zwischen verschiedenen Anwendungen ermöglicht.
Entwickler nutzen die Vorteile von unfreier (proprietärer) oder Cloud-basierter Software, um effektive APIs zu erstellen. Sie können dann Dienste anbieten, auf die Benutzer über integrierte APIs zugreifen können.
Eine API ist vergleichbar mit einer Vereinbarung zwischen zwei Parteien. Sie sorgt für einen direkten Informationsaustausch, inklusive Richtlinien für die Übertragung der Informationen.
Es ist bekannt, dass einige APIs eine „Schnittstelle“ bereitstellen, daher werden „API“ und „Schnittstelle“ oft als synonym betrachtet.
Schlüsselkomponenten
Eine API besteht aus zwei Hauptkomponenten:
- Technische Spezifikationen: Spezifikationen für eine API beziehen sich auf Informationen zu den Protokollen für die API-Integration (z. B. mit anderen Plattformen, Anwendungen). Sie müssen gut dokumentiert sein, um eine effektive Nutzung der API zu gewährleisten.
- Die Schnittstelle: Die Schnittstelle bietet einen Weg zum Zugriff auf APIs. Sie kann über ein Schlüsselwort aufgerufen werden, wenn es sich um eine Web-API handelt, oder über eine separate Schnittstelle.
Sehen wir uns nun an, wie eine typische API arbeitet.
Wie arbeitet eine API?
APIs ermöglichen einen unkomplizierten Datenaustausch zwischen unterschiedlichen Applikationsgruppen.
Nehmen wir als Beispiel eine Lebensmittel-App, mit der Ihre Nutzer online nach Lebensmitteln suchen und diese kaufen können. Ihre App bietet diesen Dienst bereits an. Nun möchten Ihre Nutzer zusätzlich nach Lebensmittelgeschäften in einem bestimmten Ort suchen können. In diesem Fall könnten Sie Ihre App mit etablierten Lebensmitteldienstleistern in der Stadt integrieren. Durch die Einbindung der Geolokalisierungs-API könnten Ihre Nutzer nach Lebensmittelgeschäften suchen, ohne eine separate Geolokalisierungsanwendung zu benötigen.
Aus technischer Sicht folgt ein API-Aufruf den folgenden Schritten:
- Ein Anwendungsnutzer initiiert eine Aufgabe über Ihre App, indem er eine Anfrage erstellt.
- Die API leitet die Anfrage weiter, indem sie den Webserver anspricht. Die API weiß, wohin die Anfrage gesendet werden muss, da die Anfrage in der Regel darauf abzielt, den API-Endpunkt zu erreichen. Die Server-URL definiert den Endpunkt.
- Schließlich wird die Aufgabe ausgeführt, wenn die Datenbank oder die Anwendung eines Drittanbieters den angeforderten Dienst bereitstellt.
Arten von APIs
REST (Representational State Transfer): REST-APIs sind einer der gebräuchlichsten API-Typen, bei dem die API eine Reihe von Prinzipien einhalten muss, darunter:
- Client-Server-Architektur: Änderungen auf dem Server sollten keine Auswirkungen auf den Client haben.
- Kommunikation zwischen Client und Server über HTTP, CRUD (Create, Read, Update, Delete) und JSON.
- Zustandslosigkeit: Der Zustand des Clients wird zwischen zwei Anfragen nicht auf dem Server gespeichert.
REST wird üblicherweise zur Datenübertragung verwendet. Die Facebook-API wird beispielsweise verwendet, um den Namen, den Standort und das Profilbild eines Facebook-Nutzers an eine andere App zu übertragen.
RPC (Remote Procedure Call): Dies wird zur Ausführung von Code auf einem anderen System verwendet. Im Gegensatz zu REST, wo der Client nur Daten anfordert, ruft RPC Methoden auf. Anfragen können im XML- oder JSON-Format gesendet werden und werden XML-RPC und JSON-RPCs genannt. Der Absender der Anfrage erwartet eine Antwort des anderen Systems nach der Ausführung der Methode.
Beispielsweise authentifiziert eine Zahlungs-Gateway-API eine Kreditkartennummer (führt Code auf ihrer Seite aus) und sendet eine Erfolgs- oder Fehlermeldung an die aufrufende App.
SOAP-APIs (Simple Object Access Protocol): Dies sind webbasierte APIs, die in Fällen genutzt werden, in denen verbesserter Datenschutz und höhere Sicherheit gefordert sind. Sie können über Webprotokolle wie HTTP, SMTP, TCP/IP usw. kommunizieren.
SOAP ist eine Reihe von Protokollen, während REST ein Architekturmodell darstellt. Somit ist es möglich, RESTful-APIs mit SOAP-basierten Protokollen zu implementieren.
Vorteile von APIs
APIs bringen sowohl für normale Nutzer als auch für Entwickler Vorteile mit sich. Entwickler können mit den Verantwortlichen in Unternehmen zusammenarbeiten, um Systeme zu aktualisieren und das Geschäftspotenzial des Unternehmens zu erweitern.
Obwohl sich die Vorteile aus der Entwicklerperspektive ergeben, verbessern APIs sowohl die Entwickler- als auch die Endnutzererfahrung. Betrachten wir nun einige der Vorteile, die APIs bieten:
- Integration: APIs verbinden unterschiedliche Softwareanwendungen und verbessern gleichzeitig die Gesamtleistung einer Applikation oder eines Produkts.
- Vereinfachter Entwicklungszyklus: APIs helfen Entwicklern, den Softwareentwicklungszyklus zu verkürzen. Die API-Automatisierung ist hier von zentraler Bedeutung, da Computer anstelle von manuellen Arbeitskräften zur Verwaltung der Arbeit genutzt werden. APIs ermöglichen es Unternehmen, ihre Arbeitsabläufe sofort zu aktualisieren.
- Effizienz: Mit API-Zugang können einmal erstellte Inhalte problemlos geteilt und über verschiedene Kanäle verbreitet werden.
- Personalisierung: APIs ermöglichen Anpassungen. Jeder Nutzer oder jedes Unternehmen kann davon profitieren, indem es Inhalte oder Dienste an seine individuellen Bedürfnisse anpasst.
Der Unterschied zwischen SDK und API
Lassen Sie uns den Unterschied zwischen den beiden Komponenten anhand von Beispielen verdeutlichen.
Facebook bietet eine Reihe von Lösungen, die sowohl professionellen Entwicklern als auch aktiven Nutzern Werkzeuge zur Verfügung stellen. Es beinhaltet sowohl eine API als auch ein SDK. Diese Werkzeuge haben jeweils unterschiedliche Funktionen und werden anwendungsspezifisch eingesetzt. Beginnen wir mit den APIs.
Facebook APIs
In Zusammenarbeit mit Drittentwicklern ermöglichen Facebook-APIs eine Verbindung zu Facebook und den Zugriff auf benötigte Nutzerdaten. Dies dient zur Personalisierung von Applikationsfunktionen.
Beispielsweise verwendet eine App zur Filmbuchung die Facebook-API, damit Sie sich mit Ihrer Facebook-ID in der App anmelden können. Ihr Name und Ihre Profildetails werden an die App zur Filmbuchung weitergegeben, um Ihre Authentizität zu gewährleisten und zu verhindern, dass Sie sich ein separates Login und Passwort merken müssen. Außerdem kann die App zur Filmbuchung Ihnen relevante Anzeigen zeigen, während Sie durch Ihren Facebook-Feed scrollen.
Eines der Alleinstellungsmerkmale der API ist die Verbindung mit einem Graph-API-Explorer. Der Graph-API-Dienst erstellt Beziehungen zwischen Benutzern, Konten, Aktualisierungen, Gruppen und mehr.
GET graph.facebook.com/me?fields=posts.limit(5){message}
Hier sehen wir eine beispielhafte API-Ausgabe zum besseren Verständnis. Der obige Aufruf ruft bis zu fünf Ihrer veröffentlichten Beiträge und den Text für jeden einzelnen Beitrag ab.
Nehmen wir ein weiteres Beispiel.
GET graph.facebook.com/me?fields=posts.limit(5){message,privacy{value}}
Die obige API-Abfrage gibt den Text und die Datenschutzeinstellungen jedes Ihrer veröffentlichten Beiträge zurück.
Beide APIs werden über die Graph-API ausgeführt und unterstützen dadurch die Analysegenerierung (d.h. relationale Daten).
Obwohl das obige Beispiel ein einfacher Anwendungsfall ist, stellen Sie sich ein anderes Szenario vor, in dem ein Restaurantbesitzer eine Liste von Nutzern erstellen möchte, die an einer Party in seinem Restaurant teilgenommen haben. Der Eigentümer könnte einen Facebook-API-Aufruf nutzen, um eine Liste der anwesenden Nutzer zu erstellen, indem er auf die während der Veranstaltung geklickten Fotos und die markierten Facebook-Nutzer zugreift.
Darüber hinaus könnten die Restaurantbetreiber auch eine Liste der sozialen Konten der Nutzer haben und diese für zukünftige Werbekampagnen nutzen. Ohne APIs kann die Nutzung solcher Funktionen umständlich sein. Als Nächstes betrachten wir die Facebook SDKs.
Facebook SDKs
Von Facebook bereitgestellte SDKs sind speziell für die „Anwendungserstellung“ konzipiert. Es gibt beispielsweise viele Spiele, die Sie in der Facebook-App spielen können. Diese sind für die Ausführung innerhalb von Facebook konzipiert, und Sie benötigen ein SDK, um solche Apps zu entwickeln.
Schauen wir uns das Facebook SDK für iOS an. Es ermöglicht die Entwicklung von Facebook-Applikationen speziell für iOS.
Betrachten Sie den folgenden Code-Abschnitt, der das Facebook SDK für iOS veranschaulicht:
/** * For more details, please take a look at: * developers.facebook.com/docs/reference/ios/current/class/FBSDKAppEvents */ - (void)applicationDidBecomeActive:(UIApplication *)application { [FBSDKAppEvents activateApp]; }
Das obige Beispiel wird zum Protokollieren von Ereignissen im Zusammenhang mit App-Aktivierungen verwendet.
Die Struktur des Aufrufs ist in beiden Fällen unterschiedlich. Eine API führt eine Aktion aus, die auf vorhandenen Quellen und Funktionen basiert. Im Gegensatz dazu definiert das SDK zuerst die Funktion und ruft dann die Quelle und die Funktion auf.
Die Wahl zwischen SDK und API
APIs beschreiben im Wesentlichen, wie unterschiedliche Plattformen synchron zusammenarbeiten können. Sie helfen bei der Anwendungsintegration mithilfe von Protokollen und Spezifikationen. Sie stellen somit eine der wichtigsten Komponenten eines SDKs dar. APIs können jedoch nicht verwendet werden, um Apps von Grund auf neu zu entwickeln.
SDKs erleichtern die Erstellung einer neuen Anwendung oder Software, die für eine bestimmte Programmiersprache oder Plattform konzipiert ist. Ein SDK beinhaltet in der Regel mindestens eine API zur externen Kommunikation.
Wenn Sie eine App für die Ausführung auf einer bestimmten Plattform, wie z. B. iOS, entwickeln möchten, nutzen Sie das SDK für diese Plattform. Um mit anderen Web-Applikationen wie Facebook zu kommunizieren, nutzen Sie die API dieser App.
Fazit 👨🏫
Zusammenfassend lässt sich der Unterschied zwischen einem SDK und einer API wie folgt darstellen:
- SDKs enthalten oft APIs, aber eine API enthält keine SDKs.
- Ähnlich einem Fundament eines Hauses, das es dem Haus ermöglicht, aufrecht zu stehen, ermöglichen SDKs die Erstellung von Anwendungen.
- APIs definieren das Funktionieren und die Kommunikation von Anwendungen innerhalb der SDKs, vergleichbar mit Telefonleitungen, die den Kontakt zur Außenwelt ermöglichen.