Tout d'abord je tiens à préciser, comme je l'avais fait pour mon article sur les différences entre une bibliothèque (library) et un framework, que les termes d'API et de SDK peuvent parfois être utilisés de manière marketing, sans corrélation avec leur définition, ce qui rajoute à la confusion.

Ensuite il faut se rappeler que ces deux mots décrivent des solutions logicielles utilisées pour faciliter le développement d'application, ce sont donc des concepts, à la base, assez similaires.

Définitions

API

API signifie Application Programming Interface

Une API représente un accès à du code externe dont l'utilisation se fait à travers une interface simplifiée et permettant d'étendre les fonctionnalités d'un logiciel.

Le mot clé ici est "externe" car l'API est indépendante du logiciel dans lequel elle est utilisée, elle est mise à disposition par l'environnement (au sens large) dans lequel tourne le logiciel : le navigateur (pour les Web APIs), le réseau Internet (pour les APIs REST/SOAP/GRAPHQL et autres), le système d'exploitation (pour les APIs de gestion de fichiers), etc...

Lorsque l'on utilise une API, on ne dit qu'on l'intègre, mais qu'on la "consomme", ce qui met bien en avant le côté indépendant de cette dernière.

SDK

SDK signifie Software Development Kit

Un SDK, comme son nom l'indique, n'est pas seulement un morceau logiciel, mais c'est un kit complet.

Il peut faciliter l'accès à une ou plusieurs APIs, fournir un ensemble de bibliothèques, de la documentation, des exemples, etc... On vient intégrer un SDK à notre logiciel car il est développé spécifiquement pour la plateforme sur laquelle on développe.

Il existe souvent plusieurs SDK disponibles pour une seule API selon la plateforme ciblée. Prenez l'exemple du service Firebase de Google et de son API Firestore pour stocker facilement des données depuis une application : il existe trois SDK différents, un pour le web, un pour Android et un pour iOS, écrits dans 3 langages différents.

Différences majeures

Comme vous l'aurez compris, une API et un SDK présentent deux différences majeures :

  • Une API est externe à l'application et peut-être développée dans n'importe quel langage, tandis que le SDK doit être intégré à l'application et est spécifiquement développé pour la plateforme que l'on utilise.
  • Une API est une abstraction de code complexe et expose des fonctionnalités souvent ciblé sur un domaine en particulier, tandis qu'un SDK est une abstraction de nombreux outils et ressources (dont parfois plusieurs APIs).
On peut prendre l'exemple d'une API de gestion du son, dont l'utilisation est abstraite dans un SDK pour le développement de jeux vidéos et rassemblant des APIs pour le son, le graphique, la physique, etc...

Pour mieux comprendre

Comme une image vaut mieux que mille mots, imaginez votre smartphone comme étant une API : il offre des fonctions utiles et spécifiques comme passer des appels, envoyer des messages, prendre des photos, naviguer sur internet, etc...

Vous n'avez pas besoin de savoir comment il fonctionne à l'intérieur car le constructeur a créé une interface simple et intuitive (abstraction) pour interagir avec, aucune connaissance en bandes GSM pour pouvoir passer un appel, un clic sur une icône suffit.

Votre téléphone est donc une API.

Mais vous n'avez pas simplement acheté un téléphone, vous avez acheté tout un kit ! Ce kit contenait donc l'API (le smartphone), mais aussi un manuel utilisateur (la documentation), un chargeur conforme, des écouteurs (pour faciliter l'utilisation de la partie audio), une coque et une vitre de protection (pour sécuriser votre usage et ne pas faire n'importe quoi), etc...

La boite entière de votre smartphone et tout ce qu'elle contient fait donc office de SDK pour le téléphone. Bien sûr il est possible d'utiliser votre smartphone sans tout ça, mais l'utilisation est plus pratique, plus facile et plus sécurisée avec tous les outils prévus dans le kit !

J'espère que cet article vous aura été utile, et à bientôt sur le blog !

À propos de l'auteur

Hello, je suis Nicolas Brondin-Bernard, ingénieur web indépendant depuis 2015 passionné par le partage d'expériences et de connaissances.

Aujourd'hui je suis aussi coach pour développeurs web juniors, tu peux me contacter sur nicolas@brondin.com, sur mon site ou devenir membre de ma newsletter pour ne jamais louper le meilleur article de la semaine et être tenu au courant de mes projets !


Photo par Luca Laurence sur Unsplash