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


174

Je parcourais diverses API et kits de développement logiciel (SDK) lorsque je me suis rendu compte que je ne pouvais pas vraiment faire la différence entre une API et un kit SDK .

Conceptuellement, les deux sont un moyen pour votre programme d’interfacer et de contrôler les ressources fournies par un autre logiciel, qu’il s’agisse d’un service Web, d’une application pour utilisateur final, d’un service OS ou d’un démon, ou d’un noyau. pilote de périphérique.

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


3
Le SDK est un kit de développement, généralement une bibliothèque côté client facilitant l’utilisation d’une API. Une API est simplement la définition de la bibliothèque / du service et / ou de la documentation.
dietbuddha

Réponses:


175

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

Un SDK semble être un ensemble complet d’API qui vous permet d’effectuer la plupart des opérations nécessaires à la création d’applications. De plus, un SDK peut inclure d'autres outils de développement pour la plate-forme / l'article pour lequel il est destiné.

Une API, par contre, n’est qu’une série de méthodes associées qui peuvent être utiles dans un but spécifique.

Par exemple, le JDK (Java Development Kit) contient l’API, ainsi que les compilateurs, les environnements d’exécution et d’autres outils divers. L'API Java est simplement toutes les bibliothèques qui constituent le langage principal avec lequel vous pouvez travailler directement.


7
J'aimerais ajouter qu'un SDK n'est qu'un exemple de la manière dont vous interagissez avec ladite API.
Le Muffin Man

10
Je pense que vous avez peut-être inversé ce Nick. Un SDK est un sur-ensemble d'éléments contenant notamment des API permettant d'interagir avec ses bibliothèques (pas la bibliothèque elle-même, mais l'interface avec la bibliothèque qu'un codeur utilisant cette bibliothèque utiliserait).
Danny Staple

7
Un SDK peut inclure une API, des outils, de la documentation, des exemples et tout ce dont vous avez besoin.
gregmac

4
@gregmac Est-ce que je n'ai pas communiqué ce fait?

Dans la pratique, serait-il juste de dire qu'une API ne contiendra que des définitions d'interface que les classes devraient implémenter, alors qu'un SDK contiendrait des classes de base avec la plupart des fonctionnalités standard déjà programmées?
Ben

85
  • 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 avec "un service", alors qu'un SDK est un ensemble d'outils / de composants / de classes destiné à un usage spécifique. Un SDK vous présente en fait une API pour l'interface. 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:


3
+10 pour "vous pouvez utiliser une API sans avoir les composants sous-jacents". Btw, le deuxième lien est en panne .......
Pacerier

24

API → interface documentée (à un moment donné 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 les tiers à l'utiliser.)

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


4
Enfin quelqu'un qui parle de documentation!
gregmac

4
Toutes les API ne sont pas documentées - il suffit parfois d'inspecter / de refléter l'interface.
JBRWilkinson

Les "exemples" ne font-ils pas partie de l'API?
Pacerier

1
@ Pacerier ... absolument pas. Les exemples peuvent faire partie d'une documentation d' API , mais l'interface peut être "non documentée" (c'est-à-dire que la documentation la concernant est gardée secrète pour le monde extérieur: think ... idk, Microsoft ) tout en restant une API. C'est juste l'interface. Fonctions, classes, appels, peut-être un protocole, peut-être un format de fichier, mais rien de plus.
ZJR

17

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

En général, vous ne trouvez qu'un seul SDK pour couvrir toute une plate-forme. Il existe par exemple un SDK MacOS X et un SDK iOS, chacun contenant les API pour de nombreux domaines de fonctionnalités.

Le terme "API" était également à l'origine un 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 suggérée par "l'API" semble avoir diminué au fil des ans; les gens parlaient autrefois de "l'API Mac Toolbox" ou de "l'API Windows", qui contenaient évidemment beaucoup de fonctionnalités. De nos jours, il n’est pas rare d’entendre que le terme «API» désigne une fonction système unique; On peut dire qu'une nouvelle version d'un système d'exploitation contient des centaines de nouvelles API, ce qui signifie des centaines de nouveaux appels système.

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


11

Qu'est-ce qu'une API?

