Portabilité (informatique)

Portabilité (informatique)
Page d'aide sur l'homonymie Pour les articles homonymes, voir Portabilité et Application portable.

La portabilité désigne pour un programme informatique sa capacité à fonctionner plus ou moins facilement dans différents environnements d'exécution. Les différences peuvent porter sur l'environnement matériel (processeur) comme sur l'environnement logiciel (système d'exploitation). La différence d'environnement peut également porter sur une combinaison des deux éléments. C'est le cas par exemple dans les domaines de l'informatique embarquée, des super calculateurs ou des machines virtuelles.

L'action de modifier un programme pour qu'il puisse s'exécuter sur un autre environnement est appelée portage.

Sommaire

Environnement d'exécution

La notion d'environnement d'exécution désigne l'ensemble (physique ou logiciel) qui exécutera les instructions du programme. Cet environnement peut avoir différents aspects suivant le langage de programmation utilisé ou le type de programme.

Ainsi, l'environnement d'exécution est :

Plus petit dénominateur commun

Article détaillé : Abstraction (informatique).

Le niveau de portabilité d'un programme se mesure au fait qu'il utilise le plus petit dénominateur commun à plusieurs environnements. Ainsi, si une bibliothèque logicielle est disponible sur plusieurs environnements et que ce programme ne fait qu'utiliser cette dernière et non certaines fonctions spécifiques à un environnement particulier, on dit que ce programme est portable partout où cette bibliothèque est disponible.

Les bibliothèques logicielles les plus courantes sont celles livrés avec les langages de programmation, que l'on appelle bibliothèques standards. C'est ainsi que si un programme utilise le langage C et uniquement sa bibliothèque standard, il pourra être porté sans difficulté, simplement en le recompilant sur tous les environnements disposant d'un compilateur C (ce qui est le cas sur la quasi-totalité des systèmes d'exploitation existants).

POSIX

Article détaillé : POSIX.

La portabilité d'un programme est une bonne chose de par le fait qu'elle permet à ce dernier de toucher une audience plus large. L'inconvénient est qu'il faut se limiter à des bibliothèques communes, qui sont bien souvent pauvres comparé à ce qui est fourni avec un environnement d'exécution particulier. Ainsi, les bibliothèques standards du C et du C++ ne connaissent pas le réseau, les processus légers ou encore les interfaces graphiques.

C'est en partie pour cela qu'a été créée la norme POSIX, qui définit plusieurs fonctionnalités que doit fournir un système UNIX, comme ses commandes de base et son interface de programmation. POSIX permet de faire des choses bien plus évoluées qu'en utilisant simplement les bibliothèques standard du C et C++. Ainsi, POSIX connaît le réseau, les processus légers et a des fonctionnalités de système temps réel.

Qt, GTK+, wxWidgets, etc.

Articles détaillés : Qt, GTK+ et wxWidgets.

Bien que POSIX offre des fonctionnalités évoluées, il en manque toujours une qui est largement utilisée de nos jours, l'interface graphique. C'est pour cette raison que des bibliothèques telles que Qt, GTK+ ou encore wxWidgets ont vu le jour. Mais ces dernières ne se limitent pas à l'interface graphique et offrent également une interface de programmation pour le réseau, l'accès aux fichiers ou encore la manipulation de chaîne de caractères.

Niveaux de portabilité

La portabilité d'un programme peut se faire à plusieurs niveaux. Pour l'instant, les bibliothèques logicielles telle que POSIX ou Qt se limitent à la portabilité au niveau du code source. Mais il existe d'autre niveaux, comme celui au niveau du bytecode ou encore, mais plus rare, au niveau de l'exécutable.

Du code source

La portabilité au niveau du code source nécessite la disponibilité de l'interface de programmation sur tous les environnements d'exécution cibles. À partir de cela, il suffit[1] de recompiler le code source avec les bonnes bibliothèques.

La portabilité au niveau du code source est également valable avec les langages interprétés, où cette fois-ci, c'est la disponibilité de l'interpréteur et de sa bibliothèque standard qui est nécessaire.

Du bytecode

Article détaillé : bytecode.

Le bytecode est une sorte de code intermédiaire, que l'on peut considérer comme « à moitié compilé » ou « pseudo-compilé ». Ce code n'est pas destiné à être exécuté directement par le système d'exploitation comme tout programme compilé. C'est une machine virtuelle qui est chargée de cela. Son but est de servir de couche entre le programme et le système d'exploitation, rendant ainsi parfaitement portable tout programme, à condition qu'il existe une machine virtuelle sur le système cible.

Aujourd'hui, le principal représentant est Java, dont la machine virtuelle est disponible[2], sur les principaux systèmes d'exploitation (Windows, Linux, Mac OS, FreeBSD ou encore Solaris).

