Programmierschnittstelle

Schnittstelle zur Anwendungsprogrammierung
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 13. September 2013 um 14:34 Uhr durch Solaris3 (Diskussion | Beiträge) (Bedeutung). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Eine Programmierschnittstelle (englisch application programming interface, API; deutsch Schnittstelle zur Anwendungsprogrammierung) ist ein Programmteil, der von einem Softwaresystem anderen Programmen zur Anbindung an das System zur Verfügung gestellt wird. Im Gegensatz zu einer Binärschnittstelle (ABI) definiert eine Programmierschnittstelle nur die Programmanbindung auf Quelltext-Ebene.[1] Ein wesentlicher Bestandteil solch einer Schnittstelle ist meist die detaillierte Dokumentation der bereitgestellten Funktionen auf Papier oder als elektronisches Dokument.

Neben dem Zugriff auf Datenbanken oder Hardware wie Festplatte oder Grafikkarte kann eine Programmierschnittstelle auch das Erstellen von Komponenten der grafischen Benutzeroberfläche ermöglichen oder vereinfachen. Zum Beispiel ermöglicht die Programmierschnittstelle Windows Application Programming Interface des bekannten Computer-Betriebssystems Microsoft Windows, dass externe Firmen überhaupt erst Software für dieses Betriebssystem entwickeln können.

Heutzutage stellen auch viele Internetdienste Programmierschnittstellen zur Verfügung. Im weiteren Sinne wird die Schnittstelle jeder Bibliothek (Library) als Programmierschnittstelle bezeichnet.

Abgrenzung: Zu unterscheiden ist diese Art funktionaler 'Programmierschnittstellen' von den vielen anderen Schnittstellen, die in der Programmierung angewendet werden – zum Beispiel die Parameter, die beim Aufruf von Unterprogrammen vereinbart und übergeben werden.

Einteilung nach Typklassen

Programmierschnittstellen lassen sich in folgende Typklassen einteilen:

Funktionsorientierte Programmierschnittstellen

Funktionsorientierte Programmierschnittstellen kennen nur Funktionen mit oder ohne Rückgabewert als Mittel der Kommunikation. Dabei wird fast immer das Konzept der Handles verwendet. Man ruft eine Funktion auf und bekommt ein Handle zurück. Mit diesem Handle lassen sich weitere Funktionen aufrufen, bis abschließend das Handle wieder geschlossen werden muss. Das BIOS eines Personal Computer ist die älteste Programmierschnittstelle für diesen Rechnertyp.

Dateiorientierte Programmierschnittstellen

Dateiorientierte Programmierschnittstellen werden über die normalen Dateisystemaufrufe open, read, write und close angesprochen. Sollen Daten an ein Objekt gesendet werden, werden diese mit write geschrieben, sollen welche empfangen werden, werden sie mit read gelesen. Unter UNIX ist dieses Prinzip bei der Ansteuerung von Gerätetreibern weit verbreitet.

Objektorientierte Programmierschnittstellen

Objektorientierte Programmierschnittstellen verwenden Schnittstellenzeiger und sind damit deutlich flexibler als die funktionsorientierten Programmierschnittstellen. Häufig wird eine Typbibliothek mitgegeben.

Protokollorientierte Programmierschnittstellen

Protokollorientierte Programmierschnittstellen sind unabhängig vom Betriebssystem und der Hardware. Allerdings muss das Protokoll stets neu implementiert werden. Um diesen Aufwand zu minimieren, wird die protokollorientierte Schnittstelle durch eine funktions- oder interfaceorientierte Schnittstelle gekapselt. Man kann hier weiterhin zwischen allgemeinen (z. B. SOAP) und anwendungsspezifischen (z. B. SMTP)-Protokollen unterscheiden.

Einteilung nach Entwicklungsstufen

Bei Programmierschnittstellen für Anwendungssoftware wird darüber hinaus auch nach Entwicklungsstufe unterschieden. Ausgangspunkt dieser Unterscheidung ist die Beobachtung, dass sich Operationen der Programmierschnittstelle oft erst im Laufe der Zeit herausentwickeln. Von großer Wichtigkeit ist dabei, ob in früheren Versionen der Programmierschnittstelle verfügbare Operationen auch in allen Folgeversion noch vorhanden sind und auch dieselbe Bedeutung haben. Bei einer stabilen Schnittstelle braucht die Anwendung nicht mehr geändert zu werden. Unterschieden wird zwischen sich entwickelnden (engl. evolving) und stabilen Programmierschnittstellen (engl. stable API). Als Refactoring wird die Fortentwicklung einer Programmierschnittstelle bezeichnet, die keine Änderungen in den Anwenderprogrammen nach sich zieht.[2]

Bedeutung

Das Vorhandensein einer gut dokumentierten Programmierschnittstelle kann ein erheblicher Wettbewerbsvorteil für ein Software-Produkt sein, da auf diese Weise andere Softwarefirmen oder freiberufliche Programmierer in die Lage versetzt werden, zusätzliche Software für dieses System zu erstellen. Mit dem Angebot zusätzlicher Software von Drittanbietern steigt wiederum die Attraktivität des Ausgangssystems. Die Geschäftspolitik bezüglich dieser Schnittstelle kann damit über den kommerziellen Erfolg etwa eines Betriebssystems oder einer Spielekonsole entscheiden, so verlangen manche Software-Anbieter erhebliche Beträge für die zugehörige, notwendige Dokumentation, was eine Eintrittsbarriere für interessierte Programmierer darstellt. Auch kann vorgesehen sein, dass auf die API nur mit einem teuer zu erwerbenden Software-Entwicklungssystem zugegriffen werden kann.

Siehe auch

Literatur

Einzelnachweise

  1. Oliver Thoma: Mac OS X 10.4 Tiger. Google Bücher, 2006, S. 57, abgerufen am 27. März 2011.
  2. Danny Dig and Ralph Johnson: How do APIs evolve? A story of refactoring, in Journal of Software Maintenance and Evolution: Research and Practice, 2006.