Il termine
multipiattaforma
in
informatica
puo essere riferito ad un
linguaggio di programmazione
, ad un'applicazione
software
o ad un dispositivo
hardware
che funziona su piu di un
sistema
o appunto,
piattaforma
(es.
Unix
/
Linux
,
Windows
e
Macintosh
).
[1]
Esempi di linguaggi multipiattaforma sono:
C
,
C++
,
Java
,
JavaScript
,
Perl
,
PHP
,
Python
,
Tcl
,
Erlang
e
REALbasic
.
Molti linguaggi informatici ad
alto livello
sono per loro stessa natura multipiattaforma, poiche sono definiti per una
macchina astratta
(cfr. la macchina astratta C, la
macchina virtuale
del Java e di altri linguaggi).
Tuttavia, per numerosi compiti, e necessario che il programma faccia riferimento a delle
API
che sono diverse sui diversi
sistemi operativi
(gestione delle finestre, accesso all'
hardware
, funzioni per il
multithreading
ecc...). Ad esempio, sebbene il C++ di per se sia multipiattaforma, un programma scritto per
Windows
che usa le
API
di
Win32
, solitamente non riuscira ad essere
compilato
anche su un sistema
Unix
, in quanto le API che rendono disponibili quelle stesse funzionalita su Unix sono scritte diversamente.
Una soluzione comune e quella di realizzare una API intermedia, implementata in una
libreria
che sia a sua volta
portabile
, e quindi implementata in modo diverso per le diverse piattaforme (mantenendo invariata l'interfaccia). Il codice del programma viene
linkato
a questa libreria. Un esempio tipico e quello delle
interfacce grafiche
(
GUI
).
Molti linguaggi offrono una piattaforma costituita da librerie comuni (
librerie standard
), che permettono una copertura maggiore o minore delle esigenze tipiche di un
programma
.
Un altro problema e dato dal fatto che un linguaggio puo
non specificare
il comportamento di una certa
sintassi
; in questo caso, il comportamento effettivo dipende dalla implementazione specifica in uso a
tempo di esecuzione
, e cio 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 le
specifiche
del linguaggio stesso; in questi casi potrebbe essere necessario fare maggiore attenzione nella scrittura del
codice sorgente
di un programma, prima di compilarlo su piu sistemi.
Poiche fornire e
collaudare
versioni compilate di un programma per ogni
OS
ed ogni
CPU
e praticamente impossibile, i progetti di
software libero
(
open source
), o che altrimenti permettono all'utente di compilare il proprio
codice sorgente
, possono essere considerati
piu
multipiattaforma. Allo stesso modo, i
linguaggi interpretati
o che richiedono una
virtual machine
sono piu multipiattaforma quando ognuno puo compilarsela.
Hotspot
, la virtual machine di
Java
della
Oracle Corporation
, e fornita solo sotto forma di binari
precompilati
, con supporto per parecchie piattaforme (
ma non tutte
, nemmeno potenzialmente). Per esempio, Sun supporta
GNU/Linux
solo sull'architettura
i386
(e parzialmente
AMD64
) cosi che chiunque ha Linux su un
PowerPC
o su computer
SPARC
non puo utilizzare Java, se non compilando nel
linguaggio macchina
nativo oppure utilizzando strumenti di terzi.
Molte
API
sono specifiche per una singola piattaforma. Si puo dire che le
OpenGL
siano invece multipiattaforma perche 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 compatibilita, come ad esempio le librerie
WINE
, che consentono ai programmi che richiedono le librerie di
Windows
di poter funzionare su UNIX.
Ci sono anche estensioni multipiattaforma e
middleware
per molti linguaggi di programmazione che permettono ai
programmatori
di compilare e far girare lo stesso
codice sorgente
con minimi ritocchi su piattaforme differenti. Alcuni esempi sono le
Qt
e le
wxWidgets
.
Le
applicazioni Web
sono normalmente utilizzabili da ogni piattaforma con qualsiasi
web browser
, senza preoccuparsi del linguaggio col quale sono state scritte. Cio e vero perche il codice gira su un
server
(applicazione
lato server
) e la comunicazione con l'utente avviene soltanto attraverso l'
HTTP
e l'(
X
)
HTML
.
Le
pagine web
si dicono talvolta multipiattaforma o
cross-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 agli
standard
, come
Internet Explorer
.
Una pagina web contenente qualcosa non interpretabile da tutti i browser come i filmati
Macromedia Flash
e ancora multipiattaforma se e navigabile anche da chi non possiede lo speciale
plugin
. Per esempio, con l'aggiunta di immagini a sostituire un contenuto multimediale.
L'accessibilita web multipiattaforma richiede la conoscenza di standard tecnici, se una pagina e accessibile da vari sistemi come
screen reader
, browser basati sul
Braille
e piccoli dispositivi come
telefoni cellulari
e
PDA
.
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.