Dans le monde du développement, on utilise généralement les termes de framework et bibliothèque (ou librairie) de la même façon. Pourtant, il y a de grosses différences entre un framework et une simple librairie. Et si savoir faire la différence peu paraître dérisoire ou inutile, il est tout de même important, surtout si on est développeur freelance, de pouvoir les différencier !
Différencier framework et bibliothèque : en quoi cela importe
Vu que tout le monde utilise les deux termes indifféremment, à quoi ça sert de savoir la différence ? Après tout, on sera compris de tout développeur.
Il y a cependant plusieurs raisons qui font que cette différence sémantique est importante.
Déjà, ne serait-ce que du point de vue personnel, il est toujours mieux de savoir de quoi on parle exactement, surtout si on est en pleine conversation tech avec d’autres professionnels du milieu.
Mais, aussi, savoir expliquer la différence entre un framework et une bibliothèque peut faire partie des questions posées lors d’un entretien pour un poste de développeur ! Cela peut en effet faire partie des questions pièges, sémantiques, qui peuvent nous êtres posées pour nous déstabiliser.
Et dans ce cas là, mieux vaut donner la bonne réponse…
Un peu de sémantique
Avant d’expliquer la différence exacte entre un framework de développement et une bibliothèque, arrêtons nous un moment sur la sémantique et expliquons les deux termes.
Le framework
Le mot framework est composé des mots “frame” et “work”. Un framework veut littéralement dire, en français, un cadre de travail. On a déjà ici un premier élément de réponse.
Selon la page Wikipédia dédiée, les traductions françaises du terme sont infrastructure de développement, cadre d’applications ou cadriciel. Je trouve personnellement “cadre de travail” plus adapté.
La librairie, ou bibliothèque
Pour la bibliothèque, cela peut paraître plus simple, mais ce n’est pas le cas ! Si le terme bibliothèque est correct, librairie, qu’on utilise aussi souvent, est lui incorrect…
C’est un anglicisme. Le mot anglais qui désigne une bibliothèque est library. Faux-ami, nous avons traduit cela en librairie, en français, et l’utilisons aussi souvent que bibliothèque… Mais c’est ce dernier qui est correct.
Framework et Bibliothèque : les définitions
On va maintenant expliquer concrètement les différences entre un framework et une bibliothèque.
Une bibliothèque est une collection de routines (ou de méthodes), pouvant être appelées par le code d’un développeur pour exécuter des actions spécifiques.
Concernant le framework, on l’avait déjà expliqué dans un article dédié aux frameworks : il s’agit d’un ensemble cohérent de composants logiciels. De fait, un framework est composé lui-même d’un ensemble de bibliothèques.
Mais la plus grosse différence entre les deux, la plus facile à visualiser, c’est qu’ils ne sont implicitement pas utilisés de la même manière par le développeur.
Comme le montre l’image ci-dessus, si le code d’un développeur appelle une librairie, c’est le framework qui fait appel au code du développeur. Le développeur utilise le code d’une librairie pour faire une action, et le framework utilise le code écrit par le développeur pour faire une action.
C’est ce qu’on appelle l’inversion de contrôle (inversion of control).
Ce qui rend, au fond, presque contraire une bibliothèque et un framework.
Enfin, pour démontrer à quel point une bibliothèque et un framework sont différents, il suffit de parler de l’interchangeabilité dans le code.
Pour ajouter, par exemple, un date picker dans votre projet web, vous allez probablement chercher une bibliothèque qui fait le travail. Et elles sont facilement interchangeables dans votre code (vous n’aurez pas beaucoup de modifications à faire pour passer du date picker de jQuery au date picker de Bootstrap).
Mais, changer complètement de framework sur un projet déjà développé – ou bien avancé – est impossible sans refaire complètement tout ou une grosse partie du code.
Les frameworks front-end en sont-ils vraiment ?
Dans le développement web, on parle souvent des trois gros frameworks web : React, Vue.js et Angular. Mais, sont-ils tous trois des frameworks, à votre avis, maintenant que l’on en connait la définition exacte ?
Eh bien non, si Vue et Angular sont bien des frameworks, ce n’est pas le cas de React ! Le site officiel de cette techno le dit d’ailleurs : “Une bibliothèque JavaScript pour créer des interfaces utilisateurs”.
Bien que React soit une techno qui ne soit pas facilement interchangeable une fois utilisée (donc, comme un framework), elle n’offre pas de cadre de travail comme le font ses concurrents, Vue et Angular. Elle n’offre qu’un ensemble de fonctions que l’on utilise pour construire une interface.
Pour des raisons de facilités de langage, on parle cependant souvent de React comme étant un framework JavaScript. Il y a, comme on vient de le dire, des différences, mais l’abus de langage est plutôt accepté par la communauté.
Framework ou Bibliothèque : lequel utiliser ?
Peut-être vous posez-vous la question sur ce qu’il vaut mieux utiliser : un framework ou une bibliothèque ?
Évidemment, cela dépend des cas d’utilisation, et c’est même souvent assez évident. Ça ne sert à rien d’utiliser Angular pour un simple site vitrine d’une seule page, cela alourdirait le développement mais aussi le code en lui-même. On utilisera en revanche des bibliothèques pour aider au développement (pour construire un formulaire, par exemple, ou ajouter un date picker, comme on l’a déjà dit).
Et pour construire une web app complexe, on ne partira que rarement de rien, en n’utilisant quelques bibliothèques. On préfèrera utiliser un framework, plus adapté aux gros projets, et encore plus au travail en équipe.
Mais parfois la différence est plus subtile, faisons donc le point sur les avantages et inconvénients des frameworks et librairies.
Le framework
Commençons par énumérer les avantages puis les inconvénients à l’utilisation d’un framework
Les avantages du framework
- Rend le développement plus rapide ;
- Facilite le déboggage ;
- Augmente la réutilisabilité du code ;
- Adapté pour le travail en équipe ;
- Vient avec un ensemble de fonctionnalités (sécurité, cache, authentification, ORM, etc.).
Les inconvénients du framework
- On a une dépendance vis à vis des développeurs du frameworks (bugs, problèmes de compatibilité, failles, etc.) ;
- Peu flexible comparé à une bibliothèque ;
- Effet “usine à gaz” pour les petits projets ;
- On doit bien le choisir, pas de retour en arrière facile ;
- On doit faire de la veille et mettre à jour son code pour rester dans les versions à jour.
La bibliothèque (ou librairie)
Passons maintenant aux avantages et inconvénients d’une bibliothèque
Les avantages des bibliothèques
- Rend le développement plus rapide ;
- Permet d’écrire moins de code ;
- Flexible au niveau de l’utilisation – elle ne cadre pas le développement tout entier comme un framework ;
- Il est facile de créer soi-même une librairie.
Les inconvénients des bibliothèques
- Risques d’incompatibilité entre différentes librairies, ou entre une librairie et la version d’un framework, etc. ;
- Certaines librairies peuvent avoir des failles de sécurité ;
- Empiler bibliothèque sur bibliothèque peut complexifier un projet.
Quelques exemples de frameworks et de librairies
Pour finir, et pour que la notion soit bien claire, donnons quelques exemples de frameworks et de librairies.
Quelques frameworks
Chaque langage ou presque possède son ou ses propres frameworks. On a parlé des frameworks JavaScript Vue et Angular.
Mais PHP a lui aussi ses propres frameworks, dont on a écrit un comparatif complet (Zend, Symfony, Laravel, etc.).
Ruby a lui aussi son framework, Ruby on Rails, Python a pour sa part Flask ou Django, etc.
Le framework étant un excellent moyen de simplifier, cadrer et rationaliser un développement, il est normal qu’il y en ait autant, et que chaque langage ait son ou ses frameworks. Chacun possède ses avantages et inconvénients, aussi est-il important de bien s’informer, voire de les essayer soi-même, avant de s’engager dans un framework.
Quelques bibliothèques
Si vous êtes développeur JavaScript front-end, vous connaissez forcément jQuery, peut-être la librairie JavaScript la plus connue – car une des plus anciennes.
Là aussi, chaque langage vient avec ses propres librairies. Certaines sont standards et viennent avec le langage (comme la bibliothèque string.h de C), d’autres sont externes et doivent être installées.
Pour le développement web là encore, on compte même des librairies CSS, comme Bootstrap ou Tailwind. Nous avons un article spécifique comparant les principales bibliothèques CSS. Ces librairies aident notamment à créer une interface qui soit jolie et user-friendly, sans devoir coder tout le CSS soi-même.
Conclusion
Si on devait résumer la différence entre un framework et une librairie en une phrase, ça serait : vous dites aux librairies ce qu’elles doivent faire ; les frameworks vous disent quoi faire.
Les deux sont différents et adaptés à des situations différentes. Une librairie est plus flexible, souvent centrée sur un besoin spécifique, quand le framework est plus généraliste et adapté pour travailler sur l’ensemble d’un (gros) projet.
Si vous avez malgré tout des questions, n’hésitez pas à les poser en commentaire !