www.wikidata.de-de.nina.az
Eine Programmierschnittstelle auch Anwendungsschnittstelle genauer Schnittstelle zur Programmierung von Anwendungen haufig nur kurz API genannt von englisch application programming interface wortlich Anwendungs programmier schnittstelle ist ein Programmteil der von einem Softwaresystem anderen Programmen zur Anbindung an das System zur Verfugung gestellt wird Im Gegensatz zu einer Binarschnittstelle ABI definiert eine Programmierschnittstelle nur die Programmanbindung auf Quelltext Ebene Zur Bereitstellung solch einer Schnittstelle gehort meist die detaillierte Dokumentation der Schnittstellen Funktionen mit ihren Parametern auf Papier oder als elektronisches Dokument Standardisierte Programmier schnittstellen APIs uber unterschiedliche Betriebssysteme sorgen fur Quelltextkompatibilitat d h Quelltext kann ohne Anpassungen fur die jeweiligen Systeme erfolgreich kompiliert werden Neben dem Zugriff auf Datenbanken oder Hardware wie Festplatte oder Grafikkarte kann eine Programmierschnittstelle auch das Erstellen von Komponenten der grafischen Benutzeroberflache ermoglichen oder vereinfachen Zum Beispiel ermoglicht die Programmierschnittstelle Windows Application Programming Interface des Betriebssystems Windows dass externe Firmen uberhaupt erst Software fur dieses Betriebssystem entwickeln konnen Heutzutage stellen auch viele Online Dienste Programmierschnittstellen zur Verfugung diese heissen dann Webservice Im weiteren Sinne wird die Schnittstelle jeder Bibliothek englisch library als Programmierschnittstelle bezeichnet 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 ubergeben werden Inhaltsverzeichnis 1 Einteilung nach Typklassen 1 1 Funktionsorientierte Programmierschnittstellen 1 2 Dateiorientierte Programmierschnittstellen 1 3 Objektorientierte Programmierschnittstellen 1 4 Protokollorientierte Programmierschnittstellen 2 Einteilung nach Entwicklungsstufen 3 Bedeutung 3 1 Beispiele 4 Siehe auch 5 Literatur 6 EinzelnachweiseEinteilung nach Typklassen BearbeitenProgrammierschnittstellen lassen sich in folgende Typklassen einteilen funktionsorientiert z B Dynamic Link Library dateiorientiert z B Geratedateien unter Unix objektorientiert z B ActiveX DLLs protokollorientiert z B FTP Funktionsorientierte Programmierschnittstellen Bearbeiten Funktionsorientierte Programmierschnittstellen kennen nur Funktionen mit oder ohne Ruckgabewert als Mittel der Kommunikation Dabei wird fast immer das Konzept der Handles verwendet Man ruft eine Funktion auf und bekommt ein Handle zuruck Mit diesem Handle lassen sich weitere Funktionen aufrufen bis abschliessend das Handle wieder geschlossen werden muss Dateiorientierte Programmierschnittstellen Bearbeiten Dateiorientierte Programmierschnittstellen werden uber 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 Geratetreibern weit verbreitet Objektorientierte Programmierschnittstellen Bearbeiten Objektorientierte Programmierschnittstellen verwenden Schnittstellenzeiger und sind damit deutlich flexibler als die funktionsorientierten Programmierschnittstellen Haufig wird eine Typbibliothek mitgegeben Protokollorientierte Programmierschnittstellen Bearbeiten Protokollorientierte Programmierschnittstellen sind unabhangig 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 BearbeitenBei Programmierschnittstellen fur Anwendungssoftware wird daruber hinaus auch nach Entwicklungsstufe unterschieden Ausgangspunkt dieser Unterscheidung ist die Beobachtung dass sich Operationen der Programmierschnittstelle oft erst im Laufe der Zeit herausentwickeln Von grosser Wichtigkeit ist dabei ob in fruheren Versionen der Programmierschnittstelle verfugbare Operationen auch in allen Folgeversionen noch vorhanden sind und auch dieselbe Bedeutung haben Bei einer stabilen Schnittstelle braucht die Anwendung nicht mehr geandert 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 Anderungen in den Anwenderprogrammen nach sich zieht 1 Bedeutung BearbeitenDas Vorhandensein einer gut dokumentierten Programmierschnittstelle API kann ein erheblicher Wettbewerbsvorteil fur ein Software oder ein die Software enthaltendes Hardware Produkt sein da auf diese Weise andere Softwarefirmen oder freiberufliche Programmierer in die Lage versetzt werden zusatzliche Software fur dieses System zu erstellen Mit dem Angebot zusatzlicher Programme von Drittanbietern steigt wiederum die Attraktivitat des Ausgangssystems etwa eines Computer Betriebssystems einer Spielkonsole oder einer Smartphone Familie Die Geschaftspolitik bezuglich dieser Schnittstelle kann damit uber den kommerziellen Erfolg einer Software und gegebenenfalls auch der zugehorigen Hardware entscheiden So verlangen manche Software Anbieter erhebliche Geldbetrage fur die zugehorige notwendige Dokumentation was eine Eintrittsbarriere fur interessierte Programmierer darstellt Auch kann vorgesehen sein dass auf die API nur mit einem teuer zu erwerbenden Software Entwicklungssystem zugegriffen werden kann Ein weiterer Faktor fur den Erfolg kann die oben erwahnte Langzeit Stabilitat der API sein denn bei haufigen Anderungen ist auch der Programmierer einer Zusatzanwendung jedes Mal zur Anderung seiner Software gezwungen damit sie weiter funktioniert Dies kann erheblichen Arbeitsaufwand und damit Kosten verursachen was die Entwicklung kommerziell weniger attraktiv macht Beispiele Bearbeiten Die Entwicklungsumgebung Xcode mit der auf die API des Smartphone Betriebssystems Apple iOS zugegriffen werden kann steht zwar als kostenloser Download bereit aber nur fur Mac Computer von Apple Zudem mussen Entwickler ein Geheimhaltungsabkommen unterzeichnen und einen Mitgliedsbeitrag entrichten was als Hemmnis bewertet wird zumal Apple auf dem Markt fur Smartphones bzw Mobile Apps durch den grossen Erfolg des Android Betriebssystems mit starker Konkurrenz konfrontiert ist 2 Fur die Betriebssystem Familie Unix existiert der von der IEEE festgelegte POSIX Standard Die Preise fur die Dokumentation dieser API sind sehr hoch und die Veroffentlichung ist durch Urheberrecht untersagt In neuerer Zeit ist deshalb eine Tendenz zur Single UNIX Specification der Open Group zu verzeichnen Diese Standards sind offen im Internet frei verfugbar und alle konnen Vorschlage dazu einreichen Siehe auch BearbeitenSchnittstelle Objektorientierung IMAPI Image Mastering API Literatur BearbeitenErich Gamma Richard Helm Ralph Johnson John Vlissides Design Patterns Elements of Reusable Object Oriented Software Addison Wesley Reading MA u a 1995 ISBN 0 201 63361 2 Joshua Bloch How to Design a Good API and Why it Matters In ACM Hrsg Companion to the 21st ACM SIGPLAN symposium on OOPSLA Oktober 2006 doi 10 1145 1176617 1176622 googleusercontent com PDF 567 kB Einzelnachweise Bearbeiten Danny Dig R Johnson How do APIs evolve A story of refactoring In Journal of Software Maintenance and Evolution Research and Practice Wiley Chichester New York 2006 S 1 26 All Your Apps Are Belong to Apple The iPhone Developer Program License Agreement Electronic Frontier Foundation 9 Marz 2010 abgerufen am 17 April 2010 Vorlage Cite web temporarNormdaten Sachbegriff GND 4430243 5 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Programmierschnittstelle amp oldid 229285306