# Interfície de programació d'aplicacions

* «API» redirigeix aquí. Vegeu-ne altres significats a «API (desambiguació)».
Una interfície de programació d'aplicacions (en anglès Application Programming Interface, API) és una interfície que especifica com diferents components de programes informàtics haurien d'interaccionar. Dit d'una altra manera, és un conjunt d'indicacions, quant a funcions i procediments, ofert per una biblioteca informàtica o programoteca per ser utilitzat per un altre programa per interaccionar amb el programa en qüestió. O, dit encara d'una altra manera, és un conjunt de declaracions que defineix el contracte d'un component informàtic amb qui farà ús dels seus serveis.
Al moment de construir un sistema informàtic o biblioteca informàtica, per donar suport a les invocacions a serveis fetes per un altre programa, cal oferir una API, tant als programes externs (que podran usar els serveis oferts), com al programador (que disposa del manual indispensable per poder treure el màxim suc del component que ha adquirit).
Sovint, una API és una part del Kit de Desenvolupament d'una Aplicació (SDK).
L'API en si mateixa és abstracta en tant que especifica una interfície i no està lligada als detalls de la implementació. Quan un programari proveeix la funcionalitat descrita per una API, llavors diem que és una implementació de l'API.
En aquesta abstracció apareixen la llista de variables públiques, funcions i procediments (o mètodes, si parlem de programació orientada a objectes), que el component informàtic ofereix.
Les API són diferents de les interfícies binàries d'aplicació, en què les API estan especificades en termes de llenguatge de programació que pot ser compilat quan es construeix l'aplicació, en lloc de ser una descripció explícita de baix nivell de com es distribueixen les dades en memòria.
El terme API pot ser usat segons dos significats relacionats:
* Una interfície coherent, consistent en diverses classes o diversos conjunts de funcions o procediments relacionats
* Un simple punt d'entrada, com ara un mètode, una funció o un procediment.

## Models de disseny

Hi ha diversos models de disseny per a un API. Les interfícies que persegueixen la màxima velocitat d'execució sovint consisteixen en un conjunt de funcions, procediments, variables i estructures de dades. Tanmateix, també hi ha d'altres models - com ara l'intèrpret usat per avaluar expressions en ECMAScript/JavaScript o a la capa d'abstracció- que allibera el programador de la necessitat de conèixer com es relacionen els nivells més baixos d'abstracció amb les funcions de l'API. Això possibilita el redisseny o millora de les funcions de l'API sense afectar el codi que n'usa els serveis.
Algunes API, com ara les estàndards d'un sistema operatiu, estan implementades com a biblioteques de codi a part que es distribueixen juntament amb el sistema operatiu. D'altres requereixen distribuïdores de programari per poder integrar la funcionalitat de l'API directament a l'aplicació. Això afegeix una nova distinció als exemples dalt esmentats. L'API de Windows ve amb el sistema operatiu, perquè qualsevol la pugui usar. El programari pels sistemes incrustats, com podria ser una consola de videojoc, cau generalment a la categoria d'aplicació integrada, en lloc de la d'aplicació que ofereix serveis. Mentre un document oficial de l'API de la PlayStation pot ser interessant de llegir, és poc útil sense la seva corresponent implementació, com a biblioteca o kit de desenvolupament de l'aplicació
Una API sobre la qual no es carreguen drets d'autor per l'accés i l'ús, és anomenada "oberta". I tot i que sovint les API són proveïdes amb "implementacions de referència" autoritzades (com fa el Windows de Microsoft per l'API del Win32), poden aparèixer implementacions alternatives. Per exemple, la major part de l'API de Win32 pot ser proveïda sota un sistema UNIX usant un programa anomenat Wine.
Als països amb patents de programari, és legalment recomanable analitzar implementacions de l'API per produir-ne una de compatible. A aquesta tècnica l'anomenem enginyeria inversa orientada a la interoperabilitat. Així i tot, la situació legal continua sent sovint ambigua, de manera que cal tenir cura i comptar amb assessorament legal, abans de tirar endavant aquesta tècnica. Per exemple, mentre que les API no tenen un estatus legal clar, podrien incloure patents que no haurien de ser usades fins que qui atresora la patent dona el seu permís, si s'escau. Als països on no s'atorguen patents de programari, l'única protecció que pot ser aplicada a una API és la dels drets d'autor (copyright en anglès).

## Polítiques de llançament

Dues línies generals sobre les polítiques de publicació d'una API.
* Algunes empreses protegeixen la informació sobre les seves API del públic general. Per exemple, Sony va posar només a disposició dels desenvolupadors certificats de PlayStation, l'API de PlayStation 2. Això va capacitar PlayStation per controlar qui programava jocs de PlayStation 2. Això aportava inherentment la capacitat d'exercir un control de qualitat, i també la possibilitat de recollir beneficis per les llicències.
* Algunes empreses fan que les seves API siguin lliurement disponibles. Per exemple, Microsoft fa públiques la majoria de les seves API, de manera que el programari podrà funcionar en plataformes Windows usant aquestes API.

## Alguns exemples d'API

Alguns exemples d'API conegudes són:
* Single Unix Specification
* API de Windows
* API de Java
* La interfície de crida a la BIOS del PC
* Single UNIX Specification (SUS)
* API de Microsoft Win32
* Java Platform, Enterprise Edition APIs
* ASPI per SCSI d'interconnexió de dispositius
* Carbon i Cocoa per l'OS de Macintosh
* API multiplataforma d'OpenGL
* DirectX per Microsoft Windows
* Simple DirectMedia Layer (SDL)
* API de Google Maps

## Referències

* ↑ Totes les API distribuïdes sota la GNU General Public License estan obertes per definició. La GNU C library n'és un exemple

## Vegeu també

* Connector (aplicació informàtica)
* Model d'Objectes del Document
* Serveis web
* Clau d'API

## Enllaços externs

* Com dissenyar una bona API i per què importa -PDF en anglès Arxivat 2011-09-03 a Wayback Machine.
Viccionari