Recherchez sur tout Techno-Science.net
       
Techno-Science.net : Suivez l'actualité des sciences et des technologies, découvrez, commentez
 A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | +
Portabilité (informatique)

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 (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...) logiciel (En informatique, un logiciel est un ensemble d'informations relatives à des traitements effectués automatiquement par un appareil informatique. Y sont inclus les...) (système d'exploitation). La différence d'environnement peut également porter sur une combinaison (Une combinaison peut être :) des deux éléments. C'est le cas par exemple dans les domaines de l'informatique (L´informatique - contraction d´information et automatique - est le domaine d'activité scientifique, technique et industriel en rapport avec le traitement automatique de...) 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.

Environnement d'exécution

La notion d'environnement d'exécution désigne l'ensemble (En théorie des ensembles, un ensemble désigne intuitivement une collection d’objets (les éléments de l'ensemble), « une multitude qui peut...) (physique ou logiciel) qui exécutera les instructions du programme. Cet environnement peut avoir différents aspects suivant le langage de programmation (Un langage de programmation est un langage informatique, permettant à un être humain d'écrire un code source qui sera analysé par une machine, généralement un ordinateur. Le...) utilisé où le type de programme.

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

  • le système d'exploitation pour les langages compilés,
  • l'interpréteur pour les langages interprétés,
  • la machine virtuelle (Le sens originel de machine virtuelle (ou Virtual Machine (VM) en anglais) est la création de plusieurs environnements d'exécution sur un seul...) pour des langages qui peuvent être pseudo-compilés comme le Java ou le C#,
  • le navigateur pour les applications web,
  • l'architecture (Architectures est une série documentaire proposée par Frédéric Campain et Richard Copans, diffusé sur Arte depuis 1995.) matérielle pour les systèmes d'exploitation.

Plus petit dénominateur commun

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, ont 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 (La programmation dans le domaine informatique est l'ensemble des activités qui permettent l'écriture des programmes informatiques. C'est une étape importante de la conception de...), 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 (POSIX est le nom d'une famille de standards définie depuis 1988 par l'IEEE et formellement désignée IEEE 1003. Ces standards ont...)

La portabilité d'un programme est une bonne chose de par le fait qu'elle permet à ce dernier de toucher (Le toucher, aussi appelé tact ou taction, est l'un des cinq sens de l'homme ou de l'animal, essentiel pour la survie et le développement...) 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 (Les Foúrnoi Korséon (Grec: Φούρνοι Κορσέων) appelés plus...) 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 (Une norme, du latin norma (« équerre, règle ») désigne un état habituellement répandu ou moyen considéré le plus souvent comme une règle à suivre. Ce terme...) POSIX, qui définit plusieurs fonctionnalités que doit fournir un système UNIX, comme ses commandes de base et son 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...). 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 (Le temps est un concept développé par l'être humain pour appréhender le changement dans le monde.) réel.

Qt, GTK+, wxWidgets, etc.

Bien que POSIX offre des fonctionnalités évoluées, il en manque toujours une qui est largement utilisée de nos jours, l'interface (Une interface est une zone, réelle ou virtuelle qui sépare deux éléments. L’interface désigne ainsi ce que chaque...) graphique. C'est pour cette raison que des bibliothèques telles que Qt, GTK+ ou encore wxWidgets ont vu le 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...). 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 (L'instant désigne le plus petit élément constitutif du temps. L'instant n'est pas intervalle de temps. Il ne peut donc être considéré comme une durée.), les bibliothèques logicielles telle que POSIX ou Qt se limitent à la portabilité au niveau du code source (Le code source (ou les sources voire le source) est un ensemble d'instructions écrites dans un langage de programmation informatique de haut niveau, compréhensible par un être humain entraîné,...). 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

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 (Le tout compris comme ensemble de ce qui existe est souvent interprété comme le monde ou l'univers.) 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 (Au sens strict, Linux est le nom du noyau de système d'exploitation libre, multitâche, multiplate-forme et multi-utilisateur de type UNIX créé par...), Mac OS (Mac OS (pour Macintosh Operating System) est le nom du système d'exploitation d'Apple pour ses ordinateurs Macintosh. Il est surtout connu pour être le premier système grand public ayant une interface...), FreeBSD (FreeBSD est un système d'exploitation UNIX libre. Le nom vient de l'association d'une part de free qui signifie à la fois libre (liberté) et gratuit dans l'anglais courant, et d'autre part de BSD (Berkeley Software...) ou encore Solaris).

Le langage de programmation de Microsoft (Microsoft Corporation (NASDAQ : MSFT) est une multinationale américaine de solutions informatiques, fondée par Bill Gates et Paul Allen, dont le...), C# dispose également d'une machine virtuelle, mais il est destiné à fonctionner uniquement sur 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 la sortie de Windows 95,...). Cependant, le projet (Un projet est un engagement irréversible de résultat incertain, non reproductible a priori à l’identique, nécessitant le concours et l’intégration d’une grande diversité de...) 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 (Universal Binaries ou UB, façon d'Apple de désigner un fichier binaire qui peut s'exécuter nativement sur les processeurs Intel et PowerPC. Universal Binaries a...) d'Apple (Apple, Inc. (Apple Computer, Inc. jusqu'en janvier 2007 ; apple signifie « pomme » en anglais) (NASDAQ : AAPL) est une société multinationale dont l'activité principale...), ou des applications s'exécutent indifféremment sur architecture (L’architecture peut se définir comme l’art de bâtir des édifices.) PowerPC (Le PowerPC est une architecture de microprocesseurs développée conjointement par Apple, IBM et Freescale (ex-Motorola Semiconducteurs). Elle utilise un modèle RISC, privilégiant pipeline et jeu...) et x86 (La famille x86 regroupe les microprocesseurs compatibles avec le jeu d'instructions de l'Intel 8086. Cette série est nommée IA-32 (pour Intel architecture 32 bits) par...), mais uniquement sur Mac OS X (Mac OS X est une ligne de systèmes d’exploitation propriétaire développés et commercialisés par Apple, dont la version la...)

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 (NetBSD est un système d'exploitation libre de type unix BSD dérivé de 386BSD et de Net/2 (4.3BSD-Lite).), disponible sur plus de cinquante architectures matérielles (allant du superordinateur (Un superordinateur (ou supercalculateur) est un ordinateur conçu pour atteindre les plus hautes performances possibles avec les technologies connues lors de sa conception, en particulier en terme de vitesse de calcul.) 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ésoud 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
Source: Wikipédia publiée sous licence CC-BY-SA 3.0.

Vous pouvez soumettre une modification à cette définition sur cette page. La liste des auteurs de cet article est disponible ici.