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

160

Guardavo attraverso varie API e SDK, quando ho capito che non potevo davvero capire la differenza tra qualcosa chiamata API e qualcosa chiamato un SDK .

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

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

    
posta KeithS 17.08.2011 - 22:43
fonte

12 risposte

160

Penso che cada piuttosto 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 della piattaforma / oggetto per cui è.

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

Ad esempio, JDK (Java Development Kit) contiene l'API, i compilatori, i runtime e altri strumenti vari. L'API Java è semplicemente tutte le librerie che costituiscono il linguaggio di base che è possibile lavorare con out of the box.

    
risposta data 17.08.2011 - 22:52
fonte
79
  • API = Interfaccia di programmazione dell'applicazione
  • SDK = Kit di sviluppo software

Quindi la vera differenza è che un'API non è più o meno un'interfaccia di "qualche servizio", mentre un SDK è un insieme di strumenti / componenti / classi per uno scopo specifico. Un SDK infatti ti presenta con un'interfaccia API con cui interagire. Ma potresti usare un'API senza avere i componenti sottostanti, ad esempio quando l'API viene fornita attraverso un servizio web.

Esempi di API:

Esempi di SDK:

risposta data 17.08.2011 - 22:56
fonte
23

API → interfaccia documentata (ad un certo punto nel tempo, e per un certo pubblico.) La documentazione potrebbe essere incompleta e / o non disponibile al pubblico e questo potrebbe essere di proposito, ma ciò non diminuisce il fatto che fosse inteso da documentare a terzi per utilizzarlo.)

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

    
risposta data 18.08.2011 - 03:19
fonte
17

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

In genere, si trova solo un SDK per coprire un'intera piattaforma. C'è un MacOS X SDK e un iOS SDK, per esempio, e ognuno di essi contiene le API per molte diverse aree di funzionalità.

"API" è stato originariamente utilizzato come termine collettivo, ed è ancora spesso usato in questo modo (MAPI, WSAPI, ecc.), ma di solito è limitato a una particolare tecnologia. L'ambito implicato dalla "API" sembra essere diminuito nel corso degli anni; la gente parlava della "Mac Toolbox API" o della "API di Windows", che contenevano ovviamente un lotto di funzionalità. Al giorno d'oggi, 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 che cosa si intende per centinaia di nuove chiamate di sistema.

Nessun termine è molto preciso senza un contesto.

    
risposta data 17.08.2011 - 23:35
fonte
11

Che cos'è l'API?

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 in genere specificano come devono essere definite le routine, le strutture dati, ecc. Affinché due applicazioni possano comunicare. Le API differiscono nella 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 possono essere utilizzate solo da un linguaggio di programmazione specifico. Inoltre, ci sono API linguistiche che potrebbero essere utilizzate con diversi linguaggi di programmazione. Le API devono essere implementate molto attentamente esponendo solo le funzionalità oi dati richiesti all'esterno, mantenendo inaccessibili le altre parti dell'applicazione. L'utilizzo delle API è diventato molto popolare su 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 funzionalità migliorate.

Che cos'è l'SDK?

SDK è un insieme di strumenti che possono essere utilizzati per sviluppare applicazioni software rivolte 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 può 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 e così via, che renderebbero i programmi di scrittura molto più semplici 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?

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 rivolte a una piattaforma specifica. La versione più semplice di un SDK potrebbe essere un'API che contiene alcuni file necessari per interagire con uno specifico linguaggio di programmazione. Quindi un'API può essere vista come un semplice SDK senza tutto il supporto per il debug, ecc.

    
risposta data 18.08.2011 - 07:38
fonte
7

Un SDK potrebbe essere nient'altro che un'API (file che facilita l'interfaccia con un'altra app), ma di solito include un altro codice per facilitare il debug e altri elementi per l'IDE.

Ho esaurito tutti gli acronimi.

    
risposta data 17.08.2011 - 22:52
fonte
5

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

    
risposta data 17.08.2011 - 23:08
fonte
1

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

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

Anche se è un nome scomodo, significa che è un'interfaccia . Pertanto un'applicazione potrebbe avere un'API per consentire ad altre applicazioni di comunicare con essa. E un pezzo di 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 è usato come sinonimo di "libreria". Non penso che sia un uso corretto della parola. La parte della libreria è un'API per consentire al codice di utilizzarla, ma la libreria non è un'API.

E un SDK è un tipo di libreria, quindi è qui che potrebbe essere la confusione.

    
risposta data 02.08.2014 - 22:59
fonte
0

Molte altre risposte spiegano che un SDK è tooling , ma nessuno di questi esce direttamente e dice che un'API è una specifica .

L'API per Compyent X è tutta l'informazione di cui hai bisogno per scrivere qualche altro componente che interagirà con X. Un SDK per il componente X può contenere routine di libreria che ti rendono più facile per scrivere quel componente, ma le librerie non sono l'API: sono semplicemente una forma di realizzazione dell'API.

    
risposta data 29.08.2016 - 18:32
fonte
-3

Vorrei confrontarmi 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 = Any tool that would provide the Development Kit (JDK)

Suppongo che un SDK debba necessariamente fare affidamento su un'API corrispondente - non esiste un SDK senza un'API.

    
risposta data 18.08.2011 - 18:51
fonte
-3

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

    
risposta data 08.04.2013 - 16:48
fonte
-4

Poiché le applicazioni sono sviluppate e migliorate collegandole ad altre applicazioni, è necessario consentire ad altre applicazioni (logiche) di interfacciarsi con la logica di base - ciò avviene tramite un insieme definito di API. L'SDK viene utilizzato per creare / creare codice che utilizza le API per interagire con altre applicazioni.

    
risposta data 02.08.2014 - 16:01
fonte

Leggi altre domande sui tag