198 votes

Différence entre une API et un SDK

J'essaie d'expliquer à un non-développeur la différence entre une API et un SDK. Je dois expliquer pourquoi un fournisseur commercial de logiciels d'empreintes digitales ne fournira probablement pas de SDK, bien qu'il puisse certainement en avoir utilisé un.

Les fournisseurs de dispositifs et de logiciels peuvent et doivent exposer une API bien définie. Cette API permet à d'autres programmes logiciels d'interagir (d'être écrits pour) avec les composants logiciels ou les dispositifs matériels du fournisseur.

Si quelqu'un a d'autres idées pour expliquer cela clairement, j'apprécierais beaucoup les suggestions. Je tiens à souligner que Le but est d'expliquer les concepts à un non-programmeur qui ne connaît pas le jargon des développeurs. .

Plus précisément, dans le contexte d'un capteur d'empreintes digitales par rapport à un logiciel d'inscription/vérification, voici comment j'ai tenté de l'expliquer :

Si je suis un fabricant de dispositifs/capteurs d'empreintes digitales et que je ne suis pas dans pas dans l'écriture de logiciels, les moyens de mieux commercialiser mon produit sont les suivantes :

  1. S'assurer que mes pilotes de périphériques sont installables sur une grande variété de systèmes d'exploitation
  2. Définir et fournir une API permettant aux développeurs de logiciels d'écrire des programmes (par exemple, pour l'inscription, la vérification) pour "parler" ou utiliser mon dispositif
  3. Développer et fournir un SDK (une étape au-delà d'une API) pour faciliter et accélérer l'écriture par les développeurs de logiciels de programmes qui fonctionnent avec mon appareil. Les SDK peuvent fournir des bibliothèques de code d'aide, des applications de référence, de la documentation, etc. des applications de référence, de la documentation, etc.

232voto

Jason S Points 58434

C'est du gâteau :

  • une API est une interface . C'est comme les spécifications du système téléphonique ou du câblage électrique de votre maison. Tout* peut l'utiliser, à condition de savoir comment s'interfacer. Vous pouvez même acheter des logiciels prêts à l'emploi pour utiliser une API particulière, tout comme vous pouvez acheter des équipements téléphoniques ou des appareils prêts à l'emploi qui se branchent sur le câblage électrique de votre maison.
  • un SDK est outils de mise en œuvre . C'est comme un kit qui vous permet** de construire quelque chose de personnalisé à brancher sur le système téléphonique ou le câblage électrique.

*Tout peut utiliser une API. Certaines API comportent des dispositions de sécurité exigeant des clés de licence, une authentification, etc. qui peuvent interdire l'utilisation complète de l'API dans certains cas, mais c'est uniquement parce que certaines étapes d'authentification/autorisation échouent. Tout logiciel qui présente les bonnes informations d'identification (si nécessaire) peut utiliser l'API.

**Techniquement, si une API est bien documentée, vous n'avez pas besoin d'un SDK pour créer votre propre logiciel afin d'utiliser l'API. Mais le fait de disposer d'un SDK facilite généralement le processus.

2 votes

J'ai d'autres idées pour expliquer cela : l'exemple de l'iPhone (code propriétaire mais API bien définie), l'exemple de la prise téléphonique ou du port USB pour expliquer ce qu'est une interface logicielle avec une analogie matérielle plus facile à comprendre visuellement.

18 votes

Pour poursuivre cette bonne explication, une API pourrait être par exemple une API http/REST, tandis que le SDK pourrait être une bibliothèque au-dessus de HttpClient pour rendre plus rapide et plus facile l'interaction avec les services web REST.

4 votes

Plus simplement, une API est une interface. Alors qu'un SDK est une couche d'abstraction sur l'interface.

62voto

Abdul Rehman Points 335

API est comme les blocs de construction d'un jeu d'énigmes avec lequel un enfant joue pour assembler des blocs de différentes formes et construire quelque chose auquel il peut penser.

SDK En revanche, un véritable atelier où tous les outils de développement sont disponibles, plutôt que des blocs de construction préformés. Dans un atelier, vous disposez des outils réels et vous n'êtes pas limité aux blocs. Vous pouvez donc fabriquer vos propres blocs ou créer quelque chose sans aucun bloc au départ.

codage sans SDK ou API c'est comme faire tout à partir de zéro sans atelier - vous devez même fabriquer vos propres outils

0 votes

Vous dites que le SDK n'a pas de blocs de construction préformés mais le SDK de JAVA est livré avec des structures de données telles que ArrayList ou HashMap... ?

1 votes

Oui, vous pouvez le considérer comme un bloc de construction mais d'un autre côté, Java le fournit comme un outil et non comme un bloc de construction.

1 votes

Je suis tombé sur cette question alors que j'essayais de lire et de comprendre la documentation de facebook : développeurs.facebook.com/docs/javascript Une chose qui me trouble est que facebook l'appelle un SDK javascript, qui à mon avis est plus comme une API. Parce qu'il ne fournit pas d'outils tangibles mais seulement une bibliothèque que les développeurs peuvent utiliser, ne devrait-on pas l'appeler API au lieu de SDK ?

27voto

Jack Widman Points 146

Supposons que l'entreprise C propose le produit P et que ce dernier implique des logiciels d'une manière ou d'une autre. C peut alors proposer aux développeurs de logiciels une bibliothèque/un ensemble de bibliothèques qui pilotent les systèmes logiciels de P.

Cette bibliothèque/ces bibliothèques sont un SDK . Il fait partie des systèmes de P. C'est un kit que les développeurs de logiciels peuvent utiliser pour modifier, configurer, corriger, améliorer, etc. le logiciel de P.

Si C veut offrir la fonctionnalité de P à d'autres entreprises/systèmes, il le fait avec un contrat de type API .

Il s'agit d'une interface avec P. Un moyen pour les systèmes externes d'interagir avec P.

Si vous pensez en termes de mise en œuvre, ils vous sembleront assez similaires. Surtout maintenant qu'Internet est devenu comme un grand système d'exploitation distribué.

Cependant, ils sont en fait très distincts dans leur finalité.

Vous construisez quelque chose avec un SDK et vous utilisez ou consommez quelque chose avec une API.

22 votes

Tu devrais juste éditer ta réponse jusqu'à la dernière ligne et sauter tout le bla-bla.

0 votes

Si C propose un ensemble de bibliothèques qui pilotent le logiciel de P, ces bibliothèques constituent les API, et non un SDK (sauf s'il s'agit d'un SDK absolument minimal qui n'est rien d'autre que l'API). Le SDK comprendrait ces API plus tous les éléments dont les développeurs ont besoin en dehors d'une API brute, d'où le terme "kit". Vous avez donc raison au sujet de la construction de quelque chose par rapport à l'utilisation/consommation (+/contrôle/interaction), mais la distinction est autrement confuse.

9voto

jlew Points 5666

Je ne suis pas sûr qu'il y ait une définition officielle de ces deux termes. Je comprends qu'une API est un ensemble de bibliothèques programmables documentées et de sources de soutien telles que des en-têtes ou des fichiers IDL. Les SDK contiennent généralement des API mais ajoutent souvent des compilateurs, des outils et des échantillons au mélange.

1 votes

Les API techniques doivent être spécifiées mais ne doivent pas nécessairement être documentées publiquement, elles peuvent être secrètes.

4voto

sergio Points 116

API = Dictionnaire des mots disponibles et de leurs significations (et de la grammaire nécessaire pour les combiner)

SDK = Un système de traitement de texte pour les bébés de 2 ans qui écrit directement à partir d'idées

Bien que vous puissiez aller à l'école et devenir un maître dans votre langue après quelques années, l'utilisation du SDK vous aidera à écrire des phrases complètes et significatives en un rien de temps (en pardonnant le fait que, dans cet exemple, en tant que bébé, vous n'avez même pas eu l'occasion d'apprendre une autre langue pour au moins apprendre à utiliser le SDK).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X