Bibliothèque vs framework vs API? [fermé]


33

Quelle est la différence entre une bibliothèque, un framework et une API? Ils me semblent tous pareils. J'aimerais entendre les gens penser à cela.





2
@ Jorg: Vous auriez dû soumettre cela comme une réponse. Dans l'état actuel des choses, le spam est à la limite et engorge la page.

2
@Sergio - Jörg W Mittag a 1171 réponses réfléchies et bien reçues sur SO (42 réponses réfléchies et bien reçues ici). Il n'essaie pas d'être difficile. Il essaie d'améliorer P.SE en montrant à quel point cette question est inutile (pour ne pas mentionner qu'aucune réponse ne mentionne ici la caractéristique distinctive d'un cadre).
Corbin Mars

Réponses:


35

Une bibliothèque est un ensemble de fonctions / objets servant un objectif particulier. vous pouvez utiliser une bibliothèque dans une variété de projets.

Un framework est une collection de patterns et de bibliothèques pour vous aider à construire une application.

Une API est une interface permettant aux autres programmes d’interagir avec votre programme sans accès direct.

En d'autres termes, considérez une bibliothèque comme un élément complémentaire d'une application, un framework comme un squelette de l'application et une API comme une partie extérieure de cette application.


7
Ce n'est pas une très bonne définition d'un cadre. Je n'appellerais pas vraiment n'importe quel framework une "collection de motifs et de bibliothèques"
TheLQ

Un cadre s'apparente plus à un environnement à
intégrer

oui, j'étais un peu à court de mots sur celui-là. Quelqu'un a de meilleures suggestions? sinon, n'hésitez pas à éditer. Je suis allé sur wikipedia, qui appelle un framework: "Les frameworks sont un cas particulier de bibliothèques de logiciels en ce sens qu’ils sont des abstractions de code réutilisables encapsulées dans une interface de programmation bien définie (API)", ce qui semble créer davantage de confusion dans l'environnement. contexte de cette question que l'aide.
GSto

