Zum Inhalt springen

SEO Analyse » SEO Lexikon » a » API

APIAls API wird eine Schnittstelle zwischen zwei Programmen, einem Programm und dem Betriebssystem oder, allerdings sehr selten, eine Schnittstelle zwischen zwei Betriebssystemen bezeichnet. Das Application Programming Interface vereinfacht oder ermöglicht die Kommunikation der beiden Programmsysteme auf Quelltextebene, meistens handelt es sich um modulare Systeme und es müssen nicht alle Teile einer API verwendet werden.

Je nach Variante der API kann sie dem Programmierer verschiedene Möglichkeiten zur Verfügung stellen, mit anderen Programmen zu kommunizieren. So erlauben zum Beispiel die in verschiedene Betriebssysteme integrierten APIs, den Zugriff auf die systeminternen Bibliotheken zum Speichern von Daten auf der Festplatte, die Aktivierung von Grafik- und Soundkarte sowie das Starten von Diensten. Auch die Betriebssysteme nutzen APIs, um mit dem BIOS zu kommunizieren und Hardwaregeräte mit Treibern aktivieren zu können, die andernfalls im System deaktiviert blieben.

Verschiedene Arten von APIs

Je nach Anwendungsgebiet werden APIs in verschiedene Kategorien unterteilt. Die komplexeste und tiefgehendste von ihnen ist die funktionsorientierte API, die einem Programm direkten Zugriff auf die Hardware erlaubt. Hierbei entsteht eine Verkettung mehrerer Schnittstellen, das Programm sendet über die API des Betriebssystems einen Request zum Öffnen eines Handles, dieses wiederum gibt über seine eigene Schnittstelle den angefragten Wert an das Programm weiter.

Das Öffnen eines Handles kann dabei auch mehrere Funktionen freischalten, die dann über andere, daran anknüpfende Requests abgerufen werden können. Der Handle wird erst dann wieder geschlossen, wenn alle an ihn anknüpfenden Requests abgearbeitet sind. So wird sichergestellt, dass auch über mehrere Threads mit ihnen gearbeitet werden kann.

Eine weitere Form der APIs sind die dateiorientierten Schnittstellen. Diese erlauben die Kommunikation mit den an den Computer angeschlossenen Speichermedien. Primär können über solche Requests Dateien angefragt, überschrieben und ausgelesen werden, sekundär sind aber weitere Funktionen möglich, beispielsweise das Auslesen ganzer Ordnerstrukturen oder das Anlegen von Dateiinformationen für den Anwender. Zu beachten ist jedoch, dass eine solche Schnittstelle auch das Betriebssystem einbezieht, da dies für die Verteilung und Einhaltung der Zugriffsrechte zuständig ist.

Protokollorientierte APIs erlauben die Kommunikation zwischen zwei Programmen, unabhängig von Hardware und Betriebssystem. Hier werden keine Kernelbefehle oder systemkritischen Handles aufgerufen, die Kommunikation findet nur über die von den Programmen definierten Kanäle, beispielsweise Protokolle oder Bibliotheken statt. Ein Nachteil der protokollorientierten Schnittstellen ist ihre Unfähigkeit, auch über mehrere Programmkomponenten abgerufen zu werden. Bei der Erstellung eines neuen Moduls oder Systems müssen alle Requests neu gesendet und die entsprechenden Bibliotheken erneut in das Programm implementiert werden.

Trotz ihrer relativen Nachteile sind protokollorientierte APIs heute eine weit verbreitete Form, um zwei Programme miteinander kommunizieren zu lassen, da sie flexibel und gleichzeitig ressourcenschonend arbeiten. Hauptsächlich reicht die Implementierung von ein bis zwei Bibliotheken bereits aus, um den vollen Umfang an benötigter Kommunikation zu gewährleisten.

Schnittstellen in der objektorientierten Programmierung

Auch in der objektorientierten Programmierung werden APIs benutzt, um die Funktionalität verschiedener Klassen miteinander zu verknüpfen. Eine solche Schnittstelle ist aber an mehrere Restriktionen gebunden, die vorher von den Programmen definiert und akzeptiert werden müssen. Diese, auch als Kontrakt bezeichnete Definitionen, werden meist direkt über die Syntax ausgehandelt. Entspricht ein Request nicht der erwarteten Syntax, kann er von der Gegenseite abgelehnt werden, es kommt kein Handle zustande und die Kommunikation scheitert. Erst durch die Einhaltung der vorgeschriebenen Syntax kommt der Kontrakt zustande und die angefragte Klasse wird für die Kommunikation eröffnet. Die Einhaltung einer speziellen Syntax wird zwar bei den meisten Programmiersprachen auch intern vorausgesetzt, bei APIs wird dieser aber wegen des Zustandekommens von Kontrakten eine besondere Bedeutung zugemessen. Dabei muss die vorgegebene Syntax auch nicht immer mit der internen Programmsyntax übereinstimmen.

Ein populäres Beispiel dafür ist die sogenannte Object Constraint Language, mit der schon vor der Programmierung der eigentlichen Software mehrere Bedingungen, beispielsweise die Spezifikationen für einen Kontrakt, festgelegt werden können. Die Syntax der OCL ist stark vereinfacht, mit ihrer Hilfe sind nur elementare Deklarationen möglich. Zudem ist sie nicht zwingend Bestand der zur letztendlichen Programmierung benutzten Systemsprache.

Definition von anbietenden und ermöglichenden Interfaces

