API

Ein Programmierschnittstelle (API) ist eine Möglichkeit für zwei oder mehr Computerprogramme miteinander kommunizieren. Es ist eine Art Software Schnittstelleeinen Service für andere Teile von anbieten Software.[1] Ein Dokument oder Standard, das beschreibt, wie man eine solche Verbindung oder Schnittstelle erstellt oder verwendet API -Spezifikation. Ein Computersystem, das diesen Standard erfüllt implementieren oder entlarven eine API. Der Begriff API kann entweder auf die Spezifikation oder auf die Implementierung verweisen.

Im Gegensatz zu a Benutzeroberfläche, der einen Computer mit einer Person verbindet, verbindet eine Anwendungsprogrammierschnittstelle Computer oder Software -Teile miteinander. Es soll nicht direkt von einer Person verwendet werden (die Endbenutzer) anders als a Computerprogrammierer Wer integriert es in die Software. Eine API besteht häufig aus verschiedenen Teilen, die als Tools oder Dienste fungieren, die dem Programmierer zur Verfügung stehen. Ein Programm oder ein Programmierer, das eines dieser Teile verwendet Anruf dieser Teil der API. Die Anrufe, aus denen die API besteht Unterroutinen, Methoden, Anfragen oder Endpunkte. Eine API -Spezifikation Definiert Diese Anrufe, was bedeutet, dass sie erklärt, wie sie sie verwenden oder implementieren.

Ein Zweck von APIs ist zu Verstecken Sie die internen Details Wie ein System funktioniert, wird es nützlich sind, nur die Teile auszusetzen, die ein Programmierer nützlich hält und es konsistent hält, auch wenn sich die internen Details später ändern. Eine API kann für ein bestimmtes Systempaar individuell gebaut werden oder es kann sich um einen gemeinsam genutzten Standard ermöglichen Interoperabilität unter vielen Systemen.

Der Begriff API wird häufig verwendet, um sich darauf zu beziehen Web -APIs,[2] die eine Kommunikation zwischen Computern ermöglichen, die von der verbunden sind Internet. Es gibt auch APIs für Programmiersprachen, Software -Bibliotheken, Computer Betriebssysteme, und Computerhardware. APIs stammten in den 1940er Jahren, obwohl der Begriff erst in den 1960er und 1970er Jahren entstand. Die jüngsten Entwicklungen bei der Nutzung von APIs haben dazu geführt Microservices, die letztendlich locker gekoppelte Dienste sind, die über öffentliche APIs zugegriffen werden.[3]

Zweck

Bei der Erstellung von Anwendungen vereinfacht eine API die Programmierung durch Zusammenfassung Die zugrunde liegende Implementierung und nur die Aufdeckung von Objekten oder Aktionen, die der Entwickler benötigt. Während eine grafische Schnittstelle für eine E -Mail -Client Möglicherweise bietet einem Benutzer eine Schaltfläche, die alle Schritte zum Abholen und Hervorheben neuer E -Mails, einer API für Datei ausführt Input-Output könnte dem Entwickler a geben Funktion Dadurch kopiert eine Datei von einem Ort zum anderen, ohne dass der Entwickler das versteht Dateisystem Operationen hinter den Kulissen.[4]

Vorgeschichte des Begriffs

Ein Diagramm aus dem Jahr 1978, in dem die Expansion der Idee der API vorgeschlagen wurde, eine allgemeine Programmierschnittstelle zu werden, darüber hinaus Anwendungsprogramme allein.[5]

Der Begriff API Anfangs beschrieb eine Schnittstelle nur für mit Endbenutzer ausgerichtete Programme, die als bekannt als Anwendungsprogramme. Dieser Ursprung spiegelt sich weiterhin in der Namen "Anwendungsprogrammierschnittstelle" wider. Heute ist der Begriff breiter, einschließlich auch Utility-Software und sogar Hardware -Schnittstellen.[6]

1940er und 1950er Jahre

Die Idee der API ist viel älter als der Begriff selbst. Britische Informatiker Maurice Wilkes und David Wheeler arbeitete an einem modularen Softwarebibliothek in den 1940er Jahren für Edsac, ein früher Computer. Das Unterroutinen in dieser Bibliothek wurden aufbewahrt geschlagenes Papierband organisiert in a Aktenschrank. Dieses Kabinett enthielt auch das, was Wilkes und Wheeler als "Bibliothekskatalog" von Notizen zu jedem Unterprogramm bezeichneten und wie man es in ein Programm einbezieht. Heutzutage würde ein solcher Katalog als API (oder API -Spezifikation oder API -Dokumentation) bezeichnet, da er einen Programmierer anweist, wie der Programmierer benötigt.[6]

Wilkes und Wheelers Buch von 1951 Die Vorbereitung von Programmen für einen elektronischen digitalen Computer Enthält die erste veröffentlichte API -Spezifikation. Joshua Bloch betrachtet, dass Wilkes und Wheeler die API "latent erfunden" haben, weil sie eher ein Konzept ist, das entdeckt als erfunden wird.[6]

Obwohl die Personen, die den Begriff API geprägten, implementierten Software auf a Univac 1108Das Ziel ihrer API war es zu machen Hardware unabhängig Programme möglich.[7]

1960er und 1970er Jahre

Der Begriff "Anwendungsprogrammschnittstelle" (ohne einen -ing Suffix) wird zuerst in einem Papier namens aufgezeichnet Datenstrukturen und -techniken für die Fernbedienung Computergrafik präsentiert bei einem Afips Konferenz im Jahr 1968.[8][6] Die Autoren dieses Papiers verwenden den Begriff, um die Interaktion einer Anwendung - in diesem Fall ein Grafikprogramm - mit dem Rest des Computersystems zu beschreiben. Eine konsistente Anwendungsschnittstelle (bestehend aus Forran Subroutine -Anrufe) sollte den Programmierer vom Umgang mit Eigenheiten des Grafikanzeigegeräts freigeben und bereitstellen, und bereitzustellen Hardwareunabhängigkeit Wenn der Computer oder das Display ersetzt wurden.[7]

