Bibliothèque logicielle
Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

En informatique, une bibliothèque ou librairie[1] logicielle (ou encore, bibliothèque de programmes) est un ensemble de fonctions utilitaires, regroupées et mises à disposition afin de pouvoir être utilisées sans avoir à les réécrire. Les fonctions sont regroupées de par leur appartenance à un même domaine conceptuel (mathématique, graphique, tris, etc). Les bibliothèques logicielles se distinguent des exécutables dans la mesure où elles ne représentent pas une application. Elles ne sont pas complètes, elles ne possèdent pas l'essentiel d'un programme comme une fonction principale et par conséquent ne peuvent pas être exécutées directement. Les bibliothèques peuvent regrouper des fonctions simples (par exemple le calcul d'un cosinus (En mathématiques, les fonctions trigonométriques sont des fonctions d'angle importantes pour étudier les triangles et modéliser des phénomènes périodiques. Elles peuvent être définies comme rapports de deux longueurs des côtés d'un...), ou l'inversion d'une matrice) comme des fonctions complexes avec de nombreuses fonctions internes non accessibles directement. L'intérêt des bibliothèques réside dans le fait qu'elles contiennent du code utile que l'on ne désire pas avoir à réécrire à chaque fois.

Les bibliothèques logicielles sont parfois regroupées en un framework (Un framework est un espace de travail modulaire. C'est un ensemble de bibliothèques et de conventions permettant le développement rapide d'applications. Il fournit suffisamment de briques logicielles et impose suffisamment de...), de façon à constituer un ensemble (En théorie des ensembles, un ensemble désigne intuitivement une collection d’objets (les éléments de l'ensemble), « une multitude qui...) cohérent et complémentaire de bibliothèques.

Origine du nom

Le nom de bibliothèque est dérivé du comportement humain : quand on ignore comment faire quelque chose de technique (par exemple, planter des graines dans un jardin) et que l'on veut pourtant le faire, on peut aller se documenter en bibliothèque et consulter des livres indiquant comment procéder sans avoir à réinventer la procédure soi-même et à chaque fois.

Les programmes procèdent un peu de la même façon : plutôt que de coder une procédure courante dans chaque programme en ayant besoin (Les besoins se situent au niveau de l'interaction entre l'individu et l'environnement. Il est souvent fait un classement des besoins humains en trois grandes catégories : les besoins...) (ce qui veut dire qu'une même procédure serait réécrite autant de fois sur un ordinateur (Un ordinateur est une machine dotée d'une unité de traitement lui permettant d'exécuter des programmes enregistrés. C'est un...) qu'il y a de programmes susceptibles de l'utiliser), on rassemble ces procédures dans des bibliothèques. Si un programme a une fonction à remplir et que celle-ci se trouve en bibliothèque, il l'utilisera directement.

Conception et organisation (Une organisation est) des bibliothèques

L'organisation classique des bibliothèques passe par un découpage thématique des fonctions, permettant au programmeur (En informatique, un développeur (ou programmeur) est un informaticien qui réalise du logiciel en créant des algorithmes et en les mettant en œuvre dans un langage de programmation.) de retrouver plus facilement la fonction dont il a besoin. Ce découpage thématique permet de classer les bibliothèques selon les services qu'elles rendent :

  • Bibliothèques de bas niveau ou bibliothèques système : elles fournissent des services d'interface (Une interface est une zone, réelle ou virtuelle qui sépare deux éléments. L’interface désigne ainsi ce que chaque élément a besoin de connaître de l’autre pour pouvoir fonctionner correctement.) avec le système d'exploitation, avec les périphériques, ou fournissent des outils génériques :
    • bibliothèques d'entrées/sorties : fonctions de lecture et d'écriture de fichiers, de périphériques d'entrée/sortie comme le clavier, l'écran (Un moniteur est un périphérique de sortie usuel d'un ordinateur. C'est l'écran où s'affichent les informations saisies ou demandées par l'utilisateur et générées ou restituées par l'ordinateur, sous forme de texte et d'images en deux...), etc.
    • gestion de structures de données (Dans les technologies de l'information (TI), une donnée est une description élémentaire, souvent codée, d'une chose, d'une transaction d'affaire, d'un événement, etc.) système,
  • Bibliothèques de haut niveau (aussi appelées bibliothèques métier, elles interagissent avec celles de bas niveau) : les fonctions qu'elles contiennent sont propres à une activité (Le terme d'activité peut désigner une profession.) spécifique:
    • boîtes à outils graphiques : ensemble de fonctions permettant de gérer, d'animer et d'afficher des objets graphiques complexes (par exemple : OpenGL),
    • bibliothèques d'opérateurs de traitement d'image : ensemble de fonctions destinées à structurer l'information dans une image à des fins d'analyse,
    • gestion de structures de données utilisateur,
  • Autres bibliothèques :
    • combinateurs en programmation fonctionnelle (Un langage fonctionnel est un langage de programmation dont la syntaxe et les caractéristiques encouragent la programmation fonctionnelle. Le langage fonctionnel le plus ancien est le Lisp,...),
    • protocoles de métaprogrammation (La métaprogrammation est, par analogie avec les métadonnées et les métaclasses, la programmation de métaprogrammes. Elle est l'écriture de programmes qui manipulent des données...).

L'interface de programmation (Une interface de programmation (Application Programming Interface ou API) permet de définir la manière dont un composant informatique peut communiquer avec un autre. C'est donc une interface de code source...) (plus communément appelé par son acronyme anglais API pour Application Programming Interface) est la partie visible d'une bibliothèque ou d'un ensemble de bibliothèques, permettant au programmeur de choisir parmi les fonctions disponibles celle qui va lui rendre le service dont il a besoin. Les APIs se présentent comme une liste des noms des fonctions ou/et classes disponibles, avec une documentation sur les paramètres à leur fournir et sur les résultats retournés.

Mise en œuvre des bibliothèques au format du système d'exploitation

Principes

Pour que le code exécutable puisse accéder aux instructions d'une fonction d'une bibliothèque qu'il utilise, il faut que chaque appel de fonction dans le code soit associé à l'adresse (Les adresses forment une notion importante en communication, elles permettent à une entité de s'adresser à une autre parmi un ensemble d'entités. Pour qu'il n'y ait pas d'ambiguïté, chaque adresse...) effective de la première instruction (Une instruction est une forme d'information communiquée qui est à la fois une commande et une explication pour décrire l'action, le comportement, la méthode ou la tâche qui...) de la fonction appelée dans la bibliothèque.

Pour cela, il existe plusieurs méthodes et outils, qui interviennent après l'étape de compilation :

  • l'édition de liens assure la mise en place, dans le code exécutable de l'application, des instructions de branchement vers les fonctions externes (issues d'une ou de plusieurs bibliothèques) ;
  • si l'édition de lien est dynamique (Le mot dynamique est souvent employé désigner ou qualifier ce qui est relatif au mouvement. Il peut être employé comme :), intervient un chargeur permettant, lors de l'exécution du programme, d'amener en mémoire (D'une manière générale, la mémoire est le stockage de l'information. C'est aussi le souvenir d'une information.) les fonctions des bibliothèques utilisées, de sorte que lorsqu'une fonction est appelée, son code soit disponible en mémoire.
  • si l'édition est statique (Le mot statique peut désigner ou qualifier ce qui est relatif à l'absence de mouvement. Il peut être employé comme :): le code des fonctions utilisées par l'application est intégré au code de l'application qui devient par là-même autonome.

Le chargement (Le mot chargement peut désigner l'action de charger ou son résultat :) des bibliothèques peut survenir de deux manières :

  • À la volée lors d'un appel par le programme qui en exploite une fonction (liaison tardive), cette technique a l'avantage de ne charger que le code réellement nécessaire,
  • Ou au chargement du programme en vue (La vue est le sens qui permet d'observer et d'analyser l'environnement par la réception et l'interprétation des rayonnements lumineux.) de son exécution.

Une bibliothèque est en principe partagée par le système d'exploitation afin de ne pas dupliquer son code dans toutes les applications y faisant appel. Voir cependant la possibilité de versions simultanées.

Bibliothèques chargées dynamiquement

Une bibliothèque dynamique, nommée Dynamic Link Library (.dll) pour Windows (Windows est une gamme de systèmes d'exploitation produite par Microsoft, principalement destinées aux machines compatibles PC. C'est le remplaçant de MS-DOS. Depuis les années 1990, avec...) et nommée shared object (.so) ou "dynamic library" sous UNIX, est un fichier ( Un fichier est un endroit où sont rangées des fiches. Cela peut-être un meuble, une pièce, un bâtiment, une base de données informatique. Par exemple : fichier des patients d'un médecin, fichier des...) de bibliothèque logicielle (En informatique, une bibliothèque ou librairie[1] logicielle (ou encore, bibliothèque de programmes) est un ensemble de fonctions utilitaires, regroupées et...) utilisé par un programme exécutable, mais n'en faisant pas partie.

Ce fichier contient des fonctions qui pourront être appelées pendant l'exécution d'un programme, sans que celles-ci soient incluses dans son exécutable.

Les avantages des bibliothèques dynamiques sont:

  • la réduction de la taille d'un exécutable, puisque certaines parties du logiciel (En informatique, un logiciel est un ensemble d'informations relatives à des traitements effectués automatiquement par un appareil informatique. Y sont inclus...) se situent en dehors de lui,
  • et la mise à jour (Une mise à jour, souvent abrégé en MAJ ou MàJ, est l'action qui consiste à mettre « à jour », ou bien...) possible des fonctions utiles pour toutes les applications qui les utilisent. Les applications bénéficient alors automatiquement des corrections ou des améliorations fonctionnelles de la bibliothèque.

Bibliothèques partagées

Lorsque plusieurs programmes utilisent les mêmes bibliothèques, il est judicieux de ne charger celles-ci qu'une seule fois en mémoire et de laisser tous les programmes en utiliser la même copie. On parle alors de bibliothèques partagées. Une bibliothèque peut être dynamique sans pour autant être partagée, et partagée sans être dynamique.

Le fait de partager des bibliothèques implique de fortes contraintes de conception afin que les appels de fonction par un programme, susceptibles de modifier l'état interne (En France, ce nom désigne un médecin, un pharmacien ou un chirurgien-dentiste, à la fois en activité et en formation à l'hôpital ou en cabinet...) de la bibliothèque, ne perturbent pas les autres programmes qui l'utilisent également. Dans un système multitâche (Un système d'exploitation est multitâche (en anglais : multi-task) s’il permet d’exécuter, de façon apparemment simultanée, plusieurs programmes...), comme on ne maîtrise (La maîtrise est un grade ou un diplôme universitaire correspondant au grade ou titre de « maître ». Il existe dans plusieurs pays et correspond à différents niveaux selon ceux-ci.) pas les moments où les fonctions de la bibliothèque sont appelées, il est possible qu'une fonction soit appelée plusieurs fois simultanément. On appelle réentrance (En informatique, la réentrance est la propriété pour un morceau de programme d'être utilisé simultanément par plusieurs tâches utilisatrices. La réentrance permet d'éviter la...) la faculté d'une bibliothèque à pouvoir être utilisées simultanément par plusieurs applications.

Versions simultanées

Lors du remplacement d'une version de bibliothèque par une autre, il arrive que certains programmes fonctionnant avec l'ancienne version ne puissent plus fonctionner avec la nouvelle. Le problème est résolu par un mécanisme de version de bibliothèque et de compatibilité entre version

Cas spécifiques dans différents systèmes d'exploitation

Windows

DLL signifie Dynamic Link Library, ou en français Bibliothèque de liens dynamiques, dans le cadre du Système d'exploitation Windows. Traditionnellement, le nom de ces fichiers se termine par l'extension " .dll ". Une DLL peut contenir du code ou des ressources qui sont alors rendus disponibles à d'autres applications.

Le code contenu dans une DLL n'est chargé qu'une seule fois en mémoire. Ainsi, lorsqu'un processus tente de charger une DLL qui est déjà en mémoire, le code existant est mappé dans la mémoire du programme sans qu'un second chargement soit nécessaire, gagnant de la place en RAM. Lorsque tous les processus qui exploitaient une DLL se sont terminés, suivant le type de la bibliothèque et les paramètres Windows, l'espace mémoire qui lui était attribué peut être libéré ou non modifié afin que les prochains programmes hôtes n'aient pas à réeffectuer l'opération de chargement.

Une DLL peut être liée statiquement ou dynamiquement à un programme. Dans le premier cas, le programme déclare explicitement avoir besoin d'une fonction contenue dans une bibliothèque et la résolution de liens est effectuée par l'éditeur de lien au moment de la phase (Le mot phase peut avoir plusieurs significations, il employé dans plusieurs domaines et principalement en physique :) de compilation du programme. Le programme inclut alors dans sa structure binaire la liste des bibliothèques nécessaires à son bon fonctionnement dans sa "table des exportations" (export table). Le chargeur de programmes de Windows vérifie alors lors de l'exécution du programme que toutes les DLL requises sont disponibles, et si ce n'est pas le cas, stoppe le chargement en affichant un message (La théorie de l'information fut mise au point pour déterminer mathématiquement le taux d’information transmis dans la communication d’un message par un canal de communication, notamment en présence de parasites appelés...) indiquant que des dépendances nécessaires à l'exécutable n'ont pu être trouvées. Dans le second cas, c'est le programme qui demande explicitement le chargement d'une bibliothèque durant son exécution à l'aide de l'API LoadLibrary afin d'obtenir un pointeur sur la fonction désirée. Cette dernière approche est plus pénible car elle nécessite un effort plus important de la part du programmeur, mais elle permet d'une part de ne pas empêcher l'exécution d'un programme lié à une bibliothèque dont l'existence sur le système hôte (Un système hôte est un terme général pour décrire tout ordinateur en réseau qui fournit des services à d'autres systèmes ou utilisateurs. Ces services...) n'est pas certaine, d'autre part constitue parfois le seul moyen d'accéder à des fonctions qui ne sont pas déclarées dans les fichiers d'interface fournis par l'éditeur et qui sont donc à considérer comme "non documentées".

Des langages comme C, C++ ou Delphi sont aptes à créer des DLL qui peuvent être exploitées par d'autres programmes. De nombreux outils de développement qui proposent des bibliothèques d'exécution à l'instar des MFC ou de la VCL de Borland (Borland (Borland Software Corporation) (NASDAQ : BORL) est une société américaine de logiciel, basée en Californie. Elle a été créée par Philippe Kahn, Français installé aux États-Unis et par...) proposent soit une liaison statique (intégration directe du code dans l'exécutable) soit une liaison dynamique (la bibliothèque est alors à distribuer sous forme de DLL).

L'utilisation de DLL permet de mettre à disposition du code et de rendre modulaire l'architecture (L’architecture peut se définir comme l’art de bâtir des édifices.) d'une application. La mise à jour (Le jour ou la journée est l'intervalle qui sépare le lever du coucher du Soleil ; c'est la période entre deux nuits, pendant laquelle les rayons du Soleil éclairent le ciel. Son début (par rapport à minuit heure...) de celle-ci peut également se faire en remplaçant uniquement les DLL obsolètes. Néanmoins, l'utilisation de plusieurs versions concurrentes de DLL est problématique sous Windows et conduit à certaines incompatibilités regroupées sous le terme DLL Hell.

Les DLL sont recherchées dans le répertoire courant, puis dans les répertoires inclus dans la variable (En mathématiques et en logique, une variable est représentée par un symbole. Elle est utilisée pour marquer un rôle dans une formule, un prédicat ou...) d'environnement (L'environnement est tout ce qui nous entoure. C'est l'ensemble des éléments naturels et artificiels au sein duquel se déroule la vie humaine. Avec les enjeux écologiques...) path comme c:\windows et c:\windows\system32.

Unix, GNU/Linux et BSD

Sous les systèmes de type Unix, les bibliothèques seront conventionnellement nommées à l'aide de l'extension .so (shared objet), .dylib (dynamic library de MacOSX), .a (archive, Unix traditionnels), .sl ("shared library") ou encore .sa ("shared archive", SunOS).

Les fichiers .so sont recherchés dans les répertoires décrits par /etc/ld.so.conf (documentation disponible avec man ldconfig).

Les bibliothèques peuvent évoluer et différentes versions peuvent être utilisées sur le même système, par exemple:

 
 /usr/lib/libxml2.so (lien) 
 /usr/lib/libxml2.so.2 (lien) 
 /usr/lib/libxml2.so.2.6.6 
 /usr/lib/libxml.so.1 (lien) 
 /usr/lib/libxml.so.1.8.17 
 

Exemples

 
 C:\WINNT\system32\wsock32.dll 
 /usr/lib/libxml2.so 
 

Bibliothèques de langages de scripts

Les langages de scripts comme python ou perl ont leurs propres bibliothèques, qui sont souvent écrites dans le dit langage de script.

Par exemple la bibliothèque python2.4-pychart se compose notamment des trois fichiers suivants :

  • /usr/lib/python2.4/site-packages/pychart/log_coord.py
  • /usr/lib/python2.4/site-packages/pychart/axis_doc.py
  • /usr/lib/python2.4/site-packages/pychart/object_set.py

Notes et références

  1. Le terme de librairie est considéré par certains comme un abus de langage résultant d'une mauvaise traduction du faux ami en anglais library ; cependant le mot librairie désignait au Moyen Âge d'abord l'ensemble des livres (la librairie de Montaigne), c'est ainsi qu'il est passé (Le passé est d'abord un concept lié au temps : il est constitué de l'ensemble des configurations successives du monde et s'oppose au futur sur une échelle des temps centrée sur le présent....) dans la langue anglaise et tombé en désuétude dans ce sens (SENS (Strategies for Engineered Negligible Senescence) est un projet scientifique qui a pour but l'extension radicale de l'espérance de vie humaine. Par une...) en français remplacé par un terme d'origine grecque plutôt que latine comme libraria du latin impérial.
Page générée en 0.010 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique