Sei studenti della Columbia University sono riusciti in una notevole impresa: far funzionare le applicazioni iOS su Android. Sono riusciti ad ottenere questo splendido risultato utilizzando un layer di compatibilità, chiamato Cider, tra le app iOS ed Android che consente di utilizzare le applicazioni del sistema operativo Apple senza emulatori o macchine virtuali e con una modesta riduzione di prestazioni.

A quanto pare, i programmatori hanno una discreta passione per gli alcolici ed un certo gusto per i giochi di parole. WINE, che è un acronimo ricorsivo che sta per WINE Is Not an Emulator, è un noto layer di compatibilità tra sistemi operativi UNIX-like (come Linux, BSD, OSX e così via) che permette di utilizzare i programmi Windows. “Wine” è anche la parola inglese per “vino” ed il logo del progetto è, infatti, un bicchiere di vino rosso. “Cider” è invece il sidro. Al momento non c’è un logo, ma sospettiamo di sapere quale sarà.

Ma cos’è un layer di compatibilità e perché conviene utilizzarlo? Si tratta, in pratica, di uno strato (traduzione letterale dell’inglese layer) che si interpone tra il sistema operativo ospite e l’applicazione che si vuole eseguire. In buona sostanza, il layer intercetta le chiamate di sistema e alle librerie dell’applicazione, le trasforma in chiamate compatibili con il sistema ospite e le inoltra a quest’ultimo.

Immaginatelo come un traduttore simultaneo: se vogliamo parlare con una persona che parla, ad esempio, cinese ma non conosciamo la lingua, possiamo assumere una persona che ci permetta di continuare a parlare italiano e contemporaneamente di riuscire a parlare con l’altra persona. Chiaramente il traduttore ha bisogno di qualche momento per tradurre tutto nella maniera corretta, quindi si ha una piccola perdita di tempo. Lo stesso avviene anche nel software (e la perdita di tempo si chiama overhead).

Cider si mette in mezzo e agisce da traduttore che traduce le chiamate in “linguaggio iOS” in “linguaggio Android” permettendo alle applicazioni di funzionare. Si tratta chiaramente di una semplificazione estrema e forse non formalmente corretta, ma aiuta a rendere l’idea.


Gli studenti della Columbia sono riusciti a creare un sistema che riduce l’overhead al minimo e permette sia di mantenere la compatibilità con gli applicativi per Android sia di eseguire applicazioni per iOS. Ecco cosa han fatto:

Presentiamo Cider, un’architettura di compatibilità tra sistemi operativi che può eseguire applicazioni compilate per ecosistemi mobili differenti, iOS o Android, insieme sullo stesso smartphone o tablet. Cider migliora il sistema operativo locale, Android, di un dispositivo con personas [identità] proprie di ogni thread gestite dal kernel che imitano l’interfaccia binaria applicativa di un sistema operativo esterno, iOS, permettendogli di eseguire binari esterni non modificati.

Si ottiene ciò usando una nuova combinazione di tecniche di compatibilità binaria inclusi due nuovi meccanismi: adattamento del codice al momento della compilazione e funzioni diplomatiche. L’adattamento del codice al momento della compilazione permette di riutilizzare codice sorgente esterno esistente sul kernel locale, riducendo lo sforzo di implementazione richiesto per supportare molteplici interfacce binarie per eseguire applicazioni locali ed esterne.

Le funzioni diplomatiche sfruttano personas per ogni thread e consentono alle applicazioni esterne di utilizzare le librerie locali per accedere ad interfacce proprietarie del software e dell’hardware. Abbiamo creato un prototipo di Cider e dimostrato che causa un overhead alle prestazioni modesto ed esegue insieme applicazioni iOS ed Android senza modifiche su un tablet Google Nexus che esegue l’ultima versione di Android.

Ogni thread ha una sua identità che, stando a quel che è possibile comprendere dalla documentazione, può essere gestita individualmente per avere la migliore configurazione possibile.

Chiaramente si tratta di un prototipo che dovrà essere rifinito e migliorato prima di poter essere realmente utilizzato. Tra le altre cose, al momento non funzionano molte delle interfacce come fotocamera, Bluetooth e GPS; questo causa dei crash nelle applicazioni se queste non sono state programmate per poter fare a meno di questi elementi.

I sei studenti continueranno a sviluppare Cider. Questo significa che fra qualche mese potremmo avere, potenzialmente, un framework più funzionante e funzionale dell’attuale per eseguire le applicazioni iOS su Android.

Via