web-dev-qa-db-fra.com

Quelle est la différence entre une API et un SDK?

Je regardais à travers diverses API et SDK, quand j'ai réalisé que je ne pouvais pas vraiment faire la différence entre quelque chose appelé API et quelque chose appelé an SDK .

Conceptuellement, les deux sont un moyen pour votre programme d'interagir avec et de contrôler les ressources fournies par un autre logiciel, que cet autre logiciel soit un service Web, une application d'utilisateur final, un service ou démon de système d'exploitation ou un noyau. pilote de périphérique.

Alors, quelle est la différence sémantique entre un SDK et une API?

184
KeithS

Je pense que cela tombe plutôt dans le sens de "Tous les SDK sont/contiennent des API mais toutes les API ne sont pas des SDK".

Un SDK semble être un ensemble complet d'API qui vous permettent d'effectuer la plupart des actions dont vous auriez besoin pour créer des applications. De plus, un SDK peut inclure d'autres outils de développement pour la plate-forme/l'élément auquel il est destiné.

Une API, d'autre part, n'est qu'une série de méthodes connexes qui peuvent être bonnes pour un objectif spécifique.

Par exemple, le JDK (Java Development Kit) contient l'API ainsi que les compilateurs, les runtimes et d'autres outils divers. L'API Java est simplement toutes les bibliothèques qui composent le langage de base avec lequel vous pouvez travailler hors de la boîte.

180
user7007
  • API = Interface de programmation d'application
  • SDK = Kit de développement logiciel

La vraie différence est donc qu'une API n'est ni plus ni moins qu'une interface vers "un certain service", tandis qu'un SDK est un ensemble d'outils/composants/classes dans un but spécifique. Un SDK vous présente en fait une API avec laquelle interagir. Mais vous pouvez utiliser une API sans avoir les composants sous-jacents, par exemple lorsque l'API est fournie via un service Web.

Exemples d'API:

Exemples de SDK:

88
back2dos

API → interface documentée (à un certain moment et pour un certain public. La documentation peut être incomplète et/ou inaccessible au grand public et cela peut être intentionnel, mais cela ne diminue en rien le fait qu'elle était censée être documentée pour que des tiers l'utilisent.)

SDK → documentation de l'interface (+ exemples et outils)

24
ZJR

"SDK" est collectif dans un sens plus large que "API".

Vous ne trouvez généralement qu'un seul SDK pour couvrir une plate-forme entière. Il y a un SDK MacOS X et un SDK iOS, par exemple, et chacun contient les API pour de nombreux domaines de fonctionnalités différents.

"API" était à l'origine également utilisé comme terme collectif, et il est encore souvent utilisé de cette façon (MAPI, WSAPI, etc.), mais il est généralement limité à une technologie particulière. La portée impliquée par l '"API" semble avoir diminué au fil des ans; les gens parlaient de l '"API Mac Toolbox" ou de l' "API Windows", qui contenaient tous deux évidemment beaucoup de fonctionnalités. De nos jours, il n'est pas rare d'entendre "API" désigner une seule fonction système; on pourrait dire qu'une nouvelle version d'un système d'exploitation contient des centaines de nouvelles API, et cela signifie des centaines de nouveaux appels système.

Aucun terme n'est très précis sans contexte.

17
Caleb

Qu'est-ce que l'API?

