API
API č l'acronimo di Application Program(ming) Interface, indica ogni insieme di procedure disponibili al programmatore, di solito raggruppate a formare un set di strumenti specifici per un determinato compito. È un metodo per ottenere un'astrazione, di solito tra l'hardware e il programmatore, o tra software a basso ed alto livello. Le API permettono di evitare ai programmatori di scrivere tutte le funzioni dal nulla. Le API stesse sono un'astrazione: il software che fornisce una certa API č detto implementazione dell'API.Per esempio, si può pensare ad un'applicazione che scriva le parole "Hello World" su uno schermo con 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 contenuto 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 vuota.
- 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.
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 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 funzioni, procedure, variabili e strutture dati. Esistono anche altri modelli come gli 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 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 Windows 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.
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 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 riferimento" per una API (come quella di Microsoft Windows per la Windows API), non c'č nulla che impedisce la creazione di un'implementazione alternativa. Per esempio, la maggior parte della API di Windows può essere fornita in un sistema UNIX da un software chiamato WINE.
In generale l'analisi dell'implementazione di una API per produrne una compatibile costituisce una violazione alla legge. 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'interfaccia di chiamate al BIOS del PC
- I Document Object Model di varie applicazioni come l'HTML
- La Single UNIX Specification
- La Windows API di Microsoft
- L'API Java 2 Enterprise Edition J2EE
- L'interfaccia ASPI per i dispositivi SCSI
- Le API Carbon e Cocoa per il Macintosh OS
- Simple Network Management Protocol (SNMP)
- Universal Plug and Play (UPNP)
- Common Object Request Broker Architecture (CORBA)