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 humaine. Avec les enjeux écologiques actuels, le terme...) logiciel (En informatique, un logiciel est un ensemble d'informations relatives à des traitements effectués automatiquement par un appareil informatique. Y sont...) (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 embarquée (On désigne sous le terme informatique embarquée les aspects logiciels se trouvant à l'intérieur des équipements n'ayant pas une vocation purement informatique. L'ensemble logiciel,...), 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),...) (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,...) 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 (En informatique, un interprète (parfois appelé, à tort, « interpréteur » par mauvaise traduction de l'anglais) est un outil ayant pour tâche d'analyser, de traduire et d'exécuter un programme écrit dans un langage...) 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 ordinateur, dont chacun...) 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é (Selon le contexte, le mot portabilité peut avoir plusieurs significations :) d'un programme se mesure au fait qu'il utilise le plus petit dénominateur commun à plusieurs environnements. Ainsi, si une 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 mises à disposition afin de pouvoir être utilisées sans avoir à les...) 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 émergé d'un projet de standardisation des APIs des logiciels destinés à...)

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 des êtres vivants, l'exploration, la...) 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 communément Fourni, sont un archipel de petites îles grecques situées dans...) avec un environnement d'exécution particulier. Ainsi, les bibliothèques standards du C et du C++ ne connaissent pas le réseau (Un réseau informatique est un ensemble d'équipements reliés entre eux pour échanger des informations. Par analogie avec un filet (un réseau est un « petit rets »,...), 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...) 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....). 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 (En informatique industrielle, on parle d'un système temps réel lorsque ce système informatique contrôle (ou pilote) un procédé physique à une vitesse adaptée à...).

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 élément a besoin de connaître de l’autre pour pouvoir...) 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 (par rapport à...). 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 (En informatique, une chaîne de caractères est une suite ordonnée de caractères. La chaîne de caractères est un type de donnée dans de...).

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é...), 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...). 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é (La disponibilité d'un équipement ou d'un système est une mesure de performance qu'on obtient en divisant la durée durant laquelle ledit équipement ou système est...) 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 Linus Torvalds, souvent désigné comme le noyau Linux. 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...), 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...) 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 revenu annuel a atteint 44,28...), 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...). 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...) 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 été présenté lors de la WWDC 2005 lors de l'annonce du passage de...) d'Apple (Apple, Inc. (Apple Computer, Inc. jusqu'en janvier 2007 ; apple signifie « pomme » en anglais) (NASDAQ : AAPL) est une société...), 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 d'instructions...) 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 Intel pour...), 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 plus récente (Mac OS X 10.5 dit 'Leopard' fin 2007) est installée sur tous les Macs...)

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...) au grille-pain[3]).

Téléphonie mobile (La téléphonie mobile désigne toute l'infrastructure de télécommunication permettant d'utiliser des téléphones portables (que l'on appelle également téléphone mobile,...)

Dans le domaine de la téléphonie (La téléphonie est un système de télécommunication qui a pour but la transmission de son et en particulier la transmission de la parole.) 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 (Le téléphone est un système de communication, initialement conçu pour transmettre la voix humaine.) 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 (En informatique, un développeur (ou programmeur) est un informaticien qui réalise des logiciels en créant des algorithmes et en les mettant en œuvre dans un langage de programmation.) 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.
Page générée en 0.098 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 - Informations légales