3
Une bibliothèque est quand votre code est en charge (votre code "utilise la bibliothèque") et un cadre est quand il est chargé (le cadre "exécute votre code"). Par exemple, un framework dicte l'ordre dans lequel les choses doivent se passer (Swing, servlets) alors qu'avec une bibliothèque, vous décidez quand et comment elle sera utilisée (conversion d'image, cryptage). Une API est juste la définition d'un groupe de fonctions que vous pouvez appeler et fait partie à la fois des bibliothèques et des frameworks.
Martin Wickman

14

Bonnes réponses jusqu'à présent, mais il leur manque un point essentiel: un cadre utilise IoC . Votre code est entouré d'un cadre. Il vit à l'intérieur. En revanche, votre code utilise simplement une bibliothèque ou une API. Il vit en dehors d'elle. IoC est la différence.


Pas nécessairement vrai. Un framework peut utiliser IoC et votre application peut vivre à l'intérieur d'un framework, mais ce n'est pas obligatoire. Stupidement, l'entrée Wikipedia sur Frameworks indique qu'il s'agit d'un «élément distinctif» d'un framework et fait référence à cette thèse " dirkriehle.com/computer-science/research/dissertation/… ", mais la thèse elle-même ne contient pas l'inversion des phrases. 'ou' ioc 'et indique en fait "En règle générale, les applications utilisent non seulement un cadre, mais plusieurs." (p26, ref p9)
Kirk Broadhurst

11
@Kirk Broadhurst pensait en réalité à Martin Fowler : "L’inversion du contrôle est un élément clé de la différence entre un framework et une bibliothèque (...) Un framework incarne une conception abstraite, avec davantage de comportements intégrés. Si vous devez insérer votre comportement à différents endroits du framework, soit en sous-classant, soit en y connectant vos propres classes. Le code du framework appelle ensuite votre code ... "Si nous concluons que IoC n'est pas une caractéristique distinctive, il n'y a pas caractéristique distinctive - ils sont tous les mêmes et ce n'est pas amusant.
Scant Roger

@ScantRoger, Java Collections Framework utilise-t-il IoC? Ne semble pas si .......
Pacerier

3

Une bibliothèque est une collection de code conçue pour effectuer des tâches courantes. Le code de la bibliothèque a tendance à être relativement stable et sans bug. L'utilisation de bibliothèques appropriées peut réduire la quantité de code à écrire. Il aura tendance à réduire le nombre de lignes de code pour une application, ce qui augmentera le taux de fourniture des fonctionnalités. Dans la plupart des cas, il est préférable d'utiliser une routine de bibliothèque plutôt que d'écrire votre propre code.

Une API (Application Programming Interface) est une interface avec certaines fonctionnalités qui permet à une application d'accéder aux fonctionnalités disponibles. Une API peut être appelée interface. Les API existent à plusieurs niveaux, y compris système, bibliothèque, infrastructure, programme et application. Les API doivent être définies avant que le code qui les implémente ne soit implémenté.

Les API doivent être stables, même si des parties de l’API peuvent être obsolètes pour diverses raisons. Plus l'API est largement utilisée, plus il est difficile de la changer. La plupart, sinon la totalité, de l'API Java 1.0 est toujours disponible, bien que de nombreuses méthodes soient obsolètes.

Un framework est un ensemble d'API conçues pour simplifier la construction d'applications. Les cadres fournissent des implémentations pour les composants réutilisables. Les bons cadres ont tendance à être spécialisés dans leur application.

Java Collections Framework est une collection d'API pour divers types d'objets pouvant être utilisés pour gérer des collections. Il fournit une hiérarchie d'API à différentes collections. Dans Java Collections Framework, l’interface SortedSet étend l’interface Set, qui à son tour étend l’interface Collection. Ces API sont des interfaces abstraites et les implémentations réelles portent des noms différents. Collections Framework simplifie la mise en œuvre des collections et simplifie les modifications d’implémentation au cours du développement.

Les cadres peuvent être construits à partir de structures plus petites, comme dans Java Spring Framework, destiné au développement J2EE. Spring se compose de plus d'une douzaine de cadres, dont beaucoup peuvent être utilisés seuls ou remplacés par d'autres.

L'utilisation des bibliothèques, des API et des frameworks appropriés peut simplifier le développement. Ces composants traitent les problèmes courants et permettent à l'équipe de développement de se concentrer sur les problèmes spécifiques à l'application.


2

Un framework est une avancée de la bibliothèque. Si votre boîte à outils est une bibliothèque, votre atelier sera un cadre.

Wikipedia dit

Une API est une abstraction qui décrit une interface pour l’interaction avec un ensemble de fonctions utilisées par les composants d’un système logiciel.

La distinction importante entre une API et une interface utilisateur réside dans le fait qu’une API permet à d’autres logiciels / services d’interagir par programme avec votre solution.

Les API peuvent être construites à la fois pour des applications (via des dll ou des plugins) ou des sites Web et des services (via REST et webservices)


Belle analogie ...
sunwukung

1

Les API définissent comment utiliser autre chose en termes d'objets et de méthodes pouvant être utilisés à partir d'une source. Par exemple, l'intégration de Twitter ou Facebook dans un site utilise une API de Twitter ou Facebook pour garantir la mise à jour des données appropriées.

Les cadres ont tendance à être un peu plus volumineux dans la mesure où ils peuvent parfois former leur propre langage. jQuery est un exemple de framework qui a sa propre syntaxe et pèse un peu plus lourd pour entrer dans mon code dans un sens. Les frameworks peuvent également être des plates-formes qui les rendent similaires aux API en un sens. Par exemple, Win32API ou .Net Framework ont ​​chacun de nombreuses méthodes pour créer une application. Il peut donc y avoir des frameworks contenant des API et des API également considérées comme des frameworks.

Les bibliothèques ont tendance à être des fichiers binaires qui implémentent une API ou une structure. Ce sont donc les bits qui vous obligent à utiliser une API ou une structure dans certains cas. Au moins c'est ainsi que je vois ces termes et leurs différences.


1

Allez dans une bibliothèque et commencez à lire des livres. Si vous êtes l'application, la collection de livres est la bibliothèque. Les étagères, les armoires et le composé qui abrite tout cela constituent le cadre. Tout ce que vous entrez en contact lors de la lecture des livres est l’API.


C'est une réponse merveilleuse.
Magus

0

Une bibliothèque est une collection de code utilisée pour simplifier des tâches courantes. Il peut s'agir de classes, de fonctions ou de tout autre élément spécifique à votre langue ou à votre plate-forme. Un bon exemple pourrait être une bibliothèque de manipulation de chaînes fournissant des aides pour les tâches courantes (construction, division, recherche ou tri de chaînes, etc.).

Une API (interface de programmation d'application) est une définition ("interface") de la manière de travailler avec une autre application, système ou technologie. Il définit essentiellement les opérations disponibles pour interagir avec cet autre système. Une API peut être une bibliothèque (c’est-à-dire qu’elle est encapsulée dans une bibliothèque ou un ensemble de classes), à la différence qu’une API fait toujours référence à un système externe - qu’il s’agisse d’une base de données, d’un service Web, d’une autre application ou du système d’exploitation. lui-même.

Un Framework est un concept plus vaste - il contiendra normalement un certain nombre de bibliothèques et d’API pour effectuer des tâches courantes. Il existe à un niveau conceptuel supérieur - il ne s'agit pas simplement d'une collection d'outils, mais également d'une collection de modèles de conception, de meilleures pratiques et de méthodologies. Un framework logiciel est une extension d'un framework général . Son sens est notamment d'être une base à partir de laquelle les éléments sont construits, fournissant un support et une structure, et fournissant une orientation et une définition aux exigences.


0

L'application est développée à l'aide de bibliothèques basées sur un framework et communique via une API.

Si vous construisez une application, dites une application de traitement d'image en ligne,

  • Vous pouvez utiliser certaines bibliothèques de traitement d'image pré-écrites.
  • vous savez sur quel framework vous guidera pour construire l’application.
  • Vous fournirez à l'application un moyen d'interagir avec le monde extérieur. Ce serait l'API de vos applications pour le reste du monde.

Quand un appel arrive dans votre application

  • il serait traité d'une manière dont vous avez conçu avec des conseils de cadre
  • traitement de l'appel porté par la bibliothèque
  • ces fonctions seront accessibles via votre API du monde extérieur

à la personne qui appelle

raisons pour lesquelles ils existent:

  • bibliothèque: vous évite de réinventer la roue
  • framework: vous évite les pièges inattendus de la conception et de la gestion du système, sauf si le framework lui-même présente des défauts
  • API: assure la sécurité des applications en assurant l'interface entre le noyau et l'accès réel
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.