Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet

cr  01.04.2012      r+  22.10.2024      r-  22.10.2024      Pierre Pinard.         (Alertes et avis de sécurité au jour le jour)

En informatique, un logiciel « cross-platform » (« logiciel multiplateforme » ou « logiciel indépendant de la plate-forme ») est un logiciel fonctionnant sous plusieurs plates-formes informatiques (deux au minimum), les plates-formes pouvant être matérielles ou logicielles (systèmes d'exploitation Microsoft Windows, Linux, macOS, etc.).

Les logiciels « cross-platform » (« logiciels multiplateformes ») sont développés selon deux approches commençant par l'écriture du code source du logiciel dans un langage de programmation choisi, puis :

  1. Le code source est compilé
    Le code source est compilé pour produire directement un langage machine cible. Il est développé autant de compilateurs que de machines ou systèmes d'exploitation cibles. l'application « cross-platform » existe donc en autant de versions que de cibles. Cette approche privilégie la vitesse d'exécution.

    Par exemple :

    • Firefox est compilé, avec plusieurs compilateurs, pour exister sous Windows 32 bits, Windows 64 bits, OSX 64 bits, Linux 32 bits, Linux 64 bits, BSD, Solaris, tous les Systèmes d'Exploitation (SE) compatibles Unix, Android, OS/259, IRIX, RISC OS, SkyOS, BeOS et d'autres.

  2. Le code source est précompilé
    Le code source est précompilé pour produire un unique code intermédiaire totalement portable, le même pour toutes les machines et systèmes d'exploitation cibles (le terme de « p-code » est utilisé pour « pseudo-code » parfois dit « pré-code » ou « portable_code »). Il sera exécuté indirectement par une « machine virtuelle » (un interpréteur à deux couches, l'une recevant en entrée, et comprenant, le « p-code », l'autre fabriquant à la volée le code de la machine cible). Pour chacune de ces cibles il existe un interpréteur (une « machine virtuelle ») préinstallé. Cette approche « cross-platform » privilégie la simplicité du développement, du portage et de la compatibilité mais l'interpréteur (la « machine virtuelle ») est une étape intermédiaire qui a son propre temps d'interprétation (« overhead » ou « temps perdu »). Tout l'art de cette approche est de trouver le meilleur compromis entre le niveau de pré compilation du code source intermédiaire (le « p-code » doit le plus possible mâcher le travail de toutes ses « machines virtuelles ») et la vitesse de l'interpréteur local (la « machine virtuelle ») qui sert d'interface entre le code précompilé et le système d'exploitation cible ou le hardware cible.

    Par exemple :

    • Une application écrite en Java est précompilée pour produire un unique p-code Java intermédiaire. C'est exactement le même code intermédiaire qui sera exécuté sous toutes les plates-formes grâce aux interpréteurs spécifiques. La « JVM » (la « Java Virtual Machine ») est probablement le nom le plus connu de machine virtuelle. Elle est partout (il y a du Java dans votre réfrigérateur, dans votre voiture, etc.). La « JVM » (« Java Virtual Machine ») est tellement universelle qu'il existe des précompilateurs produisant du p-code Java à partir de nombreux autres langages de programmation afin d'assurer à une application une portabilité immédiate quasi universelle.

    • Une application écrite en Microsoft .Net tourne sous Unix, iOS et Android avec Mono de la société Xamarin (rachetée par Microsoft en 2016).

      PhoneGap est un framework destiné à faciliter la création d'applications mobiles pour différentes plateformes - Android, iOS, Windows Phone. Développé par Adobe Systems, il est basé sur Apache Cordova et distribué sous licence open-source.

    • Ionic, basé initialement sur AngularJS et Apache Cordova, permet de créer un code multisupport en utilisant des outils Web comme HTML, CSS, JavaScript, afin de générer des applications iOS, Android, Chrome, Windows Phone et bien d'autres. Les applications qui en résultent sont hybrides, ce qui signifie qu'elles ne sont ni vraiment natives, ni purement basées sur les langages HTML, CSS et JavaScript.

    • React Native est un framework créé par Facebook pour développer des applications mobiles iOS/Android. Cette technologie cross-plateform permet de gagner en productivité, tout en délivrant des applications natives de qualité.

    • Qt est un framework (une boîte à outils) pour développer des applications et widgets multiplateformes (« cross-platform ») avec des interfaces utilisateur graphiques classiques ou embarqués et des applications fonctionnant sous diverses plates-formes logicielles et matérielles avec peu ou pas de changement tout en restant des applications natives avec des capacités vitesses natives. Qt est actuellement développé par The Qt Company, une société cotée en bourse, et le projet Qt est open-source sous sa gouvernance, impliquant des développeurs individuels et des organisations travaillant pour faire progresser Qt. Qt est disponible sous les licences commerciales et open source, ainsi que sous les licences ouvertes GPL 2.0, GPL 3.0 et LGPL 3.0. Qt permet de développer la même application, le même widget… sous les plates-formes :

      • X11 (Qt pour X Window System [Linux, *BSD, HP-UX, Solaris, AIX, etc.])
      • Wayland (Qt pour Wayland (permet une transition transparente des applications Qt de X11 à Wayland).
      • Android (Qt pour Android, formellement connu sous le nom de « Necessitas »)
      • Sailfish OS (Qt pour SailfishOS, qui utilise Wayland).
      • Embedded Linux (Qt pour plates-formes intégrées: assistant numérique personnel, smartphone, etc. Existe en tant que plates-formes multiples en fonction de la technologie d'affichage. DirectFB, LinuxFB et EGLFS [plein écran EGL]).
      • Qt pour Windows (XP, Vista, 7, 8 and 10)
      • Qt pour Windows Phone (Windows Phone 8 en version 5.4 minimum; Windows Phone 8.1)
      • Qt Windows RT
      • Qt Windows CE
      • Qt macOS, iOS
      • Qt pour Integrity, QNX, VxWorks