Qual é a diferença entre uma API e um SDK?

160

Eu estava pesquisando várias APIs e SDKs quando percebi que realmente não sabia a diferença entre algo chamado API e algo chamado de SDK .

Ambos são, conceitualmente, uma forma de o seu programa interagir e controlar os recursos fornecidos por outro software, seja esse outro software um serviço da Web, um aplicativo de usuário final, um serviço de SO ou daemon, ou um driver de dispositivo do kernel.

Então, qual é a diferença semântica entre um SDK e uma API?

    
por KeithS 17.08.2011 / 22:43
fonte

12 respostas

160

Acho que ele se encaixa nas linhas de "Todos os SDKs são / contêm APIs, mas nem todas as APIs são SDKs".

Um SDK parece ser um conjunto completo de APIs que permitem executar a maioria das ações necessárias para a criação de aplicativos. Além disso, um SDK pode incluir outras ferramentas para desenvolvimento da plataforma / item para o qual ele é.

Por outro lado, uma API é apenas uma série de métodos relacionados que podem ser bons para uma finalidade específica.

Como exemplo, o JDK (Java Development Kit) contém a API, assim como os compiladores, tempos de execução e outras ferramentas diversas. A API Java é simplesmente todas as bibliotecas que compõem a linguagem principal com a qual você pode trabalhar.

    
por 17.08.2011 / 22:52
fonte
79
  • API = Interface de programação de aplicativos
  • SDK = Kit de desenvolvimento de software

Portanto, a diferença real é que uma API não é mais ou menos que uma interface para "algum serviço", enquanto um SDK é um conjunto de ferramentas / componentes / classes para uma finalidade específica. Na verdade, um SDK apresenta uma API para interface. Mas você pode usar uma API sem ter os componentes subjacentes, por exemplo, quando a API é fornecida por meio de um serviço da web.

Exemplos de APIs:

Exemplos de SDKs:

por 17.08.2011 / 22:56
fonte
23

API → interface documentada (em um determinado ponto no tempo e para um determinado público. A documentação pode estar incompleta e / ou indisponível para o público em geral e isso pode ser feito de propósito, mas isso não diminui o para ser documentado para terceiros para usá-lo.)

SDK → documentação de interface (exemplos e ferramentas)

    
por 18.08.2011 / 03:19
fonte
17

"SDK" é coletivo em um sentido maior do que "API".

Você normalmente encontra apenas um SDK para cobrir uma plataforma inteira. Há um SDK do MacOS X e um SDK do iOS, por exemplo, e cada um deles contém as APIs para muitas áreas diferentes de funcionalidade.

A "API" foi originalmente usada como um termo coletivo, e ainda é usada dessa maneira (MAPI, WSAPI etc.), mas geralmente é limitada a alguma tecnologia específica. O escopo implicado pelo "API" parece ter diminuído ao longo dos anos; as pessoas costumavam falar sobre a "API do Mac Toolbox" ou a "API do Windows", ambas obviamente contendo um lote de funcionalidade. Hoje em dia, não é incomum ouvir "API" usado para significar uma única função do sistema; Pode-se dizer que uma nova versão de um sistema operacional contém centenas de novas APIs, e o que significam centenas de novas chamadas de sistema.

Nenhum termo é muito preciso sem algum contexto.

    
por 17.08.2011 / 23:35
fonte
11

O que é API?

API é uma interface que permite que programas de software interajam entre si. Ele define um conjunto de regras que devem ser seguidas pelos programas para se comunicarem entre si. As APIs geralmente especificam como as rotinas, estruturas de dados, etc. devem ser definidas para que dois aplicativos se comuniquem. APIs diferem na funcionalidade fornecida por eles. Existem APIs gerais que fornecem funcionalidades de biblioteca de uma linguagem de programação, como a API Java. Existem também APIs que fornecem funcionalidades específicas, como a API do Google Maps. Há também APIs dependentes do idioma, que podem ser usadas apenas por uma linguagem de programação específica. Além disso, há APIs independentes de idioma que podem ser usadas com várias linguagens de programação. As APIs precisam ser implementadas com muito cuidado, expondo apenas a funcionalidade ou os dados necessários para o exterior, mantendo as outras partes do aplicativo inacessíveis. O uso de APIs se tornou muito popular na internet. Tornou-se muito comum permitir algumas das funcionalidades e dados através de uma API para o exterior na Web. Essa funcionalidade pode ser combinada para oferecer uma funcionalidade aprimorada aos usuários.