Bei der Implementierung einer API in eine Software müssen die Programmierer sich entscheiden, ob es sich bei diesem um ein anbietendes oder um eine ermöglichendes Interface handeln soll. Die Handhabung der beiden Arten unterscheidet sich stark, zudem sind bei ermöglichenden Interfaces unter Umständen nicht alle gewünschten Funktionen realisierbar.

Ein Beispiel für ein ermöglichendes Interface wäre ein einfacher Dateihandle, das Programm definiert ein Interface „getData“, mit dessen Hilfe es möglich ist, die jüngst von der Software geschriebenen Daten auszulesen. Nutznießer des Interfaces ist aber nicht das Programm selbst, da es die von ihm geschriebenen Daten auch über einen einfachen Befehl auslesen könnte, sondern ein anderes Programm, dass diese über den Request getData anfragt. Umgekehrt handelt es sich um ein anbietendes Interface, wenn das Programm selbst den Request anfragt und von der Gegenstelle einen Wert erhält. Diese ist heute auch die geläufigste Art der APIs, da man so ein bestimmtes Bouqet an Funktionen zur Verfügung stellt und der Programmierer selbst entscheidet, welche davon er benötigt.

Veränderung bei Interfaces und Schnittstellen

Die heutige Software befindet sich im ständigen Wandel, Patches und Updates führen dazu, dass Fehler im Programm ausgemerzt und neue Funktionen hinzugefügt werden. Dies ist auch für die API von elementarer Bedeutung, da sichergestellt werden muss, dass die ehemals definierten Interfaces auch in neueren Versionen noch funktionieren. Ist dies nicht der Fall, müssen alle Programme, die diese benutzen, ebenfalls einem Update unterzogen werden.

Definiert ein Programmierer im Zuge eines Updates ein Interface innerhalb einer API neu, so spricht man dabei vom „Evolving„. Die Schnittstelle entwickelt sich weiter und früher benutzte Interfaces können unter Umständen nicht mehr benutzt werden, weil sie entweder nicht mehr vorhanden sind oder sich ihre Funktion verändert hat. Im Gegenzug handelt es sich um eine „Stable API„, wenn die definierten Interfaces gleich bleiben und nur neue Funktionen oder Handles hinzugefügt wurden. Dann ist es nicht zwingend nötig, das Programm an die neue Schnittstelle anzupassen, obwohl sich daraus Vorteile ergeben könnten.

Zusammenfassung

Ein API, oder Application Programming Interface, ist eine Schnittstelle, die die Kommunikation zwischen Programmen, dem Betriebssystem oder in seltenen Fällen zwischen zwei Betriebssystemen ermöglicht. Es gibt unterschiedliche Arten von APIs, darunter funktionsorientierte, die direkten Hardwarezugriff erlauben, dateiorientierte, die mit Speichermedien kommunizieren und protokollorientierte, die zwischen Programmen ohne Hardware- und Betriebssystemabhängigkeit kommunizieren. In der objektorientierten Programmierung erlauben APIs die Kommunikation zwischen verschiedenen Klassen, wobei bestimmte Syntax- und Kontraktbedingungen eingehalten werden müssen.

Es gibt Unterscheidungen zwischen anbietenden und ermöglichenden Interfaces, wobei die Handhabung und Funktionalität zwischen ihnen variiert. Die Wahl bestimmt, ob eine Funktion von einem externen Programm oder von der Hauptsoftware selbst angefordert wird. Mit der ständigen Weiterentwicklung von Software durch Patches und Updates kann die Schnittstelle einer API sich verändern, was zu „Evolving“ APIs führt, oder sie bleibt stabil, was als „Stable API“ bezeichnet wird.

Es ist wichtig, dass bei Updates und Veränderungen die Kompatibilität mit älteren Versionen gewährleistet wird, um zu verhindern, dass Programme, die diese API verwenden, ebenfalls aktualisiert werden müssen.

Häufige Fragen und Antworten

Was ist eine API?

Als API wird eine Schnittstelle zwischen zwei Programmen, einem Programm und dem Betriebssystem oder, allerdings sehr selten, eine Schnittstelle zwischen zwei Betriebssystemen bezeichnet. Sie vereinfacht oder ermöglicht die Kommunikation der beiden Programmsysteme auf Quelltextebene. Je nach Variante der API kann sie dem Programmierer verschiedene Möglichkeiten zur Verfügung stellen, mit anderen Programmen zu kommunizieren.

Welche Arten von APIs gibt es?

Es gibt verschiedene Arten von APIs, je nach Anwendungsgebiet. Einige Beispiele sind funktionsorientierte APIs, dateiorientierte APIs und protokollorientierte APIs. Funktionsorientierte APIs erlauben direkten Zugriff auf die Hardware, dateiorientierte APIs ermöglichen die Kommunikation mit Speichermedien und protokollorientierte APIs ermöglichen die Kommunikation zwischen Programmen unabhängig von Hardware und Betriebssystem.

Wie werden APIs in der objektorientierten Programmierung genutzt?

In der objektorientierten Programmierung werden APIs verwendet, um die Funktionalität verschiedener Klassen miteinander zu verknüpfen. Durch APIs können verschiedene Klassen miteinander kommunizieren, wobei bestimmte Syntax- und Kontraktbedingungen eingehalten werden müssen.

Bildnachweis: iStock.com/putilich


Zurück zur Hauptseite: a
Alle Marken, Warenzeichen, Unternehmens- und Produkt-Bezeichnungen sind mit, aber auch ohne definitive Kennzeichnung, Eigentum des Inhabers der Rechte. Alle aufgeführten Elemente dienen lediglich der informativen Beschreibung.