Eu estava examinando várias APIs e SDKs, quando percebi que não sabia realmente a diferença entre algo chamado API e algo chamado SDK .
Ambos são, conceitualmente, uma maneira de o seu programa interagir e controlar os recursos fornecidos por outro software, seja ele um serviço da Web, um aplicativo de usuário final, um serviço ou daemon do SO ou um kernel driver do dispositivo.
Então, qual é a diferença semântica entre um SDK e uma API?
terminology
api
semantics
sdk
KeithS
fonte
fonte
Respostas:
Eu acho que é mais ou menos como "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 quase todas as ações necessárias para criar aplicativos. Além disso, um SDK pode incluir outras ferramentas para o desenvolvimento da plataforma / item a que se destina.
Uma API, por outro lado, é 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, bem 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 imediatamente.
fonte
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. De fato, um SDK apresenta uma API para a 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:
fonte
API → interface documentada (em um determinado momento 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 intencional, mas isso não diminui o fato de que deveria ser documentado para terceiros usá-lo.)
SDK → documentação da interface (+ exemplos e ferramentas)
fonte
"SDK" é coletivo em um sentido maior que "API".
Você normalmente encontra apenas um SDK para cobrir uma plataforma inteira. Há um MacOS X SDK e um iOS SDK, por exemplo, e cada um deles contém as APIs para diversas áreas de funcionalidade.
"API" também foi originalmente usado como termo coletivo, e ainda é usado dessa maneira (MAPI, WSAPI etc.), mas geralmente é limitado a alguma tecnologia específica. O escopo implícito na "API" parece ter diminuído ao longo dos anos; as pessoas costumavam falar sobre a "API Mac Toolbox" ou a "API do Windows", ambas obviamente contendo muitas funcionalidades. Atualmente, não é incomum ouvir "API" usada 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 se quer dizer são centenas de novas chamadas de sistema.
Nenhum dos termos é muito preciso sem algum contexto.
fonte
O que é API?
API é uma interface que permite que programas de software interajam. Ele define um conjunto de regras que devem ser seguidas pelos programas para se comunicarem. 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. Também existem APIs que fornecem funcionalidades específicas, como a API do Google Maps. Também existem APIs dependentes da linguagem, que só podem ser usadas por uma linguagem de programação específica. Além disso, existem 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 funcionalidades e dados por meio 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 direcionados 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 deles são fornecidos gratuitamente para incentivar os programadores a usar a linguagem de programação do SDK. Alguns SDKs amplamente utilizados são o Java SDK (JDK), que inclui todas as bibliotecas, 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 integrados a um único pacote fácil de instalar.
Qual é a diferença entre API e SDK?
API é uma interface que permite que programas de software interajam, enquanto um SDK é um conjunto de ferramentas que podem ser usadas para desenvolver aplicativos de software direcionados a uma plataforma específica. A versão mais simples de um SDK pode ser uma API que contém 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 à depuração etc.
fonte
Um SDK pode ser nada além de uma API (arquivos para ajudar a interface com outro aplicativo), mas geralmente inclui outro código para ajudar na depuração e em outras partes do seu IDE.
Estou sem acrônimos.
fonte
Tudo mencionado anteriormente é verdade, mas sobre o 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 a API é "apenas" uma interface para interagir.
fonte
Meus dois centavos: acredito que o termo API é frequentemente usado incorretamente.
Uma API é uma interface de programação de aplicativos.
Embora meio que seja um nome estranho, significa que é uma interface . Portanto, um aplicativo pode ter uma API para permitir que outros aplicativos se comuniquem com ele. E um software (por exemplo, uma classe em um sistema OO) pode oferecer uma API para permitir que outros módulos no sistema se comuniquem com ele.
No entanto, muitas vezes o termo API é usado como sinônimo de "biblioteca". Eu não acho que esse 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.
fonte
Muitas das outras respostas explicam que um SDK é ferramenta , mas nenhuma delas sai diretamente e diz que uma API é uma especificação .
A API do X complementar é todas as informações necessárias para gravar outro componente que irá interagir com o X. Um SDK para o componente X pode conter rotinas de biblioteca que facilitam a gravação desse componente, mas as bibliotecas não são a API: eles são apenas uma modalidade da API.
fonte
Eu gostaria de comparar dessa maneira.
Se você é um desenvolvedor usando o Microsoft Tools:
Se você é um desenvolvedor usando Java:
Eu acho que um SDK precisaria necessariamente confiar em uma API correspondente - não há SDK sem uma API.
fonte
Aqui está uma analogia simples ... APIs são como palavras que você pode usar, e SDKs são como frases que foram criadas para você.
fonte
À medida que os aplicativos são desenvolvidos e aprimorados através da interface com outros aplicativos, é necessário permitir que outros aplicativos (lógicos) façam interface com a lógica principal - 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.
fonte