L'API est une interface qui permet aux 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 les uns avec les autres. Les API spécifient généralement comment les routines, les structures de données, etc. doivent être définies pour que deux applications puissent communiquer. Les API diffèrent par la fonctionnalité fournie par elles. Il existe des API générales qui fournissent les fonctionnalités de bibliothèque d'un langage de programmation tel 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 peuvent être utilisées que par un langage de programmation spécifique. En outre, il existe des API indépendantes du langage pouvant être utilisées avec plusieurs langages de programmation. Les API doivent être implémentées avec le plus grand soin en exposant uniquement la fonctionnalité ou les données requises à l'extérieur, tout en maintenant les autres parties de l'application inaccessibles. L'utilisation des API est devenue très populaire sur Internet. Il est devenu très courant d'autoriser certaines fonctionnalités et 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 aux utilisateurs.

Qu'est-ce que le SDK?

Le SDK est un ensemble d’outils permettant de développer des applications logicielles ciblant une plate-forme spécifique. Les kits de développement incluent 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 à partir d'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 le SDK Java (JDK) qui inclut toutes les bibliothèques, les utilitaires de débogage, etc., ce qui faciliterait grandement l’écriture de programmes en Java. Les SDK facilitent la vie des développeurs de logiciels, car il n’est pas nécessaire de rechercher des composants / outils compatibles entre eux et qui sont tous intégrés dans un seul package facile à installer.

Quelle est la différence entre API et 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 pouvant ê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 contenant certains fichiers nécessaires pour interagir avec un langage de programmation spécifique. Ainsi, une API peut être vue comme un simple SDK sans tout le support de débogage, etc.


7

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

Je suis tout sur les acronymes.


8
Vite, procurez-vous encore plus de TLA!
Mason Wheeler

4
Je suis sur le point d'être prêt pour EIEIO.
JeffO

5

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


1

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 une interface . Une application peut donc avoir une API pour permettre à d’autres applications de communiquer avec elle. De plus, un logiciel (par exemple une classe dans un système OO) peut offrir une API permettant aux autres modules du système de communiquer avec elle.

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

Et un SDK est une sorte de bibliothèque, alors c’est là que la confusion peut être.


1
Je suis d'accord. Je m'arrêterais probablement avant de dire que c'est "incorrect". Ce navire a navigué et l'utilisation de "API" a changé. Mais je suis d'accord que "bibliothèque" est souvent un meilleur mot pour ce que les gens appellent "API"
Harry Wood

0

Beaucoup d'autres réponses expliquent qu'un SDK est un outil , mais aucune d'entre elles ne sort directement et ne dit qu'une API est une spécification .

L’API pour compoonent X contient toutes les informations dont vous avez besoin pour écrire un autre composant susceptible d’interagir avec X. Un SDK pour le composant X peut contenir des routines de bibliothèque facilitant l’écriture de ce composant, mais ces bibliothèques ne sont pas compatibles. l'API: Ils sont simplement une incarnation de l'API.


S'agit-il simplement de votre opinion ou pouvez-vous l'assurer d'une manière ou d'une autre?
moucher

"l'API décrit et prescrit le comportement attendu alors que la bibliothèque est une implémentation réelle de cet ensemble de règles" fr.wikipedia.org/wiki/…
Solomon Slow

Selon mes lectures, ceci n’est pas lié au point que vous essayez de dire: "une API est une spécification"
gnat

-3

Je voudrais comparer cette façon.

Si vous êtes un développeur utilisant Microsoft Tools:

API = Kit de développement logiciel Microsoft.Net Framework vs = Visual Studio

Si vous êtes un développeur utilisant Java:

API = SDK Java RunTime Vs = N'importe quel outil fournissant le kit de développement (JDK)

J'imagine qu'un SDK devrait nécessairement s'appuyer sur une API correspondante - il n'y a pas de SDK sans API.


Je pense que ce dont vous parlez en termes de Visual Studio est un IDE, qui peut donner accès à un ou plusieurs SDK et / ou API.
KeithS

1
Visual Studio n'est pas un SDK, mais certaines éditions incluent le SDK Windows ou .NET, car vous êtes susceptible de développer pour eux à l'aide de VS.
JBRWilkinson

-3

Voici une analogie simple ... Les API sont comme des mots que vous pouvez utiliser et les kits de développement logiciel (SDK) sont comme des phrases qui ont été rassemblées pour vous.


-4

Au fur et à mesure que les applications sont développées et améliorées en les mettant en interface avec d'autres applications, il est nécessaire d'autoriser d'autres applications (logique) à s'interfacer avec la logique principale - ceci s'effectue via un ensemble défini d'API. Le SDK est utilisé pour créer / élaborer un code qui utilise des API pour interagir avec d'autres applications.


1
cela ne semble rien offrir de substantiel sur les points soulevés et expliqués dans les 11 réponses précédentes
gnat
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.