Esecuzione di Java bytecode su Android-Sun JVM in cima a DalvikVM


Poiché sia l'implementazione java (OpenJDK) che la macchina virtuale di Android DalvikVM sono opensource, deve essere possibile implementare JavaVM di Sun su DalvikVM di Google. Ciò renderebbe possibile eseguire app e lingue basate su JVM (Clojure, Jython) out-of-the-box su Android.

C'è uno sforzo in corso per produrre una tale implementazione della JVM Sun?

Author: Alex Miller, 2009-03-22

7 answers

OpenJDK fa uso di codice nativo quindi sarebbe una porta non banale... c'è almeno una VM (JikesRVM) che è scritta in Java, sfortunatamente non è un'implementazione completamente funzionante di Java.

Poiché DalvikVM esegue le classi da cui sono state convertite .file di classe dovrebbe essere possibile convertire le classi sopra. Quindi l'unico problema è quando le lingue generano bytecode al volo-per questo richiederebbe il passaggio aggiuntivo di convertire il generato bytecode nel formato DalvikVM mentre il programma è in esecuzione sul DalvikVM.

Hmmm.... una sorta di JITT (Just In Time Translator) che copre i file di classe in un file DalvikVM in fase di runtime sul telefono. Mi chiedo quanto sarebbe lento.

 13
Author: TofuBeer, 2009-03-22 16:07:40

Il porting di OpenJDK sulla piattaforma Android è possibile. Ci sono sforzi come: Shark, Zero e caciocavallo che facilitano enormemente il processo di port (= no ASM, simple AWT peer). Inoltre Android non è altro che un kernel Linux dietro. L'unica domanda è quando sarà fatto da qualcuno ?

A proposito, sia gli iphone che i telefoni Android hanno un processore compatibile con Jazelle, qualcuno con abilità di hacking del processore molto forti sarebbe il benvenuto ad aggiungere il supporto Jazelle a OpenJDK. Così facendo, potremmo scegli tra: accelerazione delle risorse molto leggera (Jazelle) e JIT; -)

A proposito di iPhone, è la stessa cosa: una porta è possibile. Solo Apple ha inserito una sezione nella licenza iPhone che vieta chiaramente l'utilizzo della VM. Secondo la legge europea, per me, questa sezione di licenza non è legale. Due motivi: Non è possibile forzare/link acquisto di due del vostro prodotto. Qui mi sintonizzo e gli Iphone sono collegati. Non puoi rifiutarti di vendere qualcosa che puoi vendere. Qui non appena una VM sarebbe stata creata per iPhone, se viene rifiutato di essere messo sul negozio iTune, quindi questo punto si applicherà. C'è qualcuno che vuole chalenge licenza Apple legalità sulla terra ? Non la penso così, le persone infelici voleranno su Android o su qualsiasi altra piattaforma.

 9
Author: , 2009-09-29 10:23:52

Nel frattempo ho trovato una possibile soluzione (solo JavaME):

 1
Author: George, 2009-03-22 16:57:18

Tecnicamente dovrebbe essere possibile interpretare il byte-code hotspot su dalvik vm o il byte-code di dalvik su hotspot, ma non sarà mai efficiente (senza menzionare il design elegante) per un lungo periodo. il costo di farlo potrebbe diventare molto alto soprattutto per quanto riguarda la manutenzione nella futura evoluzione di un ecosistema così diviso.

Penso che, fin dall'inizio, dalvik vm sia una questione di potere/controllo del mercato piuttosto che uno sforzo innovativo per migliorare l'ecosistema delle macchine virtuali java. dalvik vm e hotspot vm sono lago due ponti autostradali attraverso lo stesso fiume costruire in parallelo cinque metri l'uno dall'altro. divide e porta confusione all'ecosistema tecnologico java.

Google è, a mio parere, sicuramente il leader tecnologico con contributi innovativi nel corso dell'ultimo decennio che nano molto più conservatore oracle, ma in questo stesso argomento hanno scosso l'ecosistema Java in modo quasi distruttivo. noi (programmatori) dovremmo lottare per un'unica soluzione uniforme a questo problema. questa è l'idea principale alla base del concetto di "macchina virtuale" in ogni caso-non dovrebbe appartenere né a Google né oracle.

 1
Author: jan, 2011-07-24 00:14:00

Non penso che il problema sia tecnico. In teoria è possibile migrare OpenJDK per l'iPhone per esempio, ma ci sono restrizioni legali in atto.

 0
Author: Peter Lawrey, 2009-03-22 13:14:46

Vedere http://davy.preuveneers.be/phoneme / per MIDP, Fondazione e profilo personale jvm per Android apk ARM. (Grazie Davy!!!)

Ho riconfezionato la jvm di base per l'uso della riga di comando e l'ho ospitata su vkfox.com/android/bin/foundation-jvm.bin per il tuo piacere. Si potrebbe usare il compilatore eclipse nell'app gratuita JavaIDEdroid, o i vecchi compilatori kopi o kopisusu con questa jvm, insieme al file cdc + foundation jar stubbed da un jdk J2ME per un bordo sistema di sviluppo. L'utilizzo delle funzionalità di TerminalIDE console console e sun compiler with con i jar ref indicati ti porterebbe anche lì. Questo è essenzialmente equivalente a un jdk1. 4 senza testa con la possibilità di grafica MIDP o awt.

 0
Author: user3258608, 2014-01-31 19:12:20

Prova l'app GNURoot (contenitore proot ptrace) con debian Wheezy;
apt-get update
apt-get installa openjdk-7-jre
/usr/lib/jvm / java-7-openjdk-armel/jre/bin / java ...
(compreso il percorso lungo)

 0
Author: user908510, 2014-09-05 12:08:18