O que é o SDK?

O SDK é um conjunto de ferramentas que podem ser usadas para desenvolver aplicativos de software destinados a uma plataforma específica. Os SDKs incluem ferramentas, bibliotecas, documentação e código de exemplo que ajudariam um programador a desenvolver um aplicativo. A maioria dos SDKs pode ser baixada da Internet e muitos dos SDKs são fornecidos gratuitamente para incentivar os programadores a usar a linguagem de programação do SDK. Alguns SDKs amplamente usados são o Java SDK (JDK), que inclui todas as bibliotecas, os utilitários de depuração, etc., o que tornaria os programas de gravação muito mais fáceis em Java. Os SDKs facilitam a vida de um desenvolvedor de software, pois não há necessidade de procurar componentes / ferramentas compatíveis entre si e todos eles estão integrados em um único pacote fácil de instalar.

Qual é a diferença entre API e SDK?

A API é uma interface que permite que programas de software interajam entre si, enquanto um SDK é um conjunto de ferramentas que podem ser usadas para desenvolver aplicativos de software destinados a uma plataforma específica. A versão mais simples de um SDK pode ser uma API que contenha alguns arquivos necessários para interagir com uma linguagem de programação específica. Portanto, uma API pode ser vista como um SDK simples sem todo o suporte de depuração, etc.

    
por 18.08.2011 / 07:38
fonte
7

Um SDK não pode ser nada além de uma API (arquivos para ajudar na interface com outro aplicativo), mas geralmente inclui outro código para ajudar na depuração e em outras partes do IDE.

Estou sem siglas.

    
por 17.08.2011 / 22:52
fonte
5

Tudo mencionado antes é verdade, mas sobre SDK eu gostaria de acrescentar que um kit de desenvolvimento de software é (ou deveria ser) um pacote realmente completo com (quase) todas as ferramentas necessárias para o processo de desenvolvimento, enquanto API é "apenas "uma interface para interagir com.

    
por 17.08.2011 / 23:08
fonte
1

Meus dois centavos: acredito que o termo API seja usado incorretamente.

Uma API é uma interface de programação de aplicativos.

Embora seja um nome estranho, significa que é uma interface . Portanto, um aplicativo pode ter uma API para permitir que outros aplicativos se comuniquem com ela. E um software (por exemplo, uma classe em um sistema OO) pode oferecer uma API para permitir que outros módulos do sistema se comuniquem com ele.

No entanto, muitas vezes o termo API é usado como sinônimo de "biblioteca". Eu não acho que seja um uso correto da palavra. Parte da biblioteca é uma API para permitir que o código a use, mas a biblioteca não é uma API.

E um SDK é um tipo de biblioteca, então é aí que a confusão pode estar.

    
por 02.08.2014 / 22:59
fonte
0

Muitas das outras respostas explicam que um SDK é ferramental , mas nenhum deles aparece diretamente e diz que uma API é uma especificação .

A API para o X componente é toda a informação que você precisa para escrever algum outro componente que irá interagir com o X. Um SDK para o componente X pode conter rotinas da biblioteca que facilitam para você para escrever esse componente, mas as bibliotecas não são a API: elas são meramente uma encorporação da API.

    
por 29.08.2016 / 18:32
fonte
-3

Eu gostaria de comparar isso.

Se você é um desenvolvedor usando o Microsoft Tools:

API = Microsoft.Net Framework Vs SDK = Visual Studio

Se você é um desenvolvedor usando Java:

API = Java RunTime Vs SDK = Any tool that would provide the Development Kit (JDK)

Eu acho que um SDK teria necessariamente que depender de uma API correspondente - não há SDK sem uma API.

    
por 18.08.2011 / 18:51
fonte
-3

Aqui está uma analogia simples ... APIs são como palavras que você pode usar, e SDKs são como frases que foram colocadas juntas para você.

    
por 08.04.2013 / 16:48
fonte
-4

À medida que os aplicativos são desenvolvidos e aprimorados pela interface com outros aplicativos, é necessário para permitir que outros aplicativos (lógica) façam interface com a lógica do núcleo - isso é feito por meio de um conjunto definido de APIs. O SDK é usado para criar / criar código que usa APIs para interagir com outros aplicativos.

    
por 02.08.2014 / 16:01
fonte