# Programmazione Windows su Android: la soluzione open source che facilita il lavoro
Eseguire su un diverso sistema operativo un’applicazione che nasce per un’altra piattaforma, non è propriamente una passeggiata. Per avviare le applicazioni su una piattaforma diversa da quella nativa si possono usare diverse soluzioni: virtualizzazione, emulazione, containerizzazione, layer di compatibilità e, in alcuni casi, ambienti di esecuzione intermedi. Portare i **programmi Windows su Android** può rivelarsi utile in molteplici situazioni.
Innanzi tutto, si ha la possibilità di **eseguire applicazioni Windows** su una piattaforma diffusissima come Android senza la necessità di installare l’intero sistema operativo Microsoft. Eseguire programmi Windows su Android consente inoltre agli utenti di godere della flessibilità e della mobilità proprie dei device mobili, senza dover dipendere da un computer desktop oppure da un notebook.
# COS’È WINE E PERCHÉ È UN LAYER DI COMPATIBILITÀ
**Wine** (*Wine Is Not an Emulator*) è un’applicazione open source che consente di eseguire applicazioni sviluppate per il sistema operativo Windows su sistemi *Unix-like*, come Linux e macOS. A **differenza** di un **emulatore**, Wine non emula l’intero ambiente Windows, ma fornisce un’implementazione a *runtime* dei componenti Windows necessari per eseguire le applicazioni sulle piattaforme non native.
Le applicazioni Windows interagiscono con il sistema operativo sfruttando le **chiamate API** (*Application Programming Interface*) specifiche del sistema operativo di casa Microsoft. Wine implementa le API in modo tale che quando un’applicazione Windows richiama una funzione specifica, il programma può fornire un risultato equivalente, eseguibile su un sistema operativo diverso da quello Microsoft. Ecco perché si parla di Wine come **layer di compatibilità**: le chiamate API istanziate dai programmi Windows sono tradotte in modo che il sistema operativo sottostante (diverso da Windows) possa comprenderle e gestirle adeguatamente.
Il bello di Wine, che ha ormai raggiunto un notevole livello di maturazione, è che le runtime disponibili ricoprono **librerie** e **componenti di sistema** di Windows. Si pensi, ad esempio, alle varie **DLL** (*Dynamic Link Libraries*) che costituiscono la spina dorsale dei programmi Windows, ai servizi di rete, ai driver dei dispositivi e così via. Wine fornisce anche dei registri di sistema virtuali, per consentire alle applicazioni Windows di interagire con questo importante componente.
Un layer di compatibilità come Wine si occupa anche di gestire l’**interfaccia Grafica** e le modalità di input dei programmi Windows: è in grado di interfacciarsi con il sistema grafico del sistema operativo host per mostrare finestre, gestire tastiera, mouse, touchpad e altro ancora.
# COME ESEGUIRE PROGRAMMI WINDOWS SU ANDROID USANDO Software OPEN SOURCE
Uno dei prodotti commerciali più noti che aiuta a eseguire i programmi Windows su Android si chiama CrossOver. Il software è una versione modificata di Wine e integra diversi interventi a livello di compatibilità, migliori per rendere l’applicazione più facile da usare e offre alcuni strumenti per la virtualizzazione.
Observeremo due soluzioni open source che rendono tale processo ancor più fluido.
# WINLATOR
winlator è una soluzione open source che sfrutta proprio Wine e Box86/Box64 per supportare il **caricamento dei programmi** Windows su Android. Wine lo conosciamo già; **Box86/Box64** sono invece emulatori progettati per i dispositivi ARM64 che consentono di eseguire file binari x86 e x86_64 su tale piattaforma.
Box86 è progettato per eseguire binari x86 a 32 bit, mentre Box64 è la versione a **64 bit** progettata per gli eseguibili x86-64.
Per **usare winlator**, basta scaricare il file APK da GitHub, effettuare il download del file main.3.com.winlator.obb
quindi posizionarlo nella cartella /storage/emulated/0/Android/obb/com.winlator
(da creare se non esiste). A questo punto è sufficiente **avviare l’applicazione** e attendere che la conclusione del processo d’installazione.
# MOBOX
Un software open source che al momento assicura prestazioni superiori rispetto a winlator è mobox.
L’applicazione è progettata per eseguire applicazioni Windows in una finestra del **terminale Linux** su Android. **Termux** è un emulatore di terminale per Android che offre un ambiente *Linux-like* sui dispositivi mobili. Accanto ad esso, mobox utilizza i già citati Wine e Box64.
Per procedere, è necessario aver installato Termux, Termux-X11 e Input Bridge sul dispositivo Android in uso. A questo punto, è sufficiente aprire Termux e incollarvi il seguente comando:
“`shell
curl -s -o ~/x && . ~/x
“`
Scrivendo `mobox` all’interno di Termux, è possibile avviare immediatamente l’applicazione.
Ecco una breve spiegazione di Mesa VirGL, Turnip, Wine Mono e Gecko:
**Mesa** è una libreria grafica open source che fornisce implementazioni delle specifiche OpenGL, Vulkan e di altri driver grafici. **VirGL** è un progetto nato in seno a Mesa che mira a fornire un driver OpenGL per le macchine virtuali che utilizzano l’accelerazione Hardware della GPU host. **Turnip** è un driver open source per Vulkan destinato alle GPU Qualcomm Adreno mentre Wine Mono è un’implementazione open source del runtime .NET (*Common Language Runtime* – CLR) utilizzata per eseguire applicazioni .NET su Sistemi Operativi diversi da Windows. Wine utilizza **Wine Mono** per consentire l’esecuzione di applicazioni .NET su Linux e Android.
Infine, **Gecko** è il motore di rendering di Mozilla Firefox ed è utilizzato per supportare la corretta visualizzazione del contenuto delle pagine Web.
Eccoci dunque alla soluzione del problema, presenta suddette dovute opzioni, per poter usufruire di un utilizzo armonico delle piattaforme Windows e Android.
Credit immagine in apertura: iStock.com – juniorbeep