Estou tentando explicar para um não desenvolvedor a diferença entre uma API e um SDK. Preciso explicar por que um fornecedor comercial de software de impressão digital provavelmente não fornecerá um SDK, embora possa certamente ter usado um.
Tanto os fornecedores de dispositivos quanto os de software podem e devem expor uma API bem definida. Essa API permite que outros programas de software interajam com os componentes de software ou dispositivos de hardware do próprio fornecedor.
Se alguém tiver mais idéias para explicar isso claramente, eu agradeceria muito as sugestões. Quero enfatizar que o objetivo é explicar os conceitos para um não programador que não conhece a linguagem do desenvolvedor .
Especificamente, no contexto de um sensor de impressão digital versus software para fazer inscrição / verificação, eis como eu tentei explicar:
Se eu sou um fabricante de dispositivos / sensores de impressão digital e não faço parte do ramo de software de escrita, as maneiras pelas quais eu poderia comercializar melhor meu produto são:
- Verifique se meus drivers de dispositivo são instaláveis em uma ampla variedade de sistemas operacionais
- Defina e forneça uma API para os desenvolvedores de software escreverem programas (por exemplo, para inscrição, verificação) para "conversar" ou usar meu dispositivo
- Desenvolva e forneça um SDK (um passo além da API) para tornar mais fácil e rápido para os desenvolvedores de software escrever programas que funcionem com o meu dispositivo. Os SDKs podem fornecer bibliotecas de códigos auxiliares, aplicativos de referência, documentação etc.
A API é como os blocos de construção de algum jogo intrigante com o qual uma criança brinca para unir blocos de diferentes formas e criar algo em que possam pensar.
O SDK , por outro lado, é uma oficina adequada, onde todas as ferramentas de desenvolvimento estão disponíveis, em vez de blocos de construção pré-moldados. Em uma oficina, você tem as ferramentas reais e não está limitado a blocos e, portanto, pode criar seus próprios blocos ou criar algo sem blocos para começar.
codificar sem SDK ou API é como criar tudo do zero sem um workshop - você precisa criar suas próprias ferramentas
fonte
not limited to blocks, or can create something without any blocks to begin with
, mais parecido com o SDK oferece composições ainda melhores dos blocos da API para trabalhar. O SDK se baseia em uma API.Suponha que a empresa C ofereça produtos de P e P que envolvam software de alguma forma. Então C pode oferecer uma biblioteca / conjunto de bibliotecas para desenvolvedores de software que controlam os sistemas de software de P.
Essa biblioteca / bibliotecas são um SDK . Faz parte dos sistemas de P. É um kit para desenvolvedores de software usarem para modificar, configurar, corrigir, melhorar, etc, a parte de software de P.
Se C deseja oferecer a funcionalidade de P a outras empresas / sistemas, o faz com uma API .
Esta é uma interface para P. Uma maneira de sistemas externos interagirem com P.
Se você pensa em termos de implementação, eles parecerão bastante semelhantes. Especialmente agora que a internet se tornou um grande sistema operacional distribuído.
De propósito, porém, eles são realmente bastante distintos.
Você cria algo com um SDK e usa ou consome algo com uma API.
fonte
A Application Programming Interface é um conjunto de rotinas / estruturas / classes de dados que especifica uma maneira de interagir com a plataforma / software de destino, como OS X, Android, aplicativo de gerenciamento de projetos, software de virtualização etc.
Enquanto o Software Development Kit é um invólucro de API / s que facilita o trabalho para os desenvolvedores.
Por exemplo, o Android SDK facilita que os desenvolvedores interajam com a plataforma Android como um todo, enquanto a própria plataforma é construída por componentes de software compostos que se comunicam por meio de APIs.
Além disso, às vezes os SDKs são criados para facilitar o desenvolvimento em uma linguagem de programação específica. Por exemplo, o driver da web Selenium (construído em Java) fornece APIs para direcionar qualquer navegador de forma nativa, enquanto a capivara pode ser considerada um SDK que facilita os desenvolvedores do Ruby a usar o driver da web Selenium. No entanto, o driver da web Selenium também é um SDK por si só, pois combina a interação com vários drivers nativos do navegador em um único pacote.
fonte
Não tenho certeza de que exista alguma definição oficial desses dois termos. Entendo que uma API é um conjunto de bibliotecas programáveis documentadas e fonte de suporte, como cabeçalhos ou arquivos IDL. Os SDKs geralmente contêm APIs, mas geralmente adicionam compiladores, ferramentas e amostras ao mix.
fonte
API é especificações sobre como fazer algo, uma interface, como "Os trilhos da ferrovia estão a um metro de distância e a barra de metal tem 1 polegada de largura" Agora que você possui a API, agora pode construir um trem que irá caber nessas ferrovias faixas se você quiser ir a qualquer lugar. API é apenas informações sobre como criar seu código, não faz nada.
SDK é um pacote de ferramentas reais que já se preocupavam com as especificações. "Aqui está um trem, um pouco de carvão e um técnico de manutenção. Use-o para ir de um lugar para outro" Com o SDK, você não se preocupa com detalhes. Um SDK é um código real, pode ser usado sozinho para fazer alguma coisa, mas é claro que o trem não inicia espontaneamente, você ainda precisa de um condutor para controlar o trem.
Os SDKs também têm suas próprias APIs. "Se você quiser alimentar o trem, coloque carvão nele", "Puxe a alavanca azul para mover o trem.", "Se o trem começar a agir de maneira estranha, chame o técnico de manutenção" etc.
fonte
API = Dicionário de palavras disponíveis e seus significados (e a gramática necessária para combiná-las)
SDK = Um sistema de processamento de texto… para bebês de 2 anos… que escreve diretamente a partir de idéias
Embora você PODE ir para a escola e se tornar um mestre em seu idioma depois de alguns anos, o uso do SDK ajudará você a escrever sentenças significativas inteiras em pouco tempo (perdoando o fato de que, neste exemplo, como um bebê, você nem teve um bebê) para aprender qualquer outro idioma, pelo menos para aprender a usar o SDK.)
fonte
Que tal ... É como se você quisesse instalar um sistema de home theater em sua casa. Usar uma API é como obter todos os fios, parafusos, bits e peças. As possibilidades são infinitas (limitadas apenas pelas peças que você recebe), mas às vezes esmagadoras. Um SDK é como adquirir um kit. Você ainda precisa montá-lo, mas é mais como obter peças pré-cortadas e instruções para uma estante da IKEA do que uma caixa de parafusos.
fonte
Você usa um SDK para acessar a funcionalidade de uma biblioteca e uma API para controlá-la.
fonte
API = Interface de programação de aplicativos SDK = Kit de desenvolvimento de software
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.
Exemplos de APIs: API Java, API do Google Maps, API do Flash Player.
Exemplos de SDKs: JDK, GWT, Flex SDK.
fonte