L'API est une interface qui permet aux programmes logiciels d'interagir les uns avec les autres. Il définit un ensemble de règles qui doivent être suivies par les programmes pour communiquer entre eux. Les API spécifient généralement comment les routines, les structures de données, etc. doivent être définies pour que deux applications communiquent. Les API diffèrent par les fonctionnalités qu'elles fournissent. Il existe des API générales qui fournissent des fonctionnalités de bibliothèque d'un langage de programmation telles que l'API Java. Il existe également des API qui fournissent des fonctionnalités spécifiques telles que l'API Google Maps. Il existe également des API dépendantes du langage, qui ne peut être utilisé que par un langage de programmation spécifique. En outre, il existe des API indépendantes du langage qui peuvent être utilisées avec plusieurs langages de programmation. Les API doivent être implémentées très soigneusement en exposant uniquement les fonctionnalités ou les données requises à l'extérieur, tout en conservant les autres parties. de l'application inaccessible. L'utilisation des API est devenue très populaire sur Internet. Il est devenu très courant d'autoriser une partie des fonctionnalités et des données via une API vers l'extérieur sur le Web. Cette fonctionnalité peut être combinée pour offrir une fonctionnalité améliorée à les utilisateurs.

Qu'est-ce que le SDK?

Le SDK est un ensemble d'outils qui peuvent être utilisés pour développer des applications logicielles ciblant une plate-forme spécifique. Les SDK comprennent des outils, des bibliothèques, de la documentation et des exemples de code qui aideraient un programmeur à développer une application. La plupart des SDK peuvent être téléchargés sur Internet et de nombreux SDK sont fournis gratuitement pour encourager les programmeurs à utiliser le langage de programmation du SDK. Certains SDK largement utilisés sont Java SDK (JDK) qui inclut toutes les bibliothèques, les utilitaires de débogage, etc., ce qui faciliterait l'écriture de programmes en Java. Les SDK facilitent la vie d'un développeur de logiciels. , car il n'est pas nécessaire de rechercher des composants/outils compatibles les uns avec les autres et tous sont intégrés dans un seul package facile à installer.

Quelle est la différence entre l'API et le SDK?

L'API est une interface qui permet aux programmes logiciels d'interagir les uns avec les autres, tandis qu'un SDK est un ensemble d'outils qui peuvent être utilisés pour développer des applications logicielles ciblant une plate-forme spécifique. La version la plus simple d'un SDK pourrait être une API qui contient certains fichiers requis pour interagir avec un langage de programmation spécifique. Une API peut donc être considérée comme un simple SDK sans tout le support de débogage, etc.

12
chiranjib

Un SDK ne peut être rien d'autre qu'une API (fichiers pour aider à l'interface avec une autre application), mais comprend généralement un autre code pour aider au débogage et d'autres éléments pour votre IDE.

Je n'ai plus d'acronymes.

7
JeffO

Tout ce qui est mentionné précédemment est vrai, mais à propos du SDK, je voudrais ajouter qu'un kit de développement logiciel est (ou devrait être) un package vraiment complet avec (presque) tous les outils nécessaires pour le processus de développement, tandis que l'API n'est "qu'une" interface pour interagir avec.

5
Scorchio

Beaucoup d'autres réponses expliquent qu'un SDK est outillage, mais aucun d'eux ne sort directement et dit qu'une API est un spécification.

L'API pour le composant X est toutes les informations dont vous avez besoin pour écrire un autre composant qui interagira avec X. Un SDK pour le composant X peut contenir routines de bibliothèque qui vous facilitent l'écriture , mais les bibliothèques ne sont pas l'API: elles sont simplement un mode de réalisation de l'API.

1
Solomon Slow

Mes deux cents: je crois que le terme API est souvent utilisé de manière incorrecte.

Une API est une interface de programmation d'application.

Bien que ce soit un nom maladroit, cela signifie que c'est un interface. Une application peut donc avoir une API pour permettre à d'autres applications de communiquer avec elle. Et un logiciel (par exemple une classe dans un système OO) pourrait offrir une API pour permettre à d'autres modules du système de communiquer avec lui.

Cependant, le terme API est souvent utilisé comme synonyme de "bibliothèque". Je ne pense pas que ce soit une utilisation correcte de la Parole. Une partie de la bibliothèque est une API permettant au code de l'utiliser, mais la bibliothèque ne l'est pas une API.

Et un SDK est une sorte de bibliothèque, c'est donc là que la confusion pourrait être.

1
Aviv Cohn