J'essaie d'expliquer à un non-développeur la différence entre une API et un SDK. Je dois expliquer pourquoi un fournisseur de logiciel d'empreintes digitales commercial ne fournira probablement pas de SDK, même s'il en a certainement utilisé un.
Les fournisseurs d'appareils et les éditeurs de logiciels peuvent et doivent exposer une API bien définie. Cette API permet à d'autres programmes logiciels d'interagir (sur lesquels écrire) avec les composants logiciels ou les périphériques matériels du fournisseur.
Si quelqu'un a plus d'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 pour faire l'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 le domaine de l'écriture de logiciels, je pourrais mieux commercialiser mon produit:
- Assurez-vous que mes pilotes de périphérique sont installables sur une grande variété de systèmes d'exploitation
- 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 appareil
- Développez et fournissez un SDK (une étape au-delà d'une API) pour permettre aux développeurs de logiciels d'écrire plus facilement et plus rapidement des programmes qui fonctionnent avec mon appareil. Les SDK peuvent fournir des bibliothèques de codes d'assistance, des applications de référence, de la documentation, etc.
L'API est comme les éléments constitutifs d'un jeu déroutant avec lequel un enfant joue pour joindre des blocs de différentes formes et construire quelque chose auquel il peut penser.
SDK , d'autre part, est 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 avez les outils réels et vous n'êtes pas limité aux blocs, et pouvez donc créer vos propres blocs, ou pouvez créer quelque chose sans aucun bloc pour commencer.
coder sans SDK ou API, c'est comme tout faire à partir de zéro sans atelier - vous devez même créer vos propres outils
la source
not limited to blocks, or can create something without any blocks to begin with
, plus comme le SDK vous donne des compositions encore meilleures des blocs de l'API avec lesquels travailler. Le SDK repose sur une API.Supposons que la société C propose le produit P et que P implique en quelque sorte un logiciel. Ensuite, C peut offrir une bibliothèque / un ensemble de bibliothèques aux développeurs de logiciels qui pilotent les systèmes logiciels de P.
Cette bibliothèque / bibliothèques est un SDK . Il fait partie des systèmes de P. Il s'agit d'un kit à utiliser par les développeurs de logiciels afin de modifier, configurer, réparer, améliorer, etc. le logiciel de P.
Si C veut offrir la fonctionnalité de P à d'autres entreprises / systèmes, il le fait avec une 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é.
Dans le but, cependant, ils sont en fait assez distincts.
Vous créez quelque chose avec un SDK et vous utilisez ou consommez quelque chose avec une API.
la source
L'interface de programmation d'application est un ensemble de routines / structures de données / classes qui spécifie un moyen d'interagir avec la plate-forme / le logiciel cible comme OS X, Android, une application de gestion de projet, un logiciel de virtualisation, etc.
Alors que le kit de développement logiciel est un wrapper autour des API / s qui facilite le travail des développeurs.
Par exemple, Android SDK permet aux développeurs d'interagir avec la plate-forme Android dans son ensemble, tandis que la plate-forme elle-même est construite par des composants logiciels composites communiquant via des API.
En outre, parfois, les SDK sont conçus pour faciliter le développement dans un langage de programmation spécifique. Par exemple, le pilote Web Selenium (intégré en Java) fournit des API pour piloter n'importe quel navigateur de manière native, tandis que capybara peut être considéré comme un SDK qui facilite l'utilisation du pilote Web Selenium aux développeurs Ruby. Cependant, le pilote Web Selenium est également un SDK en lui-même car il combine l'interaction avec divers pilotes de navigateur natifs dans un seul package.
la source
Je ne suis pas sûr qu'il existe 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 support 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 exemples au mélange.
la source
L'API est une spécification sur la façon de faire quelque chose, une interface, telle que "Les voies ferrées sont distantes de quatre pieds et la barre métallique mesure 1 pouce de large" Maintenant que vous disposez de l'API, vous pouvez maintenant construire un train qui s'adaptera à ces voies ferrées pistes si vous voulez aller n'importe où. L'API n'est que des informations sur la façon de créer votre code, elle ne fait rien.
Le SDK est un ensemble d'outils réels qui s'inquiètent déjà des spécifications. "Voici un train, du charbon et un homme de maintenance. Utilisez-le pour aller d'un endroit à l'autre" Avec le SDK, vous ne vous souciez plus des détails. Un SDK est un code réel, il peut être utilisé seul pour faire quelque chose, mais bien sûr, le train ne démarre pas spontanément, vous devez quand même demander à un conducteur de contrôler le train.
Les SDK ont également leurs propres API. "Si vous voulez alimenter le train, mettez du charbon dedans", "Tirez sur le levier bleu pour déplacer le train.", "Si le train commence à agir bizarrement, appelez l'homme de maintenance" etc.
la source
API = Dictionnaire des mots disponibles et leurs significations (et la grammaire requise 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 POUVEZ 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 entières significatives en un rien de temps (pardonner le fait que, dans cet exemple, en tant que bébé, vous n'avez même pas pour apprendre une autre langue pour au moins apprendre à utiliser le SDK.)
la source
Que diriez-vous ... C'est comme si vous vouliez installer un système de cinéma maison dans votre maison. Utiliser une API, c'est comme obtenir tous les fils, vis, embouts et pièces. Les possibilités sont infinies (limitées uniquement par les pièces que vous recevez), mais parfois écrasantes. Un SDK, c'est comme obtenir un kit. Vous devez encore l'assembler, mais c'est plus comme obtenir des pièces prédécoupées et des instructions pour une étagère IKEA qu'une boîte de vis.
la source
Vous utilisez un SDK pour accéder aux fonctionnalités d'une bibliothèque et une API pour la contrôler.
la source
API = SDK d'interface de programmation d'application = Kit de développement logiciel
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. En plus un SDK peut inclure d'autres outils de développement pour la plate-forme / l'élément auquel il est destiné.
Une API, en revanche, n'est qu'une série de méthodes associées qui peuvent être utiles pour un objectif spécifique.
À titre d'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 directement.
Exemples d'API: API Java, API Google Maps, API Flash Player.
Exemples de SDK: JDK, GWT, Flex SDK.
la source