Il terminemultipiattaforma ininformatica può essere riferito ad unlinguaggio di programmazione, ad un'applicazionesoftware o ad un dispositivohardware che funziona su più di unsistema o appunto,piattaforma (es.Unix/Linux,Windows eMacintosh).[1] Esempi di linguaggi multipiattaforma sono:C,C++,Java,JavaScript,Perl,PHP,Python,Tcl,Erlang eREALbasic.
Molti linguaggi informatici adalto livello sono per loro stessa natura multipiattaforma, poiché sono definiti per unamacchina astratta (cfr. la macchina astratta C, lamacchina virtuale del Java e di altri linguaggi).
Tuttavia, per numerosi compiti, è necessario che il programma faccia riferimento a delleAPI che sono diverse sui diversisistemi operativi (gestione delle finestre, accesso all'hardware, funzioni per ilmultithreading ecc...). Ad esempio, sebbene il C++ di per sé sia multipiattaforma, un programma scritto perWindows che usa leAPI diWin32, solitamente non riuscirà ad esserecompilato anche su un sistemaUnix, in quanto le API che rendono disponibili quelle stesse funzionalità su Unix sono scritte diversamente.
Una soluzione comune è quella di realizzare una API intermedia, implementata in unalibreria che sia a sua voltaportabile, e quindi implementata in modo diverso per le diverse piattaforme (mantenendo invariata l'interfaccia). Il codice del programma vienelinkato a questa libreria. Un esempio tipico è quello delleinterfacce grafiche (GUI).
Molti linguaggi offrono una piattaforma costituita da librerie comuni (librerie standard), che permettono una copertura maggiore o minore delle esigenze tipiche di unprogramma.
Un altro problema è dato dal fatto che un linguaggio puònon specificare il comportamento di una certasintassi; in questo caso, il comportamento effettivo dipende dalla implementazione specifica in uso atempo di esecuzione, e ciò rende possibile scrivere un programma il cui corretto funzionamento si fondi su uno di questi comportamenti specifici (con la conseguenza che il programma non risulta portabile).
Inoltre, per alcuni linguaggi, compilatori diversi rispettano in modo diverso o incompleto lespecifiche del linguaggio stesso; in questi casi potrebbe essere necessario fare maggiore attenzione nella scrittura delcodice sorgente di un programma, prima di compilarlo su più sistemi.
Poiché fornire ecollaudare versioni compilate di un programma per ogniOS ed ogniCPU è praticamente impossibile, i progetti disoftware libero (open source), o che altrimenti permettono all'utente di compilare il propriocodice sorgente, possono essere consideratipiù multipiattaforma. Allo stesso modo, ilinguaggi interpretati o che richiedono unavirtual machine sono più multipiattaforma quando ognuno può compilarsela.Hotspot, la virtual machine diJava dellaOracle Corporation, è fornita solo sotto forma di binariprecompilati, con supporto per parecchie piattaforme (ma non tutte, nemmeno potenzialmente). Per esempio, Sun supportaGNU/Linux solo sull'architetturai386 (e parzialmenteAMD64) così che chiunque ha Linux su unPowerPC o su computerSPARC non può utilizzare Java, se non compilando nellinguaggio macchina nativo oppure utilizzando strumenti di terzi.
MolteAPI sono specifiche per una singola piattaforma. Si può dire che leOpenGL siano invece multipiattaforma perché non sono legate a un particolare sistema operativo, architettura CPU o marca di hardware grafico. API legate a una sola piattaforma possono essere ricreate sugli altri sistemi creando un livello di compatibilità, come ad esempio le librerieWINE, che consentono ai programmi che richiedono le librerie diWindows di poter funzionare su UNIX.
Ci sono anche estensioni multipiattaforma emiddleware per molti linguaggi di programmazione che permettono aiprogrammatori di compilare e far girare lo stessocodice sorgente con minimi ritocchi su piattaforme differenti. Alcuni esempi sono leQt e lewxWidgets.
Leapplicazioni Web sono normalmente utilizzabili da ogni piattaforma con qualsiasiweb browser, senza preoccuparsi del linguaggio col quale sono state scritte. Ciò è vero perché il codice gira su unserver (applicazionelato server) e la comunicazione con l'utente avviene soltanto attraverso l'HTTP e l'(X)HTML.
Lepagine web si dicono talvolta multipiattaforma ocross-browser se possono essere utilizzate da qualunque browser, o da tutti i browser recenti. Per produrre codice valido all'autore spesso occorre un'esperienza tale da "domare" le bizzarrie di alcuni browser poco conformi aglistandard, comeInternet Explorer.
Una pagina web contenente qualcosa non interpretabile da tutti i browser come i filmatiMacromedia Flash è ancora multipiattaforma se è navigabile anche da chi non possiede lo specialeplugin. Per esempio, con l'aggiunta di immagini a sostituire un contenuto multimediale.
L'accessibilità web multipiattaforma richiede la conoscenza di standard tecnici, se una pagina è accessibile da vari sistemi comescreen reader, browser basati sulBraille e piccoli dispositivi cometelefoni cellulari ePDA.
In questo caso il sistema multipiattaforma si basa sul creare un codice sorgente unico che viene poi integrato con sezioni di codice specifico quando deve essere compilato per una determinata piattaforma, in alcuni casi possono verificarsi esigenze che richiedano un interfacciamento differente con i comandi in quanto non interscambiabili oppure integrare funzioni specifiche di una determinata piattaforma.