Content deleted Content added
m Reverted 1 edit by Ravi24kant (talk) to last revision by Hansenxyz. (TW) |
m copy edit with General fixes; url trimming of identifying info perWP:LINKSTOAVOID and Citation Style, replaced: ’ → ', <blockquote> → {{quote| |
||
Line 10:
Just as a [[graphical user interface]] (GUI) makes it easier for people to use programs, application programming interfaces make it easier for developers to use certain technologies in building applications. An API simplifies programming by [[Abstraction (software engineering)|abstracting]] the underlying implementation and only exposing objects or actions the developer needs. While a graphical interface for an [[email client]] might provide a user with a button that performs all the steps for fetching and highlighting new emails, an API for file [[input/output]] might give the developer a [[Subroutine|function]] that copies a file from one ___location to another without requiring that the developer understand the [[Journaling file system|file system]] operations occurring behind the scenes.<ref name="Clarke4">{{cite web|last1=Clarke|first1=Steven|title=Measuring API Usability|url=http://www.drdobbs.com/windows/measuring-api-usability/184405654|website=Dr. Dobb's|accessdate=29 July 2016|date=2004}}</ref>
The modern API management helps the enterprises expose individual components in well-documented services that the internal developers and partners can use to rapidly iterate new features.<ref>{{Cite news|url=https://www.forbes.com/sites/forbestechcouncil/2017/05/08/apis-leverage-for-digital-transformation/
== Uses ==
Line 24:
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/profile/Waldemar_Celes/publication/2778436_The_Design_and_Implementation_of_a_Language_for_Extending_Applications/links/00b7d522f51ad361f9000000.pdf|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}}</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
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 117:
|date = 2008-04-23
}}</ref>
In the social media space, web APIs have allowed web communities to facilitate sharing content and data between communities and applications. In this way, content that is created in one place dynamically can be posted and updated to multiple locations on the web.<ref name="Parr16">{{cite web|last1=Parr|first1=Ben|title=The Evolution of the Social Media API|url=http://mashable.com/2009/05/21/social-media-api/
</ref> For example, Twitter's REST API allows developers to access core Twitter data and the Search API provides methods for developers to interact with Twitter Search and trends data.{{
==Design==
Line 127:
| 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
| last = Henning
| first = Michi
Line 146:
*<u>Private</u>: The API is for internal company use only.
*<u>Partner</u>: Only specific business partners can use the API. For example, [[Transportation network company|car service companies]] such as [[Uber (company)|Uber]] and [[Lyft]] allow approved third-party developers to directly order rides from within their apps. This allows the companies to exercise quality control by curating which apps have access to the API, and provides them with an additional revenue stream.<ref name="Weissbrot16">{{cite web|last1=Weissbrot|first1=Alison|title=Car Service APIs Are Everywhere, But
*<u>Public</u>: The API is available for use by the public. For example, [[Microsoft]] makes the [[Microsoft Windows]] API public, and [[Apple Inc.|Apple]] releases its APIs [[Carbon (API)|Carbon]] and [[Cocoa (API)|Cocoa]], so that software can be written for their [[Computing platform|platforms]].
Line 180:
In 2010, [[Oracle Corporation]] sued [[Google]] for having distributed a new implementation of Java embedded in the [[Android (operating system)|Android]] operating system.<ref>{{cite web|url=http://www.drdobbs.com/jvm/232901227 |title=Oracle and the End of Programming As We Know It |publisher=DrDobbs |date=2012-05-01 |accessdate=2012-05-09}}</ref> Google had not acquired any permission to reproduce the Java API, although permission had been given to the similar [[OpenJDK]] project. Judge [[William Alsup]] ruled in the ''[[Oracle v. Google]]'' case that APIs cannot be [[copyrighted]] in the U.S, and that a victory for Oracle would have widely expanded copyright protection and allowed the copyrighting of simple software commands:
| url = https://www.wired.com/wiredenterprise/wp-content/uploads/2012/05/Judge-Alsup-Ruling-on-Copyrightability-of-APIs.pdf
| title = Oracle America, Inc. vs. Google Inc.
| date = 2012-05-31 | accessdate = 2013-09-22
| publisher = [[Wired (magazine)|Wired]]
}}</ref>
In 2014, however, Alsup's ruling was overturned on appeal, 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>
|