Progetto punta a portare le applicazioni di iOS su Android

Uno dei più grandi problemi nella storia dell’informatica è stato la migrazione di un programma da un computer ad un altro: ogni processore ha infatti un suo “linguaggio”, spesso non compatibile con gli altri, formato da “uni” e “zeri” disposti in sequenze ben precise. Inizialmente i programmatori utilizzavano questo linguaggio, scrivendo i programmi in quello che è chiamato linguaggio macchina o codice binario, con tutte le ovvie limitazioni che questo comportava: la scrittura di un programma era valida solo ed esclusivamente per quei modelli di processore che condividevano quel linguaggio macchina e non era possibile utilizzare il programma su altri computer. Con l’avvento dei cosiddetti “linguaggi di alto livello”, ovvero linguaggi di programmazione che utilizzano strutture e parole semplici da comprendere per gli esseri umani, il problema si è parzialmente ridotto perchè era sufficiente affidarsi al compilatore ed eventualmente modificare alcune porzioni di codice per poter “portare” un programma da un computer ad un altro. Negli anni ’90 Sun, azienda californiana acquistata da Oracle nel Gennaio 2010, ha sviluppato il linguaggio Java: la particolarità di questo linguaggio è la sua estrema portabilità, data dal fatto che il codice scritto dal programmatore viene compilato in bytecode – ovvero il linguaggio macchina utilizzato dalla Java Virtual Machine, una sorta di “processore virtuale” che interpreta il bytecode – e successivamente interpretato nel linguaggio macchina del processore su cui viene eseguito il codice. Cosa significa questo? Il codice Java che io scrivo sul mio notebook con processore Intel ad architettura x86_64 è eseguibile anche sul mio telefono con processore ad architettura ARM Cortex A8, a patto che sia stata scritta la Java Virtual Machine che interpreta il bytecode.

Per fare un esempio pratico, questa è un’operazione di somma tra registri (piccole “celle” di memoria all’interno del processore che contengono dati) nel linguaggio macchina del MIPS R3000, processore prodotto intorno alla metà degli anni ’80 dalla MIPS Technologies:

00000001010111110000000000100000 (equivalente a "add $s0, $a1, $t7": somma i valori contenuti nei registri di memoria a1 e t7 e ponili nel registro s0)

Un’operazione molto simile in linguaggio Java potrebbe essere la seguente:

int s0 = 0; # s0 ha valore 0.
int a1 = 2; # a1 ha valore 2
int t7 = 4; # t7 ha valore 4
s0 = a1 + t7; # s0 assume il valore della somma di a1 e t7.

Anche se Java può sembrare incomprensibile a chi non ha familiarità con il mondo della programmazione, in realtà appare da subito come più comprensibile di una serie di 0 ed 1 solo apparentemente senza significato.

Uno dei punti forti di Android, motivo di una delle numerose dispute legali in corso con protagonista il robottino verde, è il forte utilizzo di Java: tutte le applicazioni sono scritte in tale linguaggio, potendo così essere eseguite da tutti i cellulari con sistema operativo Android. Vien da sè che sia relativamente più semplice scrivere una nuova Virtual Machine piuttosto che simulare un intero dispositivo – inclusi processore, fotocamera, schermo touch, connessione USB, connessione dati ecc – su cui dev’essere eseguito codice scritto esplicitamente per quell’hardware. Eppure un progetto, chiamato iEMU, sta puntando a creare un emulatore di iPhone con cui utilizzare le applicazioni per iOS su Android. L’emulatore, basato sull’emulatore open source QEMU, ha per ora il solo supporto della CPU Samsung S5L8930 (più comunemente conosciuta come Apple A4), anche se conta di poter trovare fondi con cui finanziare lo sviluppo tramite Kickstarter. Anche se è ancora solo all’inizio, il progetto appare promettente ed interessante soprattutto perchè porterebbe Android ad avere il più grande parco applicazioni mobile esistente. Se dovesse – e ce lo auguriamo – riuscire nel suo intento, il progetto porterebbe Android in una posizione di vantaggio assoluto rispetto ad iOS, potendo eseguire applicazioni provenienti da entrambi i mondi e (forse) rivoluzionando il mondo mobile. Chi volesse seguire lo sviluppo del progetto può farlo guardando questa pagina.


[Via androidandme.com]

Commenti

Ti invitiamo ad usare toni consoni e di rimanere in tema all'argomento trattato, in caso contrario, il sistema automatico potrebbe oscurare il tuo messaggio e potrebbero trascorrere fino a 48h per la verifica ed un'eventuale autorizzazione.
TuttoAndroid si riserva comunque il diritto di allontanare le persone non adatte a tenere un comportamento corretto e rispettoso verso gli altri.

  • pelonero111

    bè in ogni caso appena esce me lo scarico e finalmente potrò giocare a dragon's lair!!!

    • alex

      seeee.. :D usano qemu, anche l'emulatore dell'sdk android si basa su qemu e sappiamo tutti quanto sia lento anche su un buon desktop.. Se questa è la strada per il porting allora ci vorranno anni prima di avere un terminale che riesca ad emulare un iphone4 senza lag!
      L'alternativa "fattibile" sarebbe riscrivere le api e sviluppare una sorta di wine..

  • Gianluca

    non è un progetto ufficiale quindi apple non può fare causa a google, ma potrebbe rintracciare gli sviluppatori…
    in ogni caso se l'emulatore viene creato sicuramente lo faranno rimuovere dal market, ma ci sarà sempre un modo per utilizzarlo, quindi in ogni caso sarebbe un notevole passo avanti ^^

  • asd

    looool

    che bello!

    magari sarà illegale una volta fatto tutto apple fara causa, ma io lo uso lo stesso lol, non diventera magari molto famoso per colpa di apple, ma io lo utilizzerò lo stesso

  • MaxArt

    Progetto interessante ma ricordiamoci sempre che un'emulazione non riuscirà mai a replicare le performance dell'applicazione originale, anche se i dispositivi condividono la stessa architettura ARM.

    Una puntualizzazione: per eseguire bytecode Java per JVM ci vuole, appunto, una virtual machine capace di interpretarlo, e la Dalvik di Android NON lo è, sia perché rappresenta un'implementazione di Java diversa da quella classica J2SE, J2EE o anche J2ME, sia perché i pacchetti hanno un formato proprio diverso dai .class generati per la JVM di Sun.

    Nessuno impedisce di portare l'originale JVM su Android, comunque. Se non sbaglio c'era un progetto, in effetti.

    • slater91

      Grazie per la puntualizzazione, dovuta. Diciamo che ho voluto un po' semplificare le cose per chi non mastica molto la programmazione, mi è parso di aver messo dentro molti concetti in uno spazio estremamente piccolo e ho preferito non incasinare ulteriormente il tutto…

  • Sergio

    Apple non lo permetterà mai!!! Se il progetto avrà mai possibilità di successo Apple farà, questa volta devo dirlo, giustamente una causa da capogiro!! Dovrà difendere i suoi diritti sulle applicazioni nonchè quelli degli autori delle App che evidentemente hanno deciso di non pubblicare su Android. Meglio lwsciar stare…

    • Quoto i pieno!

    • MaxArt

      No, infatti, Apple non lo permetterà, anche perché si legge dalla stessa pagina ufficiale (e non poteva essere diversamente) che tutto si baserà su un pesante reverse engineering, pratica che in diversi casi è illegale.
      Certo qui non stanno a copiare delle icone con angoli smussati, ma tutta un'architettura…

      • taccoboss

        esempi di reverse engineering illegali?

Top