J'essaie d'expliquer à un non-développeur la différence entre une API et un SDK. Je dois expliquer pourquoi un éditeur commercial de logiciels d’empreintes digitales ne fournira probablement pas de SDK, bien qu’il en ait certainement utilisé un.
Les fournisseurs de périphériques et les fournisseurs de logiciels peuvent et doivent exposer une API bien définie. Cette API permet (d’être écrite) à d’autres logiciels d’interagir 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 du développeur.
Plus précisément, dans le contexte d’un capteur d’empreintes digitales par rapport à un logiciel d’enregistrement/vérification, voici comment j’ai tenté de l’expliquer:
Si je suis un fabricant d’appareils d’empreinte digitale/de capteurs et que je ne travaille pas dans l’écriture de logiciels, voici comment je pourrais mieux commercialiser mon produit:
- Assurez-vous que les pilotes de mon appareil 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) afin de "communiquer" avec 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 des programmes fonctionnant avec mon appareil. Les SDK peuvent fournir des bibliothèques de codes auxiliaires, des applications de référence, de la documentation, etc.
Part de gâteau:
* 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 des cas particuliers, mais uniquement parce que certaines étapes d'authentification/autorisation échouent. Tout logiciel présentant les informations d'identification appropriées (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 de l'utiliser. Mais avoir un SDK facilite généralement beaucoup le processus.
API est comme les blocs de construction d'un jeu énigmatique avec lequel un enfant joue pour joindre des blocs de différentes formes et construire quelque chose auquel ils peuvent penser.
SDK, d’autre part, est un atelier approprié dans lequel 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é à des blocs, vous pouvez donc créer vos propres blocs ou créer quelque chose sans aucun bloc pour commencer.
coder sans SDK ni API revient à tout créer à partir de zéro sans atelier - vous devez même créer vos propres outils
Supposons que la société C propose des produits P et P impliquant des logiciels d’une certaine manière. Ensuite, C peut offrir une bibliothèque/un ensemble de bibliothèques aux développeurs de logiciels qui gèrent les systèmes logiciels de P.
Cette bibliothèque/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 les fonctionnalités de P à d'autres sociétés/systèmes, il le fait avec un API.
C'est une interface vers P. Un moyen pour les systèmes externes d'interagir avec P.
Si vous pensez en termes de mise en œuvre, ils sembleront assez similaires. Surtout maintenant que l'Internet est devenu comme un grand système d'exploitation distribué.
Dans le but, cependant, ils sont en réalité assez distincts.
Vous construisez quelque chose avec un SDK et vous utilisez ou consommez quelque chose avec une API.
Interface de programmation d'application est un ensemble de routines/structures/classes de données qui spécifie un moyen d'interagir avec la plate-forme/le logiciel cible comme OS X, Android, projet. application de gestion, logiciel de virtualisation, etc.
Alors que le kit de développement logiciel est un wrapper autour des API/s qui facilite la tâche aux développeurs.
Par exemple, Android SDK permet aux développeurs d'interagir avec la plate-forme Android alors que celle-ci est construite à l'aide de composants logiciels composites communiquant via des API.
De plus, les SDK sont parfois conçus pour faciliter le développement dans un langage de programmation spécifique. Par exemple, pilote Web Selenium (intégré à Java) fournit des API permettant de piloter tout navigateur de manière native, tandis que capybara peut être considéré comme un SDK facilitant Ruby les développeurs à utiliser le pilote Web Selenium. Cependant, le pilote Web Selenium est également un SDK en lui-même, car il combine une interaction avec divers pilotes de navigateur natifs dans un même package.
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 support telles que des en-têtes ou des fichiers IDL. Les kits SDK contiennent généralement des API, mais ils ajoutent souvent des compilateurs, des outils et des exemples au mélange.
L'API spécifie comment faire quelque chose, une interface du type "Les voies de chemin de fer sont distantes de 4 pieds et la barre métallique de 1" de large "Maintenant que vous avez l'API, vous pouvez maintenant construire un train qui conviendra à ces chemins de fer. pistes si vous voulez aller n'importe où. L'API est juste une information sur la façon de construire votre code, elle ne fait rien.
Le Kit de développement logiciel (SDK) est un ensemble d’outils qui se préoccupaient déjà des spécifications. "Voici un train, du charbon et un préposé à l'entretien. Utilisez-le pour vous déplacer d'un endroit à l'autre" Avec le SDK, vous n'avez pas à vous soucier 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émarrera pas spontanément, vous devez toujours faire appel à un conducteur pour le contrôler.
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 à être drôle, appelez le responsable de l'entretien" etc.
API = Dictionnaire des mots disponibles et leur signification (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
Même si vous POUVEZ aller à l’école et devenir un maître de votre langue après quelques années, l’utilisation du SDK vous aidera à écrire des phrases qui ont du sens en un rien de temps (pardonnant le fait que, dans cet exemple, vous n’avez apprendre une autre langue pour au moins apprendre à utiliser le SDK.)
Pourquoi pas ... 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 morceaux prédécoupés et des instructions pour une bibliothèque IKEA qu'une boîte de vis.
API = SDK d'interface de programmation d'application = Kit de développement logiciel
Un SDK semble être un ensemble complet de API s 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 lesquels il est conçu.
API, en revanche, 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 regroupe simplement toutes les bibliothèques qui constituent le langage principal avec lequel vous pouvez travailler immédiatement.
Exemples d’API: API Java, API Google Maps, API Flash Player.
Exemples de SDK: JDK, GWT, Flex SDK.
Vous utilisez un kit SDK pour accéder aux fonctionnalités d'une bibliothèque et une API pour la contrôler.