Application programming interface: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
è uno scherzo |
m Annullata la modifica di 93.65.240.87 (discussione), riportata alla versione precedente di 93.151.246.49 Etichetta: Rollback |
||
(105 versioni intermedie di 73 utenti non mostrate) | |||
Riga 1:
{{C|Rivedere la relazione tra api e librerie|informatica|febbraio 2024}}
{{F|informatica|febbraio 2024}}
[[File:Database management system diagram from 1978 workshop.png|thumb|alt=Application programming interface|Application programming interface]]
== Caratteristiche
Esistono vari
▲Esistono vari [[design model]] per le API. Le interfacce intese per la massima velocità di esecuzione spesso consistono in una serie di [[Subroutine|funzioni]], [[Funzione (informatica)|procedure]], [[variabile (informatica)|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", cioè 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, [[Microsoft]] fornisce API ufficiali solamente agli sviluppatori [[Xbox]] registrati
# Altre compagnie distribuiscono le API pubblicamente. Per esempio, la stessa [[Microsoft]] fornisce al pubblico informazioni sulle sue [[Windows API]], tra cui le [[Microsoft Foundation Classes]] (MFC), per consentire di scrivere
Alcune API, come quelle standard di un sistema operativo, sono implementate come una libreria separata e distribuite con il sistema operativo. Altre API richiedono a chi pubblica il software di integrare l'API direttamente nell'applicazione e spesso richiedono l'utilizzo di [[API key|chiavi API]] per l'autenticazione e il controllo degli accessi. Questo costituisce un'ulteriore distinzione nell'esempio precedente.
▲# Alcune compagnie conservano gelosamente le loro API. Per esempio, [[Microsoft]] fornisce API ufficiali solamente agli sviluppatori [[Xbox]] registrati. Questo perché intende restringere il numero di persone che possono scrivere [[gioco|giochi]] per la [[Console (sistema per videogiochi)|console]] per limitare la pirateria.
▲# Altre compagnie distribuiscono le API pubblicamente. Per esempio la stessa [[Microsoft]] fornisce al pubblico informazioni sulle sue [[Windows API]], tra cui le [[Microsoft Foundation Classes]] (MFC), per scrivere ''software'' per la piattaforma [[Windows]].
▲Altre richiedono a chi pubblica il software di integrare l'API direttamente nell'applicazione. Questo costituisce un'ulteriore distinzione nell'esempio precedente. Le API di Microsoft Windows sono fornite con il sistema operativo e chiunque può utilizzarle. Il ''software'' per i [[sistema embedded|sistemi embedded]] come le console per videogiochi generalmente ricadono nella categoria in cui le API sono integrate con l'applicazione. Anche se la documentazione ufficiale dell'API della Playstation può essere una lettura interessante, è quasi inutile senza la corrispondente implementazione sotto forma di una libreria separata o di un ''kit'' per sviluppatori.
Una API che non richiede il pagamento di diritti per il suo accesso ed utilizzo è detta "aperta". Le API fornite dal [[software libero]], come
In generale l'analisi dell'implementazione di una API per produrne una compatibile costituisce una violazione alla legge. Questa tecnica è chiamata
== Finalità ==
La finalità è ottenere un'[[astrazione (informatica)|astrazione]] a più alto livello, di solito tra l'[[hardware]] e il programmatore o tra [[software]] a basso e quello ad alto livello semplificando così il lavoro di [[programmazione (informatica)|programmazione]]. Le API permettono infatti di evitare ai [[programmatore|programmatori]] di riscrivere ogni volta tutte le [[funzione (informatica)|funzioni]] necessarie al programma dal nulla, ovvero dal basso livello, rientrando quindi nel più vasto concetto di [[riuso di codice]]. Le API stesse rappresentano quindi un livello di astrazione intermedio: il
== Posix ==
Poiché esistono molte varianti di API, nel 1985 è stato creato un progetto finalizzato alla creazione di uno standard. La famiglia che racchiude questi standard prende il nome di [[
== Esempio di utilizzo ==
Si può pensare
# Scrivere tutto da soli:
## Disegnare su un foglio le forme delle lettere H, e, l, l, o, W, o, r, l, d.
Riga 41:
## Aprire il documento con un [[web browser]].
==
Una '''web API''' è un'API sviluppata in uno dei linguaggi specifici per realizzare [[web app]] ovvero, in parole povere, applicazioni che l'utente usa attraverso un comune [[browser]]<ref>{{Cita web|url=https://www.unilab.eu/it/articoli/coffee-break-it/web-api/|titolo=API e WEB API cosa sono?|sito=UNILAB - Heat Transfer Software|data=2018-09-17|lingua=it-IT|accesso=2024-06-16}}</ref>. Rappresenta una categoria di procedure (erogate attraverso interfacce visuali consistenti in librerie di strumenti spesso open source) molto diffuse a causa del massiccio impiego di sistemi di tipo [[Software as a service|SaaS]]; possono però essere sviluppate affinché interagiscano con applicazioni tradizionali.
Esse sono delle interfacce per sviluppatori o per utenti che necessitano di servizi aggiuntivi o specifici rispetto al sistema base. Sono pure gli stessi produttori di software (oltre che al mondo open source) che mettono a disposizione set già compilati di web API, non solo per integrare funzioni ma anche per facilitare l'operatività dell'utente o del reparto IT aziendale in caso di sistemi informatici sempre più complessi (si pensi alle soluzioni di tipo business).
== Esempi di API e web API ==
* L'[[interfaccia (informatica)|interfaccia]] di chiamate al [[BIOS]] del PC
* I [[Document Object Model]] di varie applicazioni come l'[[HTML]]
Riga 50 ⟶ 55:
* L'API Java 2 Enterprise Edition [[Java EE]]
* L'interfaccia [[ASPI]] per i dispositivi [[Small Computer System Interface|SCSI]]
* Le API [[Carbon (API)|Carbon]] e [[Cocoa (
* API e Web service
* ''Common Object Request Broker Architecture'' ([[Common Object Request Broker Architecture|CORBA]])
* ''Java APIs for Integrated Networks'' ([[JAIN]])
* ''Simple Network Management Protocol'' ([[Simple Network Management Protocol|SNMP]])
* ''Universal Plug and Play'' ([[UPnP]])
* ''Google APIs by Google Inc.''▼
* [[Mantle]], API di basso livello sviluppate da [[AMD]] come alternativa a [[DirectX]] e [[OpenGL]]
* ''[[Java Telephony API]]'', API di Java per la gestione di [[call center]] distribuiti
* ''Amazon Product Advertising API''
* ''Bing API''
* ''Envato Marketplace API''
* ''Facebook API''
* ''Google Chart Tools and API''
* ''Google Feed API''
▲* ''All Google APIs and Tools'' (''Google APIs by Google Inc.'')
* ''LinkedIn API''
* ''StackExchange API''
* ''Twitter API''
* ''YouTube API''
* ''YUI Charts''
* ''Google Maps API Family''
* ''Google Libraries API''
* ''Google+ Platform API''
== Note ==
<references/>
Riga 65 ⟶ 85:
* [[Libreria (software)]]
* [[Linguaggio di programmazione]]
* [[Application binary interface]]
* [[API key]]
== Altri progetti ==
{{interprogetto|preposizione=sull'|wikt=API|wikt_etichetta=API}}
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC|Application Program Interface|Application Program Interface}}
* {{Garzanti|API}}
{{Componenti di Windows}}
{{Controllo di autorità}}
{{
[[Categoria:Librerie software]]
|