Der Begriff wurde dem Gebiet von vorgestellt Datenbanken durch C. J. Datum[9] in einer 1974er Papier namens Das Relational und Netzwerk Ansätze: Vergleich der Anwendungsprogrammierschnittstelle.[10] Eine API wurde ein Teil der ANSI/SPARC -Framework zum Datenbankmanagementsystem. Dieses Framework behandelte die Anwendungsprogrammierschnittstelle getrennt von anderen Schnittstellen wie der Abfrageschnittstelle. Datenbankfachleute in den 1970er Jahren beobachteten diese verschiedenen Schnittstellen konnten kombiniert werden; Eine ausreichend reichhaltige Anwendungsschnittstelle könnte auch die anderen Schnittstellen unterstützen.[5]

Diese Beobachtung führte zu APIs, die alle Arten von Programmierungen unterstützten, nicht nur der Anwendungsprogrammierung.

1990er Jahre

Bis 1990 wurde die API einfach als "eine Reihe von Diensten für einen Programmierer zur Verfügung gestellt, um bestimmte Aufgaben auszuführen", von Technologen Carl Malamud.[11]

Die Idee der API wurde erneut mit dem Morgengrauen erweitert Remote -Verfahrensanrufe und Web -APIs. Wie Computernetzwerke In den 1970er und 1980er Jahren wollten Programmierer Bibliotheken nicht nur auf ihren lokalen Computern, sondern auch auf Computern anrufen, die sich an anderer Stelle befanden. Diese Remote -Verfahrensanrufe wurden von der gut unterstützt Java Insbesondere Sprache. In den 1990er Jahren mit der Ausbreitung der Internet, Standards wie Corba, Com, und DCOM konkurriert um die häufigste Art, API -Dienste aufzudecken.[12]

2000er Jahre

Roy FieldingDissertation Architekturstile und das Design von netzwerkbasierten Softwarearchitekturen bei UC Irvine im Jahr 2000 umrissen Repräsentationsstaatsübertragung (REST) ​​und beschrieben die Idee einer "netzwerkbasierten Anwendungsprogrammierschnittstelle", die das Feld mit traditionellen "bibliotheksbasierten" APIs im Gegensatz lässt.[13] Xml und JSON Web -APIs verzeichneten die weit verbreitete kommerzielle Einführung ab 2000 und wurden ab 2022 fortgesetzt. Die Web -API ist heute die häufigste Bedeutung des Begriffs API.[2]

Das Semantisches Web vorgeschlagen von Tim Berners-Lee Im Jahr 2001 enthielt "semantische APIs", die die API als neu umsetzt offen, verteilte Datenschnittstelle anstelle einer Softwareverhaltensschnittstelle.[14] Proprietär Schnittstellen und Agenten wurden weiter verbreitet als offene, aber die Idee der API als Datenschnittstelle wurde festgehalten. Da Web -APIs weit verbreitet sind, um Daten aller Art online auszutauschen, ist API zu einem breiten Begriff geworden, der einen Großteil der Kommunikation im Internet beschreibt.[12] Wenn dies auf diese Weise verwendet wird, überlappt sich der Begriff API mit dem Begriff Kommunikationsprotokoll.

Verwendungszweck

Bibliotheken und Frameworks

Die Schnittstelle zu a Softwarebibliothek ist eine Art von API. Die API beschreibt und schreibt das "erwartete Verhalten" (eine Spezifikation), während die Bibliothek eine "tatsächliche Implementierung" dieser Regeln ist.

Eine einzelne API kann mehrere Implementierungen (oder keine abstrakten) in Form verschiedener Bibliotheken haben, die dieselbe Programmierschnittstelle teilen.

Die Trennung der API von ihrer Implementierung kann es den in einer Sprache geschriebenen Programmen ermöglichen, eine in einer anderen geschriebene Bibliothek zu verwenden. Zum Beispiel weil Scala und Java kompilieren zu kompatibel BytecodeScala -Entwickler können jede Java -API nutzen.[15]

Die Verwendung von API kann je nach Art der Programmiersprache variieren. Eine API für a Verfahrenssprache wie zum Beispiel Lua könnte hauptsächlich aus grundlegenden Routinen bestehen, um Code auszuführen, Daten zu manipulieren oder Fehler zu behandeln, während eine API für eine objektorientierte Sprachewie Java würde eine Spezifikation von Klassen und IUS liefern Klassenmethoden.[16][17] Hyrums Gesetz [18] stellt fest, dass "mit einer ausreichenden Anzahl von Nutzern einer API keine Rolle spielt, was Sie im Vertrag versprechen: Alle beobachtbaren Verhaltensweisen Ihres Systems werden von jemandem abhängig." Inzwischen zeigen mehrere Studien, dass die meisten Anwendungen, die eine API verwenden, einen kleinen Teil der API verwenden.[19] Die API -Verwendung variiert tatsächlich je nach Anzahl der Benutzer sowie von der Popularität der API.[20]

Sprachbindungen sind auch APIs. Durch die Zuordnung der Funktionen und Funktionen einer Sprache in eine in einer andere Sprache implementierte Schnittstelle kann eine Sprachbindung eine Bibliothek oder einen Dienst in einer Sprache ermöglichen, wenn sie sich in einer anderen Sprache entwickeln.[21]

