Multipiattaforma

Disambiguazione – "Cross-platform" rimanda qui. Se stai cercando il termine dei videogiochi online, vedi Cross-platform (videogiochi).

Il termine multipiattaforma in informatica può essere riferito ad un linguaggio di programmazione, ad un'applicazione software o ad un dispositivo hardware che funziona su più 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.

Linguaggi di programmazione e applicazioni

[modifica | modifica wikitesto]

Molti linguaggi informatici ad alto livello sono per loro stessa natura multipiattaforma, poiché sono definiti per una macchina astratta (cfr. la macchina astratta C, la macchina virtuale del Java e di altri linguaggi).

Tuttavia, per numerosi compiti, è 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 sé sia multipiattaforma, un programma scritto per Windows che usa le API di Win32, solitamente non riuscirà ad essere compilato anche su un sistema Unix, 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 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 è 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 è dato dal fatto che un linguaggio può 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 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 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 più sistemi.

Limiti e soluzioni

[modifica | modifica wikitesto]

Poiché fornire e collaudare versioni compilate di un programma per ogni OS ed ogni CPU è praticamente impossibile, i progetti di software libero (open source), o che altrimenti permettono all'utente di compilare il proprio codice sorgente, 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, la virtual machine di Java della Oracle Corporation, è 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) 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.

Molte API sono specifiche per una singola piattaforma. Si può dire che le OpenGL 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 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.

Multipiattaforma e Web

[modifica | modifica wikitesto]

Le applicazioni Web sono normalmente utilizzabili da ogni piattaforma con qualsiasi web browser, senza preoccuparsi del linguaggio col quale sono state scritte. Ciò è vero perché 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 è ancora multipiattaforma se è navigabile anche da chi non possiede lo speciale plugin. 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 come screen reader, browser basati sul Braille e piccoli dispositivi come telefoni cellulari e PDA.

Multipiattaforma e Videogiochi

[modifica | modifica wikitesto]
Lo stesso argomento in dettaglio: Multipiattaforma (videogiochi).

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.

Toolkit e ambienti

[modifica | modifica wikitesto]

Esistono molti strumenti[2][3] che aiutano il processo di programmazione multipiattaforma:

  • 8°: un linguaggio di sviluppo che utilizza Juce come interfaccia grafica.[4] Attualmente supporta Android, iOS, Windows, macOS, Linux e Raspberry Pi.
  • Anant Computing: una piattaforma per applicazioni mobili che funziona in tutte le lingue indiane, comprese le loro tastiere, e supporta AppWallet e prestazioni native su tutti i sistemi operativi.
  • AppearIQ: una piattaforma che supporta il flusso di lavoro per lo sviluppo e la distribuzione di applicazioni in un ambiente aziendale. I contenitori inizialmente sviluppati rappresentano le funzioni hardware dei dispositivi mobili o dei tablet attraverso le API del codice HTML5, facilitando così lo sviluppo di applicazioni mobili eseguite su piattaforme diverse.
  • Boden: un framework per interfacce utente scritto in C ++.[5]
  • Cairo: una libreria di software libero utilizzata per fornire un'API basata sulla grafica vettoriale indipendente dal dispositivo. È stato progettato per fornire primitive di disegno 2D in diversi backend. Cairo è scritto in C e ha legami con molti linguaggi di programmazione.
  • Flutter: un framework UI multipiattaforma per Android e iOS sviluppato da Google.[6]
  • Cocos2d: un toolkit e un motore di gioco open source per lo sviluppo di giochi e applicazioni multipiattaforma 2D e 3D semplici.
  • Codename One: un framework open source Write Once Run Anywhere (WORA) per sviluppatori Java e Kotlin.
  • Delphi: IDE che utilizza un linguaggio basato sul Pascal per lo sviluppo.[7][8] Supporta Android, iOS, Windows, macOS, Linux.
  • Eclipse: un ambiente di sviluppo open source. Implementato in Java con un'architettura personalizzabile che supporta molti strumenti di sviluppo software. Sono disponibili componenti aggiuntivi per diversi linguaggi, tra cui Java e C ++.
  1. ^ Significato di Cross platform, su ehiweb.it. URL consultato il 10 agosto 2020.
  2. ^ Cross Platform App Development Tools You Need to Know About, su nandbox.com. URL consultato il 6 settembre 2024.
  3. ^ Top Cross-Platform App Development Frameworks, su www.velvetech.com. URL consultato il 6 settembre 2024.
  4. ^ JUCE 8 development platform released, su www.soundonsound.com. URL consultato il 6 settembre 2024.
  5. ^ Boden Cross-Platform Framework, su www.boden.io. URL consultato il 6 settembre 2024.
  6. ^ Flutter Desktop App Development, su attractgroup.com. URL consultato il 6 settembre 2024.
  7. ^ Delphi 11.2 Supercharges Cross-Platform Development, su blogs.embarcadero.com. URL consultato il 6 settembre 2024.
  8. ^ What Is Delphi Software, su www.softacom.com. URL consultato il 6 settembre 2024.

Voci correlate

[modifica | modifica wikitesto]

Altri progetti

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica