API e SDK são termos que ouvimos sempre no meio de programação e TI. Muitos acabam entendendo o conceito, mas não sabem exatamente qual a diferença entre um e outro. Neste artigo vou explicar qual a diferença entre API e SDK.
Uma API (Application Programming Interface), é uma interface de comunicação para algum tipo de serviço. Enquanto que uma SDK (Software Development Kit), é um kit de ferramentas que podem conter APIs para uma demanda específica.
Apesar de SDKs poderem conter APIs, nem todas as APIs fazem parte de um SDK.
Ao analisarmos rapidamente ambos os termos, parece que eles fazem praticamente a mesma coisa, mas explicaremos abaixo em mais detalhes qual a função de cada um.
API vs SDK para leigos em tecnologia
Se você está procurando uma explicação não técnica para a diferença entre API e SDK, então vamos usar uma analogia, imagine que precisamos construir um carro.
Para que um carro funcione, precisamos de uma série de componentes, motor, suspensão, rodas, volante, transmissão, etc. Esse "kit" de componentes seria o SDK, enquanto que a API seria apenas a transmissão do motor para as rodas, por exemplo.
A API apenas representa a comunicação entre uma aplicação e outra, ou um componente e outro, enquanto que o SDK é uma série de componentes pré estabelecidos que podem ser montados ou customizados para se construir um produto de software.
Apesar de essa ser uma analogia pouco prática, ela ajuda a entender o conceito das duas coisas e a diferença entre API e SDK.
O que é uma API?
API é uma sigla para Application Programming Interface, que em Português pode ser entendido como Interface de Programação de Aplicações.
API, portanto, é uma interface de comunicação. Basicamente, APIs são usadas para que aplicações se comuniquem entre si. Uma aplicação pode fornecer uma API para que outras aplicações possam se comunicar.
Por exemplo, o Google Maps possui uma API que permite que outros sites ou aplicativos utilizem os recursos presentes no serviço do Google Maps. Para isso, os apps ou sites que implementam a API do Google Maps, precisam especificar corretamente as estruturas de dados, protocolos e rotinas exigidas pelo Google Maps através de sua API.
A função de uma API então é simplesmente estabelecer as "regras" de comunicação entre uma aplicação e outra. Quem vai decidir essas regras é a aplicação que providencia a API, no caso do nosso exemplo, o Google Maps.
Existem APIs que são dependentes de linguagem como por exemplo a API do Java, e existem APIs que podem ser usadas com múltiplas linguagens de programação diferentes, bastando seguir as mesmas estruturas de dados e rotinas pré estabelecidas pelo provedor da API.
Exemplos de APIs:
O que é um SDK?
SDK é uma sigla para Software Development Kit, que em Português pode ser entendido como Kit de Desenvolvimento de Software.
SDK, portanto, é uma série de ferramentas para desenvolvimento de software, servindo tanto para o frontend, quanto para o backend. SDKs podem conter uma ou múltiplas APIs, bibliotecas, exemplos de código, documentações, etc.
Um bom exemplo de SDK é o iOS SDK, que é usado para criar aplicativos para iPhone e iPad. Ele contém APIs para o uso de funções nativas dos dispositivos, componentes, bibliotecas, e muitos outros recursos para o desenvolvimento de aplicativos nativos para iOS.
SDKs geralmente são destinados à tipos de software específicos, como no caso do iOS SDK temos também o Android SDK, Facebook JavaScript SDK, etc. Como o próprio nome já diz, um SDK é um kit de desenvolvimento de software, a sua função principal é facilitar a vida de um desenvolvedor, fornecendo o básico para o desenvolvimento de um software específico.
Exemplos de SDKs
Quando usar SDK e quando usar API?
De vez em quando podemos optar por usar apenas a API ou usar um SDK completo de um serviço.
Pode ser que você precise, por exemplo, implementar uma funcionalidade de tradução da Amazon Web Services. Você pode optar tanto por usar a SDK disponibilizada pela AWS SDK, ou entender a documentação da API de tradução da AWS, e implementar apenas a API para o que você precisa.
Geralmente os SDKs vem com muita coisa que não precisamos. Geralmente contendo documentação, códigos de exemplo, etc. que a gente não precisa em nosso código.
Agora que você já sabe que APIs podem estar contidas em SDKs, você pode tomar a melhor decisão se quer se comunicar com a API do translate através de um componente presente no SDK da Amazon, ou simplesmente implementar a API do translate diretamente e não incluir peso que talvez seja desnecessário na sua aplicação.
Em resumo, sempre que precisar se comunicar com algum serviço, você vai precisar usar APIs invariavelmente. Na maioria das vezes a integração da API vai ser disponibilizada como parte de um SDK que geralmente você pode optar ou não por utilizar.