Le langage de programmation de Microsoft, C# dispose également d'une machine virtuelle, mais il est destiné à fonctionner uniquement sur Windows. Cependant, le projet Mono a pour objectif d'implémenter un telle machine virtuelle et ses bibliothèques logicielles.

De l'exécutable

Ce niveau de portabilité est notamment offert par le format d'exécutable Universal binaries d'Apple, ou des applications s'exécutent indifféremment sur architecture PowerPC et x86, mais uniquement sur Mac OS X

Système d'exploitation

Comme on l'a vu, la notion d'environnement d'exécution pour un système d'exploitation désigne l'architecture matérielle sur laquelle il s'exécute. Le niveau de portabilité d'un système dépend donc de sa capacité à s'abstraire des spécificités du matériel en ayant un minimum de code dépendant du matériel. À ce niveau, la grande difficulté est d'avoir une collection de pilotes de périphériques assez étendue pour que l'utilisation du système d'exploitation soit intéressante.

Aujourd'hui, le système le plus portable est certainement NetBSD, disponible sur plus de cinquante architectures matérielles (allant du superordinateur au grille-pain[3]).

Téléphonie mobile

Dans le domaine de la téléphonie mobile, une version pour mobiles du langage Java, J2ME - Midp, assure aux jeux et applications une certaine portabilité. Elle ne résout pas tous les problèmes spécifiques aux centaines de téléphones mobiles disponibles, à leurs caractéristiques, leurs firmwares et leurs bugs. Le portage, c’est-à-dire la ré-écriture de l'application pour chaque téléphone différent, reste nécessaire en raison de cette hétérogénéité.

Note

  1. ce n'est pas toujours vrai car le développeur peut avoir supposé certaines choses lors du développement de l'application, qui ne sont plus vraies lors du changement de système d'exploitation. Un des cas qui peut survenir est celui du caractère séparateur dans les chemins de fichiers, qui est '/' (pour les systèmes UNIX) et '\' (pour Windows).
  2. de manière plus ou moins optimisée
  3. (en) Technologic Systems Designs NetBSD Controlled Toaster

Voir aussi


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Portabilité (informatique) de Wikipédia en français (auteurs)

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • Portabilite (informatique) — Portabilité (informatique) Pour les articles homonymes, voir Portabilité. La portabilité désigne pour un programme informatique sa capacité à fonctionner plus ou moins facilement dans différents environnements d exécution. Les différences peuvent …   Wikipédia en Français

  • Portabilite — Portabilité Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom …   Wikipédia en Français

  • portabilité — [ pɔrtabilite ] n. f. • 1849; de portable 1 ♦ Dr. Caractère de ce qui est portable (2o) . 2 ♦ (1973) Inform. Caractère de ce qui est portable (4o). Portabilité des progiciels. ● portabilité nom féminin Caractère d un appareil, d un matériel… …   Encyclopédie Universelle

  • INFORMATIQUE ET SCIENCES HUMAINES - Art et informatique — L’utilisation d’ordinateurs pour des fins artistiques s’inscrit dans la généralisation de l’emploi de l’outil informatique. Mais elle résulte aussi d’un détournement: l’ordinateur, en effet, n’a pas été conçu pour l’art. Ses caractéristiques… …   Encyclopédie Universelle

  • portabilité — ● n. f. ►PROG Caractéristique d un programme, d une instruction qui est portable, qui donc pourra s exécuter avec un minimum de modifications sur plusieurs systèmes …   Dictionnaire d'informatique francophone

  • Portabilité — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Sur les autres projets Wikimedia : « Portabilité », sur le Wiktionnaire (dictionnaire universel) Selon le contexte, le mot portabilité peut …   Wikipédia en Français

  • Java (informatique) — Java (langage) Pour les articles homonymes, voir Java.  Ne doit pas être confondu avec JavaScript …   Wikipédia en Français

  • Interpretation (informatique) — Interprète (informatique) Pour les articles homonymes, voir Interprète et Interpréteur. Un interprète, ou interpréteur (voir infra), est un outil informatique ayant pour tâche d analyser, de traduire et d exécuter un programme écrit dans un… …   Wikipédia en Français

  • Interprete (informatique) — Interprète (informatique) Pour les articles homonymes, voir Interprète et Interpréteur. Un interprète, ou interpréteur (voir infra), est un outil informatique ayant pour tâche d analyser, de traduire et d exécuter un programme écrit dans un… …   Wikipédia en Français

  • Interprétation (informatique) — Interprète (informatique) Pour les articles homonymes, voir Interprète et Interpréteur. Un interprète, ou interpréteur (voir infra), est un outil informatique ayant pour tâche d analyser, de traduire et d exécuter un programme écrit dans un… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”