Con Cider si possono eseguire le applicazioni iOS su Smatphone e Tablet Android
Alcuni studenti della Columbia University hanno compiuto una grande impresa: far funzionare le applicazioni iOS su Android. Sono riusciti ad ottenere questo risultato utilizzando un layer di compatibilità, chiamato Cider, tra le app iOS ed il S.O. Android che consente alle applicazioni del sistema operativo Apple di ‘girare’ senza emulatori o macchine virtuali e con una modesta riduzione di prestazioni.
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 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 un 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. Questa è la descrizione scritta dai ragazzi:
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.