Werkzeuge wie SCHLUCK und f2py, a Forran-zu-Python Schnittstellengenerator erleichtert die Erstellung solcher Schnittstellen.[22]

Eine API kann auch mit a zusammenhängen Software -Framework: Ein Framework kann auf mehreren Bibliotheken basieren, die mehrere APIs implementieren. Im Gegensatz zum normalen Einsatz einer API wird der Zugriff auf das in das Framework eingebaute Verhalten durch Erweiterung seiner Inhalte mit neuen Klassen, die in das Framework selbst angeschlossen sind, erweitert.

Darüber hinaus kann der Gesamtprogrammfluss der Kontrolle außerhalb der Kontrolle des Anrufers und in den Händen des Frameworks sein Kontrollinversion oder ein ähnlicher Mechanismus.[23][24]

Betriebssysteme

Eine API kann die Schnittstelle zwischen einer Anwendung und der angeben Betriebssystem.[25] PosixGibt zum Beispiel eine Reihe gemeinsamer APIs an, die eine Anwendung für ein POSIX -Konformant -Betriebssystem ermöglichen, um zu sein zusammengestellt Für ein anderes POSIX -Konformant -Betriebssystem.

Linux und Berkeley Software Distribution sind Beispiele für Betriebssysteme, die die POSIX -APIs implementieren.[26]

Microsoft hat ein starkes Engagement für eine rückwärtskompatible API gezeigt, insbesondere innerhalb ihres Windows -API (Win32) Bibliothek, sodass ältere Anwendungen auf neueren Windows-Versionen ausgeführt werden, die eine ausführbare Einstellung namens "Kompatibilitätsmodus" verwenden.[27]

Eine API unterscheidet sich von einer Anwendung Binärschnittstelle (ABI) Da eine API Quellcode basiert, während ein ABI ist binär basierend. Zum Beispiel, Posix liefert APIs, während die Linux Standard Base Bietet einen ABI.[28][29]

Remote -APIs

Remote -APIs ermöglichen es Entwicklern, Remote -Ressourcen durch zu manipulieren Protokolle, spezifische Standards für Kommunikation, die es unterschiedlichen Technologien ermöglichen, zusammenzuarbeiten, unabhängig von Sprache oder Plattform. Mit der Java -Datenbank -Konnektivitäts -API können Entwickler beispielsweise viele verschiedene Arten von abfragen Datenbanken mit den gleichen Funktionen, während die Aufruf von Java Remote -Methode API verwendet das Java Remote -Methode -Protokoll, um zulässig zu werden Aufruf von Funktionen, die remote funktionieren, aber dem Entwickler lokal erscheinen.[30][31]

Daher sind Remote -APIs nützlich bei der Aufrechterhaltung der Objektabstraktion in Objekt orientierte Programmierung; a Methodenaufruf, lokal auf a Proxy Das Objekt ruft die entsprechende Methode auf das Remote -Objekt unter Verwendung des Remoting -Protokolls auf und erwirbt das Ergebnis, das lokal als Rückgabewert verwendet werden soll.

Eine Änderung des Proxy -Objekts führt auch zu einer entsprechenden Änderung des Remote -Objekts.[32]

Web -APIs

Web -APIs sind ein Dienst, der von Client -Geräten (Mobiltelefone, Laptop usw.) zu einem Webserver verwendet wird Hypertext Transfer Protocol (Http). Client -Geräte senden eine Anforderung in Form einer HTTP -Anforderung und werden mit einer Antwortnachricht in der Regel in JavaScript -Objektnotation (in der Regel in JavaScript -Objekt () erfüllt (JSON) oder erweiterbare Markup -Sprache (Xml) Format. Entwickler verwenden in der Regel Web -APIs, um einen Server für einen bestimmten Datensatz von diesem Server abzufragen.

Ein Beispiel könnte eine Reeder Company-API sein, die einer E-Commerce-fokussierten Website hinzugefügt werden kann, um die Bestellversanddienste zu erleichtern und automatisch aktuelle Versandraten einzuschließen, ohne dass der Website-Entwickler die Tariftabelle des Versenders in eine Webdatenbank eingeben muss. Während "Web -API" historisch gesehen praktisch gleichbedeutend war mit Internetservice, der jüngste Trend (sogenannte Web 2.0) hat sich vom einfachen Objektzugriffsprotokoll abgebaut (SEIFE) basierte Webdienste und Serviceorientierte Architektur (SOA) in Richtung direkter Repräsentationsstaatsübertragung (Ruhe) Stil Webressourcen und Ressourcenorientierte Architektur (ROA).[33] Ein Teil dieses Trends hängt mit dem zusammen Semantisches Web Bewegung in Richtung Ressourcenbeschreibung Framework (RDF), ein Konzept zur Förderung des webbasierten Förderung Ontology Engineering Technologien. Web -APIs ermöglichen die Kombination mehrerer APIs in neue Anwendungen, die als bekannt sind Mashups.[34]

Im Social -Media -Bereich haben Web -APIs Webgemeinschaften ermöglicht, Inhalte und Daten zwischen Gemeinschaften und Anwendungen zu teilen. Auf diese Weise können Inhalte, die an einem Ort dynamisch erstellt werden, an mehreren Stellen im Web veröffentlicht und aktualisiert werden.[35] Zum Beispiel ermöglicht die REST -API von Twitter die Entwickler, auf Kerndaten auf Twitter -Daten zuzugreifen, und die Such -API bietet Entwicklern Methoden, um mit Twitter -Such- und Trendsdaten zu interagieren.[36]

Entwurf

Das Design einer API hat einen erheblichen Einfluss auf die Verwendung.[4] Erstens ist das Design von Programmierschnittstellen einen wichtigen Teil von Softwarearchitektur, die Organisation einer komplexen Software.[37] Das Prinzip von Informationen verstecken sich beschreibt die Rolle von Programmierschnittstellen als Aktivierung Modulare Programmierung Durch das Ausblenden der Implementierungsdetails der Module, sodass Benutzer von Modulen die Komplexitäten innerhalb der Module nicht verstehen müssen.[38] Abgesehen vom vorherigen zugrunde liegenden Prinzip können andere Metriken für die Messung der Verwendbarkeit einer API Eigenschaften wie funktionale Effizienz, Gesamtkorrektheit und Lernfähigkeit für Anfänger umfassen.[39] Eine unkomplizierte und allgemein übernommene Art des Entwerfens von APIs besteht darin, zu folgen Nielsens Heuristik Bewertungsrichtlinien. Das Fabrikmethodenmuster ist auch typisch für die Gestaltung von APIs aufgrund ihrer wiederverwendbaren Natur.[40] Daher versucht das Design einer API, nur die Tools zu liefern, die ein Benutzer erwarten würde.[4]

Sicherheit

Die API -Sicherheit ist bei der Entwicklung einer öffentlichen API sehr kritisch. Gemeinsame Bedrohungen sind SQL-Injektion, Denial-of-Service-Angriff (DOS), kaputte Authentifizierung und freistehende sensible Daten.[41] Ohne die ordnungsgemäßen Sicherheitspraktiken zu gewährleisten, können schlechte Akteure Zugriff auf Informationen erhalten, die sie nicht haben sollten, oder sogar Berechtigungen erhalten, um Änderungen an Ihrem Server vorzunehmen. Einige gängige Sicherheitspraktiken umfassen die ordnungsgemäße Verbindungssicherheit mit Verwendung Https, Inhaltssicherheit, um Dateneinspritzangriffe zu mildern und einen API -Schlüssel zu erfordern, um Ihren Dienst zu nutzen.[42] In vielen öffentlichen API -Diensten müssen Sie einen zugewiesenen API -Schlüssel verwenden, und weigert sich, Daten zu bedienen, ohne den Schlüssel mit Ihrer Anfrage zu senden.[43]

Richtlinien freigeben

APIs sind eine der häufigsten, wie Technologieunternehmen integrieren. Diejenigen, die APIs anbieten und verwenden, gelten als Mitglieder eines geschäftlichen Ökosystems.[44]

Die Hauptrichtlinien für die Veröffentlichung einer API sind:[45]

  • Privatgelände: Die API dient nur für die interne Nutzung des Unternehmens.
  • Partner: Nur bestimmte Geschäftspartner können die API nutzen. Zum Beispiel, Fahrzeug zum Mieten Unternehmen wie Uber und Lyft Erlauben Sie den genehmigten Entwicklern von Drittanbietern, Fahrten direkt innerhalb ihrer Apps zu bestellen. Dies ermöglicht es den Unternehmen, eine Qualitätskontrolle auszuüben, indem sie zusammenarbeiten, welche Apps Zugriff auf die API haben, und ihnen eine zusätzliche Einnahmequelle bereitstellen.[46]
  • Öffentlichkeit: Die API kann von der Öffentlichkeit verwendet werden. Zum Beispiel, Microsoft macht das Windows -API öffentlich und Apfel veröffentlicht seine API Kakao so dass Software für ihre geschrieben werden kann Plattformen. Nicht alle öffentlichen APIs sind im Allgemeinen von allen zugänglich. Zum Beispiel Internetdienstanbieter wie CloudFlare oder Voxility, verwenden Sie Erholsam APIs, mit denen Kunden und Wiederverkäufer auf ihre Infrastrukturinformationen, DDOS -Statistiken, Netzwerkleistung oder Dashboard -Steuerelemente zugreifen können.[47] Der Zugriff auf solche APIs wird entweder von "API -Token" oder von Kundenstatusvalidierungen gewährt.[48]

Öffentliche API -Implikationen

Ein wichtiger Faktor, wenn eine API öffentlich wird, ist ihre "Schnittstellenstabilität". Änderungen an der API - beispielsweise dem Hinzufügen neuer Parameter zu einem Funktionsaufruf - können die Kompatibilität mit den Clients durchbrechen, die von dieser API abhängen.[49]

Wenn Teile einer öffentlich vorgestellten API sich ändern und somit nicht stabil sind, sollten solche Teile einer bestimmten API explizit als "instabil" dokumentiert werden. Zum Beispiel in der Google Guava Bibliothek, die Teile, die als instabil angesehen werden und die sich bald ändern könnten, sind mit dem markiert Java -Annotation @Beta.[50]

Eine öffentliche API kann manchmal Teile von sich selbst als deklarieren veraltet oder aufgehoben. Dies bedeutet in der Regel, dass ein Teil der API als Kandidat für die Entfernung angesehen oder auf rückwärts inkompatible Weise modifiziert werden sollte. Daher ermöglichen diese Änderungen den Entwicklern, sich von Teilen der API zu entfernen, die in Zukunft entfernt oder nicht unterstützt werden.[51]

Der Kundencode kann innovative oder opportunistische Verwendungen enthalten, die von den API -Designern nicht beabsichtigt waren. Mit anderen Worten, für eine Bibliothek mit einer bedeutenden Benutzerbasis, wenn ein Element Teil der öffentlichen API wird, kann es auf unterschiedliche Weise verwendet werden.[52] Am 19. Februar 2020,, Akamai veröffentlichte ihren jährlichen Bericht "State of the Internet" und zeigt den wachsenden Trend von Cyberkriminellen auf öffentliche API -Plattformen bei Finanzdienstleistungen weltweit. Von Dezember 2017 bis November 2019 beobachtete Akamai 85,42 Milliarden Angriffe. Etwa 20%oder 16,55 Milliarden waren gegen Hostnamen als API -Endpunkte definiert. Von diesen haben 473,5 Millionen Organisationen für Finanzdienstleistungen gezielt.[53]

Dokumentation

Die API -Dokumentation beschreibt die Dienste, die eine API anbietet und wie diese Dienste verwendet werden sollen, um alles abzudecken, was ein Kunde für praktische Zwecke wissen muss.

Die Dokumentation ist für die Entwicklung und Wartung von Anwendungen mithilfe der API von entscheidender Bedeutung.[54] Die API -Dokumentation findet sich traditionell in Dokumentationsdateien, kann aber auch in sozialen Medien wie Blogs, Foren und Q & A -Websites gefunden werden.[55]

Herkömmliche Dokumentationsdateien werden häufig über ein Dokumentationssystem wie Javadoc oder Pydoc dargestellt, das ein konsistentes Aussehen und eine konsistente Struktur aufweist. Die in der Dokumentation enthaltenen Inhaltstypen unterscheiden sich jedoch von API zu API.[56]

Im Interesse der Klarheit kann die API -Dokumentation eine Beschreibung von Klassen und Methoden in der API sowie "typische Nutzungsszenarien, Code -Snippets, Design -Rationales, Leistungsdiskussionen und Verträge" enthalten, aber die Implementierungsdetails der API -Dienste selbst sind normalerweise in der Regel weggelassen.

Einschränkungen und Einschränkungen dafür, wie die API verwendet werden kann, werden auch durch die Dokumentation behandelt. Zum Beispiel könnte die Dokumentation für eine API -Funktion beachten, dass seine Parameter nicht null sein können oder dass die Funktion selbst nicht ist Faden sicher.[57] Da die API -Dokumentation in der Regel umfassend ist, ist es für Autoren eine Herausforderung, die Dokumentation auf dem neuesten Stand zu halten, und dass Benutzer sie sorgfältig lesen und möglicherweise Fehler ergeben.[49]

API -Dokumentation kann mit Metadateninformationen wie angereichert werden Java -Anmerkungen. Diese Metadaten können vom Compiler, den Werkzeugen und von der verwendet werden Laufzeit Umgebung zur Implementierung benutzerdefinierter Verhaltensweisen oder benutzerdefinierter Handhabung.[58]

Es ist möglich, datengesteuerte API-Dokumentation zu generieren. Durch die Beobachtung vieler Programme, die eine bestimmte API verwenden, ist es möglich, die typischen Verwendungen sowie die erforderlichen Verträge und Richtlinien zu schließen.[59] Anschließend können Vorlagen verwendet werden, um natürliche Sprache aus den abgebauten Daten zu generieren.

Streit um den Urheberrechtsschutz für APIs

Im Jahr 2010 verklagte die Oracle Corporation Google, weil er eine neue Implementierung von Java verteilt hatte, die in das Android -Betriebssystem eingebettet ist.[60] Google hatte keine Erlaubnis zur Reproduktion der Java -API erhalten, obwohl dem ähnlichen OpenJDK -Projekt die Erlaubnis erteilt worden war. Google hatte sich Oracle angesprochen, um eine Lizenz für ihre API zu verhandeln, wurde jedoch aufgrund von Vertrauensproblemen abgelehnt. Trotz der Meinungsverschiedenheit hat Google ohnehin Oracles Code verwendet. Richter William Alsup regiert in der Oracle v. Google Fall, dass APIs nicht sein kann urheberrechtlich geschützt In den USA und dass ein Sieg für Oracle einen weit verbreiteten Urheberrechtsschutz zu einem "funktionalen Satz von Symbolen" erweitert hätte und die Urheberrechnung einfacher Software -Befehle zugelassen hätte:

Die Behauptung von Oracle zu akzeptieren, besteht darin, jedem zu erlauben, eine Version von Code zu haben, um ein System von Befehlen auszuführen, und damit alle anderen seine verschiedenen Versionen zu schreiben, um alle oder einen Teil der gleichen Befehle auszuführen.[61][62]

Alsups Entscheidung wurde 2014 im Berufungsverfahren gegen die aufgehoben Berufungsgericht für den Bundeskreislaufobwohl die Frage, ob eine solche Verwendung von APIs darstellt faire Nutzung wurde ungelöst.[63][64]

Nach einer zweiwöchigen Prüfung stellte eine Jury im Jahr 2016 fest, dass die Neuauflagen von Google der Java-API aussahen faire Nutzung, aber Oracle schwor, gegen die Entscheidung Berufung einzulegen.[65] Oracle gewann in seiner Berufung mit dem Berufungsgericht für das Federal Circuit, dass Google die Verwendung der APIs nicht für einen fairen Gebrauch qualifiziert war.[66] Im Jahr 2019 appellierte Google an die Oberster Gerichtshof der Vereinigten Staaten sowohl über die Urheberrechts- als auch über die Ursachen für faire Nutzung und der Oberste Gerichtshof wurden eine Überprüfung gewährt.[67] Aufgrund der Covid-19 PandemieDie mündlichen Anhörungen in dem Fall wurden bis Oktober 2020 verzögert.[68]

Der Fall wurde vom Obersten Gerichtshof zugunsten von Google mit einer Entscheidung von 6–2 entschieden. Gerechtigkeit Stephen Breyer gab die Stellungnahme des Gerichts ab und erwähnte irgendwann, dass "der deklarierende Kodex, wenn überhaupt, außerhalb des Urheberrechts ist, nicht mehr als die meisten Computerprogramme aus dem Kern des Urheberrechts sind". Dies bedeutet, dass der in APIs verwendete Code den Wörterbüchern im Hinblick auf den Urheberrechtsschutz ähnlicher ist.[69]

Beispiele

Siehe auch

Verweise

  1. ^ Reddy, Marathi (2011). API -Design für C ++. Elsevier Science. p. 1. ISBN 9780123850041.
  2. ^ a b Lane, Kin (10. Oktober 2019). "Intro zu APIs: Geschichte der APIs". Postbote. Abgerufen 18. September, 2020. Wenn Sie die Akronym "API" oder ihre erweiterte Version "Application Programing Interface" hören, ist es fast immer in Bezug auf unseren modernen Ansatz in Bezug auf unseren modernen Ansatz, da wir HTTP verwenden, um Zugriff auf maschinenlesbare Daten in einem JSON- oder XML -Format zu gewähren, oft einfach einfach als "Web -APIs" bezeichnet. APIs gibt es fast so lange wie Computer, aber moderne Web -APIs nahmen in den frühen 2000er Jahren Gestalt an.
  3. ^ Wood, Laura (2021-08-25). "Global Cloud Microservices Market (2021 bis 2026)". Abgerufen 2022-03-29.
  4. ^ a b c Clarke, Steven (2004). "Messung der API -Benutzerfreundlichkeit". Dr. Dobbs. Abgerufen 29. Juli 2016.
  5. ^ a b Datenbankarchitekturen - Ein Machbarkeits -Workshop (Bericht). Washington, DC: US ​​-Handelsministerium, Nationales Bureau of Standards. April 1981. S. 45–47. HDL:2027/MDP.39015077587742. Lccn 81600004. NBS Special Publication 500-76. Abgerufen 18. September, 2020.
  6. ^ a b c d Bloch, Joshua (8. August 2018). Eine kurze, Meinung der API (Rede). Qcon. San Francisco: infoq. Abgerufen 18. September, 2020.
  7. ^ a b Baumwolle, Ira W.; Greatorex, Frank S. (Dezember 1968). "Datenstrukturen und Techniken für Remote -Computergrafiken". AFIPS '68: Verfahren der 9. bis 11. Dezember 1968, Herbst Joint Computer Conference. AFIPS 1968 Herbst Joint Computer Conference. Vol. I. San Francisco, Kalifornien: Verband für Computermaschinen. S. 533–544. doi:10.1145/1476589.1476661. ISBN 978-1450378994. OCLC 1175621908.
  8. ^ "Anwendungsprogrammschnittstelle". Oxford Englisch Wörterbuch (Online ed.). Oxford University Press. (Abonnement oder teilnehmende Institutsmitgliedschaft erforderlich.)
  9. ^ Datum, C. J. (2019). E. F. Codd und relationale Theorie: Eine detaillierte Überprüfung und Analyse der wichtigsten Datenbankschriften von CODD. p. 135. ISBN 978-1684705276.
  10. ^ Datum, C. J.; Codd, E. F. (Januar 1975). "Die relationalen und Netzwerkansätze: Vergleich der Anwendungsprogrammierschnittstellen". In Randall Rustin (Hrsg.). Proceedings of 1974 ACM-Sigmod Workshop zu Datenbeschreibung, Zugriff und Kontrolle. Sigmod Workshop 1974. Vol. 2. Ann Arbor, Michigan: Verband für Computermaschinen. S. 83–113. doi:10.1145/800297.811532. ISBN 978-1450374187. OCLC 1175623233.
  11. ^ Carl, Malamud (1990). Analyse von Novell -Netzwerken. Van Nostrand Reinhold. p. 294. ISBN 978-0442003647.
  12. ^ a b Jin, Brenda; Sahni, Saurabh; Shevat, Amir (2018). Entwerfen von Web -APIs. O'Reilly Media. ISBN 9781492026877.
  13. ^ Fielding, Roy (2000). Architekturstile und das Design von netzwerkbasierten Softwarearchitekturen (PhD). Abgerufen 18. September, 2020.
  14. ^ Dotsika, Fefie (August 2010). "Semantische APIs: Skalierung in Richtung des semantischen Webs". Internationales Journal of Information Management. 30 (4): 335–342. doi:10.1016/j.ijinfomgt.2009.12.003.
  15. ^ Odensky, Martin; Löffel, Lex; Venners, Bill (10. Dezember 2008). "Scala und Java kombinieren". www.artima.com. Abgerufen 29. Juli 2016.
  16. ^ de Figueiredo, Luiz Henrique; Ierusalimschy, Roberto; Filho, Waldemar Celes (1994). "Die Gestaltung und Implementierung einer Sprache für die Erweiterung von Anwendungen". TECGRAF GRUPO DECNOLOGIA EM COMPUTACAO Graafica: 273–284. Citeseerx 10.1.1.47.5194. S2CID 59833827. Abgerufen 29. Juli 2016.
  17. ^ Stes, Tony (13. Juli 2001). "Was ist die Java -API überhaupt?". JavaRld. Abgerufen 2020-07-18.
  18. ^ Winter, Titus; Tom Mansheck; Hyrum Wright, Hrsg. (2020). Software -Engineering bei Google: Lehren aus dem Programmieren im Laufe der Zeit gelernt. Sebastopol, CA. ISBN 9781492082798. OCLC 1144086840.
  19. ^ Mastrangelo, Luis; Ponzanelli, Luca; Mocci, Andrea; Lanza, Michele; Hauswirth, Matthias; Nystrom, Nathaniel (2015-10-23). "Verwenden Sie auf eigenes Risiko: Die java unsichere API in freier Wildbahn". Proceedings der ACM Sigplan Internationalen Konferenz 2015 über objektorientierte Programmierung, Systeme, Sprachen und Anwendungen. OOPSLA 2015. New York, NY, USA: Verband für Computermaschinen. S. 695–710. doi:10.1145/2814270.2814313. ISBN 978-1-4503-3689-5.
  20. ^ Harrand, Nicolas; Benelallam, Amine; Soto-Valero, César; Bettega, François; Barais, Olivier; Baudry, Benoit (2022-02-01). "Die API -Schönheit liegt im Auge der Kunden: 2,2 Millionen Maven -Abhängigkeiten enthüllen das Spektrum der Kunden -API -Verwendungen.". Zeitschrift für Systeme und Software. 184: 111134. doi:10.1016/j.js.2021.111134. ISSN 0164-1212.
  21. ^ McLaughlin, Stefano (20. Dezember 1996). "Was Sie über Standards, APIs, Schnittstellen und Bindungen wissen sollten". WashingtonIndependent.com.
  22. ^ "F2py.org". F2py.org. Abgerufen 2011-12-18.
  23. ^ Fowler, Martin. "Inversion der Kontrolle".
  24. ^ Fayad, Mohamed. "Objektorientierte Anwendungsrahmen".
  25. ^ Lewine, Donald A. (1991). POSIX -Programmierhandbuch. O'Reilly & Associates, Inc. p. 1. ISBN 9780937175736. Abgerufen 2. August 2016.
  26. ^ West, Joel; Dedrick, Jason (2001). "Open Source Standardisierung: Der Anstieg von Linux in der Netzwerk -Ära" (PDF). Wissen, Technologie und Politik. 14 (2): 88–112. Abgerufen 2. August 2016.
  27. ^ Microsoft (Oktober 2001). "Unterstützung für Windows XP". Microsoft. p. 4. archiviert von das Original am 2009-09-26.
  28. ^ "LSB Einführung". Linux Foundation. 21. Juni 2012. Abgerufen 2015-03-27.
  29. ^ Stoughton, Nick (April 2005). "Aktualisierung der Standards" (PDF). Usenix. Abgerufen 2009-06-04.
  30. ^ Bierhoff, Kevin (23. April 2009). "API-Protokollkonformität in objektorientierter Software" (PDF). CMU -Institut für Softwareforschung. Abgerufen 29. Juli 2016.
  31. ^ Wilson, M. Jeff (10. November 2000). "Werden Sie klug mit Proxies und RMI". JavaRld. Abgerufen 2020-07-18.
  32. ^ Henning, Michi; Vinoski, Steve (1999). Erweiterte CORBA -Programmierung mit C ++. Addison-Wesley. ISBN 978-0201379273. Abgerufen 16. Juni 2015.
  33. ^ BENSLIMANE, DJAMAL; Schahram Dustdar; Amit Sheth (2008). "Dienste Mashups: Die neue Generation von Webanwendungen". IEEE Internet Computing, Vol. 12, nein. 5. Institut für Elektro- und Elektronikingenieure. S. 13–15. Archiviert von das Original Am 2011-09-28. Abgerufen 2019-10-01.
  34. ^ Niccolai, James (2008-04-23), "Also, was ist überhaupt ein Enterprise Mashup?", PC Welt
  35. ^ Parr, Ben (21. Mai 2009). "Die Entwicklung der Social -Media -API". Massig. Abgerufen 26. Juli 2016.
  36. ^ "Holen Sie sich Trends/Ort". Entwickler.twitter.com. Abgerufen 2020-04-30.
  37. ^ Garlan, David; Shaw, Mary (Januar 1994). "Eine Einführung in die Softwarearchitektur" (PDF). Fortschritte in der Software -Engineering und im Wissenstechnik. 1. Abgerufen 8. August 2016.
  38. ^ Parnas, D.L. (1972). "Über die Kriterien, die für das Zersetzen von Systemen in Module verwendet werden sollen". Kommunikation der ACM. 15 (12): 1053–1058. doi:10.1145/361598.361623. S2CID 53856438.
  39. ^ Myers, Brad A.; Stylos, Jeffrey (2016). "Verbesserung der API -Benutzerfreundlichkeit". Kommunikation der ACM. 59 (6): 62–69. doi:10.1145/2896587. S2CID 543853.
  40. ^ Brian Ellis, Jeffrey Stylos und Brad Myers. 2007. Das Fabrikmuster im API -Design: Eine Usability -Bewertung. Im Proceedings der 29. Internationalen Konferenz über Software -Engineering (ICSE '07). IEEE Computer Society, USA, 302–312. Doi:https://doi.org/10.1109/icse.2007.85 http://www.cs.cmu.edu/~natprog/papers/ellis2007FactoryUSability.pdf
  41. ^ Silva, Paulo (2019). "Global Cloud Microservices Market (2021 bis 2026)". Abgerufen 2022-03-29.
  42. ^ Mitwirkende, MDN (2022-02-18). "Websicherheit". Abgerufen 2022-03-29. {{}}: |last= hat generischen Namen (Hilfe)
  43. ^ "API -Schlüssel - Was ist eine API -Schlüssel? | Apilayer -Blog". 2022-03-01. Abgerufen 2022-07-15.
  44. ^ De Ternay, Guerric (10. Oktober 2015). "Business -Ökosystem: Schaffung eines wirtschaftlichen Wassergrabens". Boostcompanien. Abgerufen 2016-02-01.
  45. ^ Boyd, Mark (2014-02-21). "Privat, Partner oder Öffentlichkeit: Welche API -Strategie ist am besten für das Geschäft geeignet?". Programmierbar. Abgerufen 2. August 2016.
  46. ^ Weissbrot, Alison (7. Juli 2016). "Car Service -APIs sind überall, aber was ist für Partner -Apps drin?". AdExchanger.
  47. ^ "Cloudflare API V4 Dokumentation". Wolkenflare. 25. Februar 2020. Abgerufen 27. Februar 2020.
  48. ^ Liew, Zell (17. Januar 2018). "Autodienst -APIs sind überall, aber was für Partner -Apps drin ist". Smashing Magazine. Abgerufen 27. Februar 2020.
  49. ^ a b Shi, Lin; Zhong, Hao; Xie, Tao; Li, Mingshu (2011). Eine empirische Studie zur Evolution der API -Dokumentation. Internationale Konferenz über grundlegende Ansätze für Software -Engineering. Vorlesungsnotizen in Informatik. Vol. 6603. S. 416–431. doi:10.1007/978-3-642-19811-3_29. ISBN 978-3-642-19810-6. Abgerufen 22. Juli 2016.
  50. ^ "Guava-Library-Guava: Google Core-Bibliotheken für Java 1.6+-Google Project Hosting". 2014-02-04. Abgerufen 2014-02-11.
  51. ^ Orakel. "Wie und wann werden APIs abgeschrieben?". Java SE -Dokumentation. Abgerufen 2. August 2016.
  52. ^ Mendez, Diego; Baudry, Benoit; Monperrus, Martin (2013). "Empirische Beweise für eine große Vielfalt bei der Verwendung von API-Verwendung objektorientierter Software". 2013 IEEE 13. Internationale Arbeitskonferenz zur Quellcodeanalyse und -manipulation (Betrug). S. 43–52. Arxiv:1307.4062. doi:10.1109/scam.2013.6648183. ISBN 978-1-4673-5739-5. S2CID 6890739.
  53. ^ Takanashi, Dean (19. Februar 2020). "Akamai: Cyberkriminelle greifen APIs bei Finanzdienstleistungsunternehmen an". Venture Beat. Abgerufen 27. Februar 2020.
  54. ^ Dekel, Uri; Herbsleb, James D. (Mai 2009). "Verbesserung der Usabilität der API -Dokumentation mit Wissensschub". Institut für Softwareforschung, School of Computer Science. Citeseerx 10.1.1.446.4214.
  55. ^ Parnin, Chris; Treude, Cristoph (Mai 2011). "Messung der API -Dokumentation im Web". Web2se: 25–30. doi:10.1145/1984701.1984706. ISBN 9781450305952. S2CID 17751901.
  56. ^ Maalej, Waleed; Robillard, Martin P. (April 2012). "Wissensmuster in der API -Referenzdokumentation" (PDF). IEEE -Transaktionen auf Software -Engineering. Abgerufen 22. Juli 2016.
  57. ^ Monperrus, Martin; Eichberg, Michael; Tekes, elif; Mezini, Mira (3. Dezember 2011). "Was sollten Entwickler einer empirischen Studie über die Dokumentation der API -Dokumentation bewusst sein." Empirische Software -Engineering. 17 (6): 703–737. Arxiv:1205.6363. doi:10.1007/s10664-011-9186-4. S2CID 8174618.
  58. ^ "Anmerkungen". Sun Microsystems. Archiviert von das Original Am 2011-09-25. Abgerufen 2011-09-30..
  59. ^ Bruch, Marcel; Mezini, Mira; Monperrus, Martin (2010). "Bergbau -Subklassifizieranweisungen zur Verbesserung der Rahmenverwendung". 2010 7. IEEE -Arbeitskonferenz über Bergbau -Software -Repositories (MSR 2010). S. 141–150. Citeseerx 10.1.1.434.15. doi:10.1109/msr.2010.5463347. ISBN 978-1-4244-6802-7. S2CID 1026918.
  60. ^ "Oracle und das Ende der Programmierung, wie wir es kennen". DRDOBBS. 2012-05-01. Abgerufen 2012-05-09.
  61. ^ "APIs kann nicht urheberrechtlich geschützt sein, sagt Richter in Oracle Fall". Tgdaily. 2012-06-01. Abgerufen 2012-12-06.
  62. ^ "Oracle America, Inc. gegen Google Inc" (PDF). Verdrahtet. 2012-05-31. Abgerufen 2013-09-22.
  63. ^ "Oracle Am., Inc. gegen Google Inc., Nr. 13-1021, Fed. Cir. 2014". Archiviert vom Original am 2014-10-10.
  64. ^ Rosenblatt, Seth (9. Mai 2014). "Gerichtsseiten mit Oracle über Android in Java Patent Appeal". CNET. Abgerufen 2014-05-10.
  65. ^ "Google Beats Oracle - Android nutzt" faire Verwendung "von Java -APIs".. ARS Technica. 2016-05-26. Abgerufen 2016-07-28.
  66. ^ Decker, Susan (27. März 2018). "Oracle gewinnt die Wiederbelebung des Milliarden-Dollar-Falles gegen Google". Bloomberg BusinessWeek. Abgerufen 27. März, 2018.
  67. ^ Lee, Timothy (25. Januar 2019). "Google bittet den Obersten Gerichtshof, die katastrophale Entscheidung über API -Urheberrechte zu überschreiben". ARS Technica. Abgerufen 8. Februar, 2019.
  68. ^ VKIMBER (2020-09-28). "Google LLC gegen Oracle America, Inc". LII / Legal Information Institute. Abgerufen 2021-03-06.
  69. ^ "Oberster Gerichtshof der Vereinigten Staaten, Nr. 18–956, Google LLC, Petent gegen Oracle America, Inc" (PDF). 5. April 2021.

Weitere Lektüre

Externe Links