Multipiattaforma: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
Nessun oggetto della modifica
Riga 1:
'''Multipiattaforma''' può essere detto di un [[linguaggio di programmazione]], di un'applicazione [[software]] o di un dispositivo [[hardware]] che funziona su più di un [[sistema (informatica)|sistema]] o, appunto, ''piattaforma'' (es. [[Unix]]/[[Linux]], [[Microsoft Windows|Windows]] e [[Macintosh]]). Esempi di linguaggi multipiattaforma sono: [[C (linguaggio)|C]], [[C++]], [[Java (linguaggio)|Java]], [[JavaScript]], [[Perl]], [[PHP]], [[Python]], [[Tcl]], [[Erlang (linguaggio)|Erlang]] e [[REALbasic]].
 
Molti linguaggi informatici sono per loro stessa natura multipiattaforma - poiché per un sistema ad [[alto-livello]] e comprensibile all'essere umano di istruire una [[CPU]] non c'è bisogno di dipendere strettamente da un particolare sistema operativo. Comunque, per fare cose del tipo creare una [[interfaccia grafica]] ([[GUI]]) usando il sistema dei [[widget]], un programma sifa ''linka[[linking]]'' a delle [[libreria (informatica)|librerie]] che potrebbero essere specifiche per il sistema sul quale lo [[sviluppatore]] lavora. Sebbene il C++ di per sé è multipiattaforma, un programma scritto per [[Microsoft Windows|Windows]] che usa le [[Application programming interface|API]] di [[Win32]], ad esempio, solitamente non riuscirà ad essere compilato anche su un sistema [[Unix]]. Ci sono poi parecchie differenze su come gli sviluppatori dei vari [[compilatore|compilatori]] interpretano le [[specifica (informatica)|specifiche]] di un determinato linguaggio; in questi casi un programma potrebbe richiedere qualche accortezza in più prima di essere compilato su più sistemi.
 
Alcuni linguaggi di programmazione come [[Java (linguaggio)|Java]] sono stati disegnati per funzionare su ogni piattaforma che potesse usufruire di una [[virtual machine]]. Questi linguaggi, che usano il [[bytecode]] come rappresentazione compilata oppure che interpretano [[script]] direttamente, non hanno bisogno di essere compilati per un particolare [[sistema operativo]]. Le librerie native del sistema operativo non sono linkate[[Linking|legate]] dalal codice distribuito, bensì l'ambiente [[run time]] reimplementa molte delle stesse funzionalità o fornisce una connessione comune tra funzioni analoghe sui differenti sistemi. È possibile però creare applicazioni Java che "girano" solo su un particolare sistema, usando [[JNI]] o usando un compilatore ''bytecode-a-linguaggio_macchina'' (''bytecode-to-machinecode''); ciò non è necessario nella maggior parte dei casi.
 
Poiché fornire e [[collaudo|collaudare]] versioni compilate di un programma per ogni [[Sistema operativo|OS]] ed ogni CPU è praticamente impossibile, i progetti di [[software libero]] (o [[open source]]), o che altrimenti permettono all'utente di compilare il proprio ''object code'', possono essere considerati ''più'' multipiattaforma. Allo stesso modo, i [[linguaggi interpretati]] o che richiedono una ''virtual machine'' sono più multipiattaforma quando ognuno può compilarsela. [[Hotspot (informatica)|Hotspot]], la virtual machine di [[Java (linguaggio)|Java]] della [[Sun Microsystems]], è fornita solo sotto forma di binari [[precompilati]], con supporto per parecchie piattaforme (''ma non tutte'', nemmeno potenzialmente). Per esempio, Sun supporta [[Linux|GNU/Linux]] solo sull'architettura [[i386]] (e parzialmente [[AMD64]]) così che chiunque ha Linux su un [[PowerPC]] o su computer [[SPARC]] non può utilizzare Java, se non compilando nel linguaggio macchina nativo oppure utilizzando strumenti di terzi.