Content deleted Content added
Bluelinking 1 books for verifiability.) #IABot (v2.1alpha3 |
m citation cleanup and other fixes |
||
Line 1:
{{short description|Set of subroutine definitions, protocols, and tools for building software and applications}}▼
{{redirect|API}}
▲{{short description|Set of subroutine definitions, protocols, and tools for building software and applications}}
An '''application programming interface''' ('''API''') is an [[Interface (computing)|interface]] or [[communication protocol]] between a [[Client–server model|client and a server]] intended to simplify the building of client-side software. It has been described as a “contract” between the client and the server, such that if the client makes a request in a specific format, it will always get a response in a specific format or initiate a defined action.<ref name="Braunstein2018">{{cite book|last=Braunstein|first=Mark L.|title=Health Informatics on FHIR: How HL7's New API is Transforming Healthcare|url=https://books.google.com/books?id=tJdmDwAAQBAJ&pg=PA9|date=26 July 2018|publisher=Springer|isbn=978-3-319-93414-3|pages=9|quote=Non-technical readers may not understand what an API is. In non-technical terms it can be understood as a 'contract' that says to software developers that if you send a request from a 'client' computer (e.g., a phone, tablet, notebook or desktop) to a 'server' (the computer where the information is stored) in the specified format you will always get a response in a specified format or initiate a defined action.}}</ref>
An API may be for a web-based system, [[operating system]], [[database system]], computer hardware, or [[Library (computing)|software library]].
An API specification can take many forms, but often includes specifications for [[subroutine|routines]], [[data structure]]s, [[Class (computer programming)|object classes]], [[variable (computer science)|variable]]s, or [[Remote procedure call|remote calls]]. [[POSIX]], [[Windows API]] and [[Advanced SCSI programming interface|ASPI]] are examples of different forms of APIs. Documentation for the API usually is provided to facilitate usage and implementation.
Line 26:
An API for a [[procedural programming|procedural language]] such as [[Lua (programming language)|Lua]] could consist primarily of basic routines to execute code, manipulate data or handle errors while an API for an [[object-oriented programming|object-oriented language]], such as Java, would provide a specification of classes and its [[class method]]s.<ref>{{cite journal|last1=de Figueiredo|first1=Luiz Henrique|last2=Ierusalimschy|first2=Roberto|last3=Filho|first3=Waldemar Celes|title=The design and implementation of a language for extending applications|journal=TeCGraf Grupo de Tecnologia Em Computacao Grafica|url=https://www.researchgate.net/publication/2778436|accessdate=29 July 2016}}</ref><ref name="Sintes16">{{cite web|last1=Sintes|first1=Tony|title=Just what is the Java API anyway?|url=http://www.javaworld.com/article/2077392/java-se/just-what-is-the-java-api-anyway.html|website=JavaWorld|accessdate=29 July 2016|date=2001-07-13}}</ref>
[[Language binding]]s are also APIs. By mapping the features and capabilities of one language to an interface implemented in another language, a language binding allows a library or service written in one language to be used when developing in another language.<ref name=Emery>{{cite web|url=http://www.acm.org/tsc/apis.html|last1=Emery|first1=David|title=Standards, APIs, Interfaces and Bindings|publisher=Acm.org|date=|accessdate=2016-08-08|archive-url=https://web.archive.org/web/20150116081559/http://www.acm.org/tsc/apis.html|archive-date=2015-01-16|
An API can also be related to a [[Framework (computer science)|software framework]]: a framework can be based on several libraries implementing several APIs, but unlike the normal use of an API, the access to the behavior built into the framework is mediated by extending its content with new classes plugged into the framework itself.
Line 57:
|page=4
|date=October 2001
|
|archiveurl=https://web.archive.org/web/20090926235439/http://www.microsoft.com/windowsxp/using/helpandsupport/learnmore/appcompat.mspx
|archivedate=2009-09-26
Line 129:
| first = Josh
| title = How to design a good API and why it matters
| url = http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/32713.pdf}}</ref> Kin Lane,<ref>{{Cite web|url=http://pages.3scale.net/rs/516-GHI-083/images/api-provider-guide-api-design.pdf|title=The Industry Guide to API Design|last=Lane|first=Kin|date=2016-03-14|website=|publisher=Kin Lane via 3scale|access-date=2016-03-14|archive-url=https://web.archive.org/web/20160315040538/http://pages.3scale.net/rs/516-GHI-083/images/api-provider-guide-api-design.pdf|archive-date=2016-03-15|
| last = Henning
| first = Michi
Line 198:
In 2014, however, Alsup's ruling was overturned on appeal to the [[United States Court of Appeals for the Federal Circuit|Court of Appeals for the Federal Circuit]], though the question of whether such use of APIs constitutes [[fair use]] was left unresolved.<ref>{{cite news | url=http://www.cnet.com/news/court-sides-with-oracle-over-android-in-java-patent-appeal/ | title=Court sides with Oracle over Android in Java patent appeal | work=CNET | date=May 9, 2014 | accessdate=2014-05-10 | author=Rosenblatt, Seth}}</ref>
In 2016, following a two-week trial, a jury determined that Google's reimplementation of the Java API constituted fair use, but Oracle vowed to appeal the decision.<ref>{{Cite web|url=https://arstechnica.com/tech-policy/2016/05/google-wins-trial-against-oracle-as-jury-finds-android-is-fair-use/|title=Google beats Oracle—Android makes "fair use" of Java APIs|website=Ars Technica|access-date=2016-07-28|date=2016-05-26}}</ref> Oracle won on its appeal, with the Court of Appeals for the Federal Circuit ruling that Google's use of the APIs did not qualify for fair use.<ref name="bbn march2018">{{cite web | url = https://www.bloomberg.com/news/articles/2018-03-27/oracle-wins-revival-of-billion-dollar-case-against-google | title = Oracle Wins Revival of Billion-Dollar Case Against Google | first= Susan | last =Decker |date = March 27, 2018 | accessdate = March 27, 2018 | work = [[Bloomberg Businessweek]] }}</ref> In 2019, Google appealed to the [[Supreme Court of the United States]] over both the copyrightability and fair use rulings.
== Examples ==
|