Exécution du bytecode Java sur la JVM Android - Sun au-dessus de DalvikVM


Étant donné que l'implémentation java (OpenJDK) et la machine virtuelle d'Android DalvikVM sont opensource, il doit être possible d'implémenter JavaVM de Sun sur DalvikVM de Google. Cela permettrait d'exécuter des applications et des langages basés sur JVM (Clojure, Jython) prêts à l'emploi sur Android.

Y a-t-il un effort continu pour produire une telle implémentation de la JVM Sun?

Author: Alex Miller, 2009-03-22

7 answers

L'OpenJDK utilise du code natif, ce serait donc un port non trivial... il y a au moins une machine virtuelle (JikesRVM) qui est écrite en Java, malheureusement ce n'est pas une implémentation complètement fonctionnelle de Java.

Puisque DalvikVM exécute des classes qui ont été converties à partir de .les fichiers de classe, il devrait être possible de convertir les cours. Ensuite, le "seul" problème est lorsque les langues génèrent du bytecode à la volée-pour cela, il faudrait l'étape supplémentaire de conversion du code généré bytecode au format DalvikVM pendant que le programme s'exécute sur le DalvikVM.

Hmmm.... une sorte de JITT (Traducteur juste à temps) qui convertit les fichiers de classe en fichiers DalvikVM à l'exécution sur le téléphone. Je me demande comment lent qui serait.

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

Le portage d'OpenJDK sur la plate-forme Android est possible. Il y a des efforts comme: Shark, Zero et caciocavallo qui facilitent grandement le processus de port (= pas d'ASM, pair AWT simple). De plus, Android n'est rien d'autre qu'un noyau linux derrière. La seule question est quand cela sera-t-il fait par quelqu'un ?

En passant, les iphones et les téléphones Android ont un processeur compatible Jazelle, quelqu'un avec de très fortes compétences en piratage de processeur serait le bienvenu pour ajouter le support Jazelle à OpenJDK. Ce faisant, nous avons pu choisir entre : très légère accélération des ressources (Jazelle) et JIT ;-)

A propos de l'iPhone, c'est la même chose : un port est possible. Seul Apple a mis une section dans la licence iPhone qui interdit clairement l'utilisation de la machine virtuelle. Selon le droit européen, pour moi, cette section de licence n'est pas légale. Deux raisons : Vous ne pouvez pas forcer/lien acheter deux de votre produit. Ici, je tune et les Iphones sont liés. Vous ne pouvez pas refuser de vendre quelque chose que vous pouvez vendre. Ici dès qu'une VM serait construite pour iPhone, si elle est refusé d'être mis sur le magasin iTune, alors ce point s'appliquera. Y a-t-il quelqu'un qui veut contester la légalité de la licence Apple sur terre ? Je ne pense pas, les gens malheureux voleront vers Android ou toute autre plate-forme.

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

En attendant, j'ai trouvé une solution possible (seulement JavaME):

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

Techniquement, il devrait être possible d'interpréter le code octet de hotspot sur la machine virtuelle dalvik ou le code octet de dalvik sur hotspot, mais il ne sera jamais efficace (sans mentionner le design élégant) pendant longtemps. le coût de cela pourrait devenir très élevé, en particulier en ce qui concerne la maintenance dans l'évolution future d'un tel écosystème divisé.

Je pense que, dès le début, dalvik vm est une question de pouvoir/contrôle du marché plutôt que d'efforts innovants pour améliorer l'écosystème de la machine virtuelle java. dalvik vm et hotspot vm sont deux ponts autoroutiers du lac traversant la même rivière construits en parallèle à cinq mètres l'un de l'autre. il divise et apporte de la confusion à l'écosystème technologique java.

Google est, à mon avis, certainement le leader technologique avec des contributions innovantes au cours de la dernière décennie qui éclipsent beaucoup plus conservateur oracle, mais dans ce même sujet, ils ont secoué l'écosystème java de manière presque destructrice. nous (programmeurs) devrions nous efforcer d'obtenir une solution unique et uniforme pour ce problème. c'est l'idée principale derrière le concept de "machine virtuelle" de toute façon - il ne devrait appartenir ni à Google ni à oracle.

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

Je ne pense pas que le problème soit technique. En théorie, vous pouvez migrer OpenJDK vers l'iPhone par exemple, mais des restrictions légales sont en place.

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

Voir http://davy.preuveneers.be/phoneme/ pour MIDP, Fondation et Profil personnel jvm pour Android ARM apk. (Merci Davy!!!)

J'ai reconditionné la jvm Foundation pour une utilisation en ligne de commande et je l'héberge à vkfox.com/android/bin/foundation-jvm.bin pour votre plaisir. On pourrait utiliser le compilateur eclipse dans l'application gratuite JavaIDEdroid, ou les anciens compilateurs kopi ou kopisusu avec cette jvm, ainsi que le fichier jar cdc + foundation stubbed d'un jdk J2ME pour une intégration système de développement. L'utilisation des fonctionnalités de TerminalIDE console console et sun compiler with avec des pots de référence indiqués vous y amènerait également. Ceci est essentiellement équivalent à un jdk1.4 sans tête avec la possibilité de graphiques MIDP ou awt.

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

J'ai besoin d'une application GNURoot (conteneur ptrace proot) avec debian Wheezy;
apt-obtenir la mise à jour
apt-get installer openjdk-7-jre
/usr/lib/jvm/java-7-openjdk-armel/jre/bin/java ...
(y compris le long chemin)

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