Application programming interface: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica |
Tradotto un po' liberamente da en.wiki |
||
Riga 1:
Per esempio, si può pensare ad un'applicazione che scriva le parole "Hello World" su uno schermo a vari livelli di astrazione:
# Scrivere tutto da soli:
## Disegnare su un foglio le forme delle lettere H, e, l, l, o, W, o, r, l, d,.
## Preparare una matrice di quadrati bianchi e neri avente la forma di ognuna delle lettere
## Ideare un modo per programmare la [[CPU]] in modo che ponga questa matrice nel ''frame buffer'' della scheda video.
## Predisporre la scheda video per generare il segnale corretto a partire dal ''frame buffer''.
# Utilizzare un [[sistema operativo]] per effettuare parte del compito:
## Caricare in memoria una struttura dati chiamata "font" fornita dal sistema operativo.
## Far visualizzare al sistema operativo una finestra nera.
## Far disegnare al sistema operativo il testo "Hello World" sulla finestra utilizzando il font caricato.
# Utilizzare un'applicazione (che a sua volta utilizza il sistema operativo) per tutto il lavoro:
## Scrivere un documento [[HTML]] contenente le parole "Hello World".
## Aprire il documento con un [[web browser]].
Ovviamente, la prima opzione richiede molti passaggi ed ognuno di questi è molto più complesso di querlli nelle opzioni successive. Inoltre, è poco pratico utilizzare il primo approccio nel caso in cui sia necessario visualizzare una certa quantità di informazioni, come quelle di un articolo di enciclopedia, sullo schermo, col secondo approccio l'operazione è molto più semplice e nel terzo è suficiente scrivere "Hello World". In ogni modo utilizzare API di livello più alto di solito comporta una certa perdita di flessibilità; per esempio, potebbe essee molto difficile in un web browser ruotare attorno ad un punto un testo con i bordi lampeggianti, mentre questo compito potrebbe essere svolto semplicemente ad un livello più basso. Questa differenza è un tipico esempio di compromesso che si può incontrare utilizzando un'API.
Le API sono essenziali per i computer come gli standard elettrici lo sono per una [[casa]]. Chiunque può inserire la spina del tostapane nella presa a muro della sua casa o dal vicino perché entrambe le case sono conformi ad uno standard. Se non ci fosse una interfaccia standard, occorrerebbe avere una centrale elettrica per fare un ''toast''. Niente vieta che esistano più tipi di interfacce diverse, per esempio un tostapane europeo non può funzionare negli Stati Uniti senza un [[trasformatore]] similmente ad un programma scritto per [[Microsoft Windows]] che non può essere eseguito direttamente sun un [[UNIX| sistema UNIX]] senza un ''[[API adapter]]'' come [[WINE]].
Esistono vari [[design model]] per le API. Le interfacce intese per la massima velocità di esecuzione spesso consistono in una serie di [[Subroutine|funzioni]], [[procedura|procedure]], [[variabile|variabili]] e [[struttura dati|strutture dati]]. Esistono anche altri modelli come gli [[interprete (software)|interpreti]] usati per valutare le espressioni come con [[ECMAScript]]/[[Javascript]]. Una buona API fornisce una "scatola nera" o un livello di astrazione che evita al programmatore di sapere come funzionano le API ad un livello più basso. Questo permette di riprogettare o migliorare le funzioni all'interno dell'API senza cambiare il codice che si affida ad essa.
Esistono due linee di condotta per quanto riguarda la pubblicazione delle API:
# Alcune compagnie conservano gelosamente le loro API. Per esempio, la [[Sony]] fornisce le API ufficiali solamente agli sviluppatori per la [[PlayStation]] registrati. Questo perché la Sony vuole restringere il numero di persone che possono scrivere [[gioco|giochi]] per la PlayStation in modo da ricavare il più possibile. Questo atteggiamento è tipico delle compagnie che non traggono profitto dalle vendita dell'implementazione delle API.
#Altre compagnie distribuiscono le API pubblicamente. Per esempio la [[Microsoft]] fornisce al pubblico informazioni sulle sue API per scrivere ''software'' per la piattaforma [[Windows]]. La vendita di applicazioni di terze parti fa vendere copie di Windows. Questo è tipico di compagnie che traggono profitto dalla vendita dell'implementazione delle API.
Some APIs, such as the ones standard to an [[operating system]], are implemented as separate [[Library (software) | code libraries]] that are distributed with the operating system.
Others require [[software publisher]]s to integrate the API functionality directly into the application. This forms another distinction in the examples above. Microsoft Windows APIs come with the operating system for anyone to use. Software for [[embedded system]]s such as [[video game console]]s generally falls into the application-integrated category. While an official Playstation API document may be interesting to read, it is of little use without its corresponding [[implementation]], in the form of a separate [[library]] or developer's [[kit]].
Una API che non richiede il pagamento di di diritti per il suo accesso ed utilizzo è detta "aperta". Le API fornite dal [[Free software]] (come il ''software'' distribuito sotto licenza [[GNU General Public License|GPL]], sono aperte per definizione, dal momento che si può accedere al [[sorgente]] del ''software'' e capire come funziona. Ache se esiste una "[[implementazione di reiferimento]]" per una API (come quella di [[Microsoft Windows]] oer la API [[Win32]], non c'è nulla che impdisce la creazione di un'implementazione alternativa. Per esempio, la maggior parte della API Win32 può essere fornita in un sistema [[UNIX]] da un ''software'' chiamato [[WINE]].
In generale costituisce una violazione di legge l'analisi dell'implementazione di una API per produrne una compatibile. Questa tecnica è chiamata ''[[reverse engineering]]''. La situazione legale in questi casi presenta ambiguità quindi conviene affrontare il problema prima che l'attività di ''reverse engineering'' sia iniziata. Per esempio, una API può contenere a sua volta un brevetto.
Esempi di API sono:
* L'[[ingerfaccia]] di chiamate al [[BIOS]] del PC
* I [[Document Object Model]] di varie applicazioni come l'[[HTML]]
* La [[Single UNIX Specification]]
* L'API [[Microsoft]] [[Win32]]
* L'API Java 2 Enterprise Edition [[J2EE]]
* L'intrefaccia [[ASPI]] per i dispositivi [[SCSI]]
* Le API [[Carbon]] e [[Cocoa]] per il [[Apple Macintosh|Macintosh]] [[Mac OS X|OS]]
* ''Simple Network Management Protocol'' ([[SNMP]])
* ''Universal Plug and Play'' ([[UPNP]])
* ''Common Object Request Broker Architecture'' ([[CORBA]])
[[de:API]] [[en:API]] [[fr:Application programming interface]] [[hu:API]] [[ja:API]] [[nl:API]] [[pl:API]] [[es:API]]
| |||