Qual è la differenza tra un'API e un SDK?


174

Stavo esaminando varie API e SDK, quando mi sono reso conto che non potevo davvero distinguere tra qualcosa chiamato API e qualcosa chiamato SDK .

Entrambi sono, concettualmente, un modo per il tuo programma di interfacciarsi e controllare le risorse fornite da un altro software, sia che quell'altro software sia un servizio web, un'app per l'utente finale, un servizio OS o un demone o un kernel driver del dispositivo.

Quindi, qual è la differenza semantica tra un SDK e un'API?


3
SDK è un kit di sviluppo, in genere una libreria lato client che facilita l'utilizzo di un'API. Un'API è solo la definizione di libreria / servizio e / o documentazione.
dietbuddha,

Risposte:


175

Penso che piuttosto ricada sulla falsariga di "Tutti gli SDK sono / contengono API ma non tutte le API sono SDK".

Un SDK sembra essere un set completo di API che consente di eseguire la maggior parte delle azioni necessarie per la creazione di applicazioni. Inoltre, un SDK può includere altri strumenti per lo sviluppo per la piattaforma / articolo per cui è destinato.

Un'API d'altra parte è solo una serie di metodi correlati che possono essere utili per uno scopo specifico.

Ad esempio, il JDK (Java Development Kit) contiene l'API, nonché i compilatori, i runtime e altri strumenti vari. L'API Java è semplicemente tutte le librerie che compongono il linguaggio principale con cui è possibile lavorare immediatamente.


7
Vorrei aggiungere che un SDK è solo un esempio di come interagiresti con detta API.
The Muffin Man,

10
Penso che potresti aver invertito quel Nick. Un SDK è un superset di cose, che contiene (tra le altre cose) le API per interagire con le sue librerie (non la libreria stessa, ma l'interfaccia con la libreria che verrebbe utilizzata da un programmatore che utilizza la libreria).
Danny Staple,

7
Un SDK può includere un'API, strumenti, documentazione, esempi e tutto il necessario.
Gregregac,

4
@gregmac Non ho comunicato questo fatto?

In termini pratici, sarebbe corretto affermare che molto probabilmente un'API conterrà solo le definizioni di interfaccia che le classi dovrebbero implementare, mentre un SDK conterrebbe le classi di base con la maggior parte delle funzionalità standard già programmate?
Ben

85
  • API = interfaccia di programmazione dell'applicazione
  • SDK = Kit di sviluppo software

Quindi la vera differenza è che un'API non è più o meno un'interfaccia per "alcuni servizi", mentre un SDK è un insieme di strumenti / componenti / classi per uno scopo specifico. Un SDK infatti presenta un'API con cui interfacciarsi. Tuttavia, è possibile utilizzare un'API senza i componenti sottostanti, ad esempio quando l'API viene fornita tramite un servizio Web.

Esempi di API:

Esempi di SDK:


3
+10 per "potresti usare un'API senza i componenti sottostanti". A proposito, il secondo collegamento è inattivo .......
Pacerier,

24

API → interfaccia documentata (in un determinato momento e per un determinato pubblico. La documentazione potrebbe essere incompleta e / o non disponibile per il pubblico in generale e ciò potrebbe essere intenzionale, ma ciò non attenua il fatto che doveva essere documentato per l'utilizzo da parte di terzi.)

SDK → documentazione dell'interfaccia (+ esempi e strumenti)


4
Finalmente qualcuno che menziona la documentazione!
Gregregac,

4
Non tutte le API sono documentate, a volte è sufficiente ispezionare / riflettere l'interfaccia.
JBR Wilkinson,

Gli "esempi" non fanno parte dell'API?
Pacerier,

1
@Pacerier ... assolutamente no. Gli esempi potrebbero far parte di una documentazione API , ma l'interfaccia pura potrebbe essere "non documentata" (ovvero la documentazione relativa ad essa è mantenuta segreta al mondo esterno: think ... idk, microsoft ) pur essendo ancora un'API. È solo l'interfaccia. Funzioni, classi, chiamate, forse un protocollo, forse un formato di file, ma niente di più.
ZJR,

17

"SDK" è collettivo in un senso più ampio di "API".

In genere è disponibile un solo SDK per coprire un'intera piattaforma. C'è un MacOS X SDK e un iOS SDK, per esempio, e quelli contengono ciascuno le API per molte diverse aree di funzionalità.

"API" era originariamente utilizzato anche come termine collettivo, ed è ancora spesso usato in quel modo (MAPI, WSAPI, ecc.), Ma di solito è limitato a una particolare tecnologia. L'ambito implicato dall '"API" sembra essere diminuito nel corso degli anni; la gente parlava di "API Toolbox di Mac" o di "API di Windows", che ovviamente contenevano entrambe molte funzionalità. In questi giorni, non è raro sentire "API" usato per indicare una singola funzione di sistema; si potrebbe dire che una nuova versione di un sistema operativo contenga centinaia di nuove API e si intendono centinaia di nuove chiamate di sistema.

Nessuno dei due termini è molto preciso senza un certo contesto.


11

Che cos'è l'API?

L'API è un'interfaccia che consente ai programmi software di interagire tra loro. Definisce un insieme di regole che dovrebbero essere seguite dai programmi per comunicare tra loro. Le API generalmente specificano come definire le routine, le strutture di dati, ecc. Per consentire la comunicazione tra due applicazioni. Le API si differenziano per la funzionalità fornita da loro. Esistono API generali che forniscono funzionalità di libreria di un linguaggio di programmazione come l'API Java. Esistono anche API che forniscono funzionalità specifiche come l'API di Google Maps. Esistono anche API dipendenti dalla lingua, che potrebbero essere utilizzate solo da un linguaggio di programmazione specifico. Inoltre, esistono API indipendenti dalla lingua che potrebbero essere utilizzate con diversi linguaggi di programmazione. Le API devono essere implementate con molta attenzione esponendo all'esterno solo le funzionalità oi dati richiesti, mantenendo inaccessibili le altre parti dell'applicazione. L'utilizzo delle API è diventato molto popolare in Internet. È diventato molto comune consentire alcune funzionalità e dati attraverso un'API verso l'esterno sul Web. Questa funzionalità può essere combinata per offrire agli utenti una funzionalità migliorata.

Che cos'è l'SDK?

SDK è un insieme di strumenti che possono essere utilizzati per sviluppare applicazioni software destinate a una piattaforma specifica. Gli SDK includono strumenti, librerie, documentazione e codice di esempio che potrebbero aiutare un programmatore a sviluppare un'applicazione. La maggior parte degli SDK potrebbe essere scaricata da Internet e molti SDK sono forniti gratuitamente per incoraggiare i programmatori a utilizzare il linguaggio di programmazione dell'SDK. Alcuni SDK ampiamente utilizzati sono Java SDK (JDK) che include tutte le librerie, utilità di debug, ecc., Che renderebbe molto più semplice la scrittura di programmi in Java. Gli SDK semplificano la vita di uno sviluppatore di software, poiché non è necessario cercare componenti / strumenti compatibili tra loro e tutti sono integrati in un unico pacchetto facile da installare.

Qual è la differenza tra API e SDK?

L'API è un'interfaccia che consente ai programmi software di interagire tra loro, mentre un SDK è un insieme di strumenti che possono essere utilizzati per sviluppare applicazioni software destinate a una piattaforma specifica. La versione più semplice di un SDK potrebbe essere un'API che contiene alcuni file necessari per interagire con un linguaggio di programmazione specifico. Quindi un'API può essere vista come un semplice SDK senza tutto il supporto per il debug, ecc.


7

Un SDK potrebbe essere nient'altro che un'API (file per interfacciarsi con un'altra app), ma di solito include altro codice per il debug e altri pezzi per il tuo IDE.

Ho finito gli acronimi.


8
Veloce, procuratevi altri TLA!
Mason Wheeler,

4
Sono quasi pronto per EIEIO.
JeffO,

5

Tutto ciò che è stato menzionato prima è vero, ma riguardo all'SDK vorrei aggiungere che un kit di sviluppo software è (o dovrebbe essere) un pacchetto davvero completo con (quasi) tutti gli strumenti necessari per il processo di sviluppo, mentre l'API è "solo" un'interfaccia per interagire con.


1

I miei due centesimi: credo che il termine API sia spesso usato in modo errato.

Un'API è un'interfaccia di programmazione dell'applicazione.

Sebbene sia una specie di nome imbarazzante, significa che è un'interfaccia . Quindi un'applicazione potrebbe avere un'API per consentire ad altre applicazioni di comunicare con essa. E un software (ad esempio una classe in un sistema OO) potrebbe offrire un'API per consentire ad altri moduli nel sistema di comunicare con esso.

Tuttavia, spesso il termine API viene utilizzato come sinonimo di "libreria". Non penso che sia un uso corretto della parola. Parte della libreria è un'API per consentire al codice di usarla, ma la libreria non è un'API.

E un SDK è una specie di libreria, quindi è qui che potrebbe esserci la confusione.


1
Sono d'accordo. Probabilmente smetterei di dire che è "errato". Questa nave ha navigato e l'uso di "API" è cambiato. Ma sono d'accordo sul fatto che "biblioteca" è spesso una parola migliore per ciò che la gente chiama "API"
Harry Wood,

0

Molte altre risposte spiegano che un SDK è un tooling , ma nessuna di esse esce direttamente e afferma che un'API è una specifica .

L'API per X compoonent è tutte le informazioni necessarie per scrivere qualche altro componente che interagirà con X. Un SDK per il componente X può contenere routine di libreria che semplificano la scrittura di quel componente, ma le librerie non lo sono l'API: sono semplicemente un'incarnazione dell'API.


è solo una tua opinione o puoi sostenerla in qualche modo?
moscerino

"l'API descrive e prescrive il comportamento atteso mentre la biblioteca è una vera implementazione di questo insieme di regole" en.wikipedia.org/wiki/…
Solomon Slow

secondo la mia lettura questo non è correlato al punto che stai cercando di fare: "che un'API è una specifica"
moscerino

-3

Vorrei confrontare in questo modo.

Se sei uno sviluppatore che utilizza Microsoft Tools:

API = Microsoft.Net Framework Vs SDK = Visual Studio

Se sei uno sviluppatore che utilizza Java:

API = Java RunTime Vs SDK = Qualsiasi strumento che fornirebbe il Development Kit (JDK)

Immagino che un SDK debba necessariamente fare affidamento su un'API corrispondente: non esiste un SDK senza un'API.


Penso che ciò di cui stai parlando in termini di Visual Studio sia un IDE, che può fornire accesso a uno o più SDK e / o API.
KeithS,

1
Visual Studio non è un SDK ma alcune edizioni includono l'SDK di Windows o .NET in quanto è probabile che lo sviluppino usando VS.
JBR Wilkinson,

-3

Ecco una semplice analogia ... Le API sono come parole che puoi usare e gli SDK sono come frasi che sono state messe insieme per te.


-4

Man mano che le applicazioni vengono sviluppate e migliorate interfacciandole con altre applicazioni, è necessario consentire ad altre applicazioni (logica) di interfacciarsi con la logica principale, ciò avviene tramite un set definito di API. L'SDK viene utilizzato per creare / creare codice che utilizza le API per interagire con altre applicazioni.


1
questo non sembra offrire nulla di sostanziale rispetto ai punti formulati e spiegati nelle precedenti 11 risposte
moscerino
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.