Examine individual changes
This page allows you to examine the variables generated by the Edit Filter for an individual change.
Variables generated for this change
Variable | Value |
---|---|
Name of the user account (user_name ) | '91.103.25.36' |
Page ID (page_id ) | 2399 |
Page namespace (page_namespace ) | 0 |
Page title without namespace (page_title ) | 'Application programming interface' |
Full page title (page_prefixedtitle ) | 'Application programming interface' |
Action (action ) | 'edit' |
Edit summary/reason (summary ) | '' |
Whether or not the edit is marked as minor (no longer in use) (minor_edit ) | false |
Old page wikitext, before the edit (old_wikitext ) | '{{redirect|API}}
{{copyedit|date=December 2008}}
An '''application programming interface''' ('''API''') is an [[Interface (computer science) |interface]] implemented by a [[Computer program | software program]] to enable interaction with other software, much in the same way that a [[user interface]] facilitates interaction between humans and computers. APIs are implemented by [[Application software |applications]], [[Library (computer science) |libraries]] and [[operating system | operating systems]] to determine the vocabulary and [[calling convention]]s the [[programmer]] should employ to use their services. It may include specifications for [[subroutine |routines]], [[data structure]]s, [[Class (computer science) |object classes]] and [[Protocol (computing) |protocols]] used to communicate between the consumer and implementer of the API.<ref>{{cite web|
title=Application Program Interface|
url=http://foldoc.org/Application+Program+Interface|
publisher=[[Free On-line Dictionary of Computing]]|
date=1995-02-15|
accessdate=2009-06-28}}</ref><ref>{{cite web|
title=Definition of: API|
url=http://www.pcmag.com/encyclopedia_term/0,2542,t=application+programming+interface&i=37856,00.asp|
publisher=[[PC Magazine]]|
year=1996|
accessdate=2009-06-28}}</ref><ref>{{cite web|
first=David|
last=Orenstein|
url=http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=43487|
title=QuickStudy: Application Programming Interface (API)|
publisher=[[Computerworld]]|
date=2000-01-10|
accessdate=2009-06-04}}</ref>
==Features==
An API is an [[Abstraction (computer science)|abstraction]]. The software that provides the functionality described by an API is said to be an ''implementation'' of the API.
An API may be:
* Language-dependent; that is, available only in a given programming language, using the syntax and elements of that language to make the API convenient to use in this context.
* Language-independent; that is, written in a way that means it can be called from several programming languages. This is a desired feature for a service-style API that is not bound to a given process or system and may be provided as [[remote procedure call|remote procedure calls]] or [[web service|web services]].
For example, a website that allows users to review local restaurants is able to layer their reviews over maps taken from Google Maps, because Google Maps has an API that allows it. Google Maps' API controls what information a third-party site can grab, and what can be done with it.
"API" may be used to refer to a complete interface, a single function, or even a set of multiple APIs provided by an organization. Thus, the scope of meaning is usually determined by the person or document that communicates the information.
==Web APIs==
{{Main|web service}}
When used in the context of [[web development]], an API is typically a defined set of Hypertext Transfer Protocol ([[HTTP]]) request messages along with a definition of the structure of response messages, usually expressed in an Extensible Markup Language ([[XML]]) or JavaScript Object Notation ([[JSON]]) format. While "Web API" is virtually a synonym for [[web service]], the recent trend (so-called [[Web 2.0]]) has been moving away from Simple Object Access Protocol ([[SOAP]]) based services towards more direct [[Representational State Transfer]] (REST) style communications<ref>
{{cite web
|first = Djamal
|last = Benslimane
|author =
|authorlink =
|coauthors = Schahram Dustdar, and Amit Sheth
|title = Services Mashups: The New Generation of Web Applications
|url = http://dsonline.computer.org/portal/site/dsonline/menuitem.9ed3d9924aeb0dcd82ccc6716bbe36ec/index.jsp?&pName=dso_level1&path=dsonline/2008/09&file=w5gei.xml&xsl=article.xsl
|archiveurl =
|work = IEEE Internet Computing, vol. 12, no. 5
|publisher = Institute of Electrical and Electronics Engineers
|___location =
|page =
|pages = 13–15
|language =
|trans_title =
|doi =
|date =
|month =
|year = 2008
|archivedate =
|accessdate =
|quote =
}}
</ref>. Web APIs allow the combination of multiple services into new applications known as [[Mashup_(web_application_hybrid)|mashups]] <ref>
{{cite web
|first =
|last =
|author =
|authorlink =
|coauthors =
|title = Mashup Dashboard
|url = http://www.programmableweb.com/mashups
|archiveurl =
|work =
|publisher = ProgrammableWeb.com
|___location =
|page =
|pages =
|language =
|trans_title =
|format =
|doi =
|date =
|month =
|year = 2009
|archivedate =
|accessdate =
|quote =
}}
</ref>.
<BR>
==Use of APIs to share content==
The practice of publishing APIs has allowed web communities to create an open architecture for sharing of content and data between communities and applications. In this way, content that is created in one place can be dynamically posted and/or updated in multiple locations on the web.<BR>
1. Photos can be shared from sites like Flickr and Photobucket to Social Network sites like Facebook and MySpace. <BR>
2. Content can be embedded, Here is an example of a presentation embedded by SlideShare on Linked-in:[http://www.linkedin.com/in/davidshantz Embedded Slide Show in a Profile] <BR>
3. Content can be dynamically posted. Sharing comments made on Twitter to a Facebook account for example is enabled by Twitter and Facebook's APIs. <BR>
4. Video content can be embedded on sites, in this example of an embedded YouTube Video, where the content is served by YouTube on a third party site [http://www.magnity.com Embedded Video Content Example] <BR>
5. User information can be shared from web communities to outside applications, delivering new functionality to the web community that shared its user data via an open API. One of the best examples of this is the Facebook Application platform. Another is the Open Social platform<ref>
{{cite web
|first =
|last =
|author =
|authorlink =
|coauthors =
|title = Dynamic Community content via APIs
|url =
|archiveurl =
|work =
|publisher =
|___location =
|page =
|pages =
|language =
|trans_title =
|doi =
|date = Oct 26 2009
|month =
|year = 2009
|archivedate =
|accessdate =
|quote =
}}
</ref>.
==Implementations==
The [[POSIX]] standard defines an API that allows a wide range of common computing functions to be written such that they may operate on many different systems ([[Mac OS X]] and various [[Berkeley Software Distribution]]s (BSDs) implement this interface); however, making use of this requires [[Compiler|re-compiling]] for each platform. A compatible API, on the other hand, allows compiled [[object code]] to function without any changes, on any system implementing that API. This is beneficial to both software providers (where they may distribute existing software on new systems without producing/distributing upgrades) and users (where they may install older software on their new systems without purchasing upgrades), although this generally requires various software libraries implementing the necessary APIs too.
[[Microsoft]] has shown commitment to a backward compatible API, particularly within their [[Windows API]] (Win32) library, such that older applications may run on newer versions of Windows using an executable-specific setting called "Compatibility Mode"<ref>
{{cite web
|first =
|last =
|author = Microsoft
|authorlink =
|coauthors =
|title = Run Older Programs On Windows XP
|url = http://www.microsoft.com/windowsxp/using/helpandsupport/learnmore/appcompat.mspx
|archiveurl =
|work =
|publisher = Microsoft
|___location =
|page =
|pages = 4
|language = EN
|trans_title =
|doi =
|date =
|month = October
|year = 2001
|archivedate =
|accessdate =
|quote =
}}</ref>. [[Apple Inc.]] has shown less propensity to this concern, breaking compatibility or implementing an API in a slower "emulation mode"; this allows greater freedom in development, at the cost of making older software obsolete.
Among [[Unix-like]] operating systems, there are many related but incompatible operating systems running on a common hardware platform (particularly [[Intel 80386]]-compatible systems). There have been several attempts to standardise the API such that software vendors may distribute one binary application for all these systems; however to date, none of these have met with much success. The [[Linux Standard Base]] is attempting to do this for the [[Linux]] platform, while many of the BSD Unices ([[FreeBSD]], [[NetBSD]], [[OpenBSD]]) implement various levels of API compatibility for both backward compatibility (allowing programs written for older versions to run on newer distributions of the system) and cross-platform compatibility (allowing execution of foreign code without recompiling).
==Release policies==
Common API publishing policies include:
* Companies do not release API information to anybody outside of the company.
* Companies protect information on their APIs from the general public. For example, [[Sony]] used to make its official [[PlayStation 2]] API available only to licensed PlayStation developers. This enabled Sony to control who wrote PlayStation 2 [[game]]s. Such control can have quality control benefits and potential license revenue.
* Companies make their APIs freely available. For example, [[Microsoft]] makes the [[Microsoft Windows]] API public and [[Apple Inc.|Apple]] releases its APIs [[Carbon (computing)|Carbon]] and [[Cocoa (API)|Cocoa]] so that software can be written for their [[System platform|platform]].
==ABI's==
The related term [[application binary interface]] (ABI) is a lower level definition concerning details at the [[assembly language]] level. For example, the [[Linux Standard Base]] is an ABI, while [[POSIX]] is an API.<ref>{{cite web|
first=Nick|
last=Stoughton|
url=https://db.usenix.org/publications/login/2005-04/openpdfs/standards2004.pdf|
title=Update on Standards|
publisher=[[USENIX]]|
format=PDF|
year=2005|
month=April|
accessdate=2009-06-04}}</ref>
==API examples==
<div style="-moz-column-count:3; column-count:3;">
* [[Advanced SCSI Programming Interface|ASPI]] for [[SCSI]] device interfacing
* [[Carbon (computing)|Carbon]] and [[Cocoa (API)|Cocoa]] for the [[Apple Macintosh|Macintosh]]
* [[DirectX]] for [[Microsoft Windows]]
* [[List of Java APIs|Java APIs]]
* [[OpenGL]] cross-platform graphics API
* [[OpenAL]] cross-platform sound API
* [[OpenCL]] cross-platform API for general-purpose computing for CPUs & GPUs
* [[Simple DirectMedia Layer]] (SDL)
* [[Windows API]]
</div>
==Language bindings and interface generators==
APIs that are intended to be used by more than one [[high-level programming language]] often provide, or are augmented with, facilities to automatically map the API to features (syntactic or semantic) that are more natural in those languages. This is known as [[language binding]], and is itself an API. The aim is to [[Encapsulation (computer science)|encapsulate]] most of the required functionality of the API, leaving a "thin" layer appropriate to each language.
Below are listed some interface generator tools which bind languages to APIs at [[compile time]].
* [[SWIG]] generates interfaces from many languages for many languages (Typically Compiled->Scripted)
* [http://www.f2py.org/ F2PY]: [[Fortran (programming language)|Fortran]] to [[Python (programming language)|Python]] interface generator.
* [[XPCOM]] (Cross Platform Component Object Model) is a cross platform component model from [[Mozilla]].
==See also==
* [[API Writer]]
* [[Application Binary Interface]] (ABI)
* [[Document Object Model]] (DOM)
* [[Double-chance function]]
* [[List of 3D graphics APIs]]
* [[Mashup (web application hybrid)]]
* [[Open Service Interface Definitions]] (OSID)
* [[Platform-enabled website]]
* [[Plugin]]
* [[Software Development Kit]] (SDK)
* [[Web service]]
==References==
<references />
==External links==
* [http://apidesign.org Practical API Design] book and collaboration site
* [http://lcsd05.cs.tamu.edu/slides/keynote.pdf How to design a good API and why it matters-PDF]
* [http://java.sun.com/developer/technicalArticles/WebServices/soa/ Service-Oriented Architecture (SOA): The Road to Enterprise Application Integration (EAI)]
* [http://isotc.iso.org/livelink/livelink.exe/fetch/2000/2489/186491/186605/Jtc1_Directives.pdf?nodeid=3959538&vernum=0 ISO/IEC JTC 1 Directives, 5th Edition Version 3.0, Annex J: Guidelines for API standardization]
*[http://www.freewebs.com/dagovargame/eng_tut.htm/ API functions tutorial for game making]
{{DEFAULTSORT:Application Programming Interface}}
[[Category:Technical communication]]
[[Category:Application programming interfaces|*]]
[[ar:واجهة برمجة التطبيقات]]
[[bn:অ্যাপলিকেশন প্রোগ্রামিং ইন্টারফেস]]
[[bs:Application Programming Interface]]
[[bg:API]]
[[ca:API]]
[[cs:API]]
[[da:API]]
[[de:Programmierschnittstelle]]
[[et:Rakendusliides]]
[[el:Διεπαφή προγραμματισμού εφαρμογών]]
[[es:Interfaz de programación de aplicaciones]]
[[eu:Application Programming Interface]]
[[fa:رابط برنامهنویسی نرمافزار]]
[[fr:Interface de programmation]]
[[gl:API]]
[[ko:API]]
[[id:Antarmuka pemrograman aplikasi]]
[[it:Application programming interface]]
[[he:ממשק תכנות יישומים]]
[[lt:Aplikacijų programavimo sąsaja]]
[[hu:Alkalmazásprogramozási felület]]
[[nl:Application programming interface]]
[[ja:Application Programming Interface]]
[[no:API (programmering)]]
[[pl:API (informatyka)]]
[[pt:API]]
[[ro:Interfaţă de programe de aplicaţii]]
[[ru:Интерфейс программирования приложений]]
[[sq:Interfejsi për programimin e aplikacioneve]]
[[simple:Application programming interface]]
[[sk:Application programming interface]]
[[sr:Апликациони програмски интерфејс]]
[[sh:API]]
[[fi:Ohjelmointirajapinta]]
[[sv:Application Programming Interface]]
[[ta:பயன்பாட்டு நிரலாக்க இடைமுகம்]]
[[th:เอพีไอ]]
[[tr:Uygulama programlama arayüzü]]
[[uk:Прикладний програмний інтерфейс]]
[[vi:Giao diện lập trình ứng dụng]]
[[zh:应用程序接口]]' |
New page wikitext, after the edit (new_wikitext ) | 'www.prtm.tk' |
Whether or not the change was made through a Tor exit node (tor_exit_node ) | 0 |
Unix timestamp of change (timestamp ) | 1261923146 |