Exécuter Java bytecode sur L'Android-Sun JVM en haut de DalvikVM

étant donné que l'implémentation java ( OpenJDK ) et la machine virtuelle 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 ) sur android.

Est-il un effort continu pour produire une telle mise en œuvre de la JVM de Sun?

18
demandé sur Alex Miller 2009-03-22 16:09:54

7 réponses

L'OpenJDK utilise le code natif pour que ce soit un port non-trivial... il y a au moins une VM ( JikesRVM ) qui est écrite en Java, malheureusement ce n'est pas une implémentation entièrement fonctionnelle de Java.

depuis DalvikVM exécute des classes qui ont été converties à partir .class files il devrait être possible de convertir les classes sur. Alors la" seule " question est quand les langues produisent bytecode à la volée - pour qu'il exigerait le supplément étape de conversion du bytecode généré au format DalvikVM pendant que le programme tourne sur le DalvikVM.

Hmmm.... une sorte de JiTT (Just In Time Translator) qui couvre les fichiers de classe à un fichier DalvikVM à l'exécution sur le téléphone. Je me demande comment lent qui serait.

13
répondu 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 du port (= no ASM, simple AWT peer). En plus, Android n'est rien d'autre qu'un noyau linux derrière. La seule question est quand cela sera fait par quelqu'un ?

soit dit en passant, les iphones et les téléphones android ont un processeur compatible Jazelle, quelqu'un avec de très bonnes compétences en piratage de processeur serait le bienvenu pour ajouter un support Jazelle à OpenJDK. Ce faisant, nous pourrions choisir entre: very light resource acceleration (Jazelle) et JIT; -)

sur iPhone, c'est la même chose : un port est possible. Seule Apple a mis une section dans la licence iPhone qui interdit clairement l'utilisation de VM. Selon la loi européenne, pour moi, cette section de licence est illégale. Deux raisons : Vous ne pouvez pas forcer/lien acheter deux de votre produit. Ici je tune et Iphones sont liés. Vous ne pouvez pas refuser de vendre quelque chose que vous pouvez vendre. Ici dès qu'une VM sera construite pour iPhone, s'il 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 Androïde ou n'importe quelle autre plate-forme.

9
répondu 2009-09-29 10:23:52

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

1
répondu George 2009-03-22 16:57:18

techniquement, il devrait être possible d'interpréter le code-octet hotspot sur le VM de dalvik ou le code-octet de dalvik sur le hotspot, mais il ne sera jamais efficace (ne pas mentionner élégant) de conception pour un long terme. le coût de cette opération pourrait devenir très élevé, notamment en ce qui concerne le maintien 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'effort innovateur pour améliorer java écosystème de machines virtuelles. les vm de dalvik et les vm de hotspot sont des ponts routiers construits en parallèle à cinq mètres l'un de l'autre. elle divise et confond 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 naine oracle beaucoup plus conservateur, mais dans ce même sujet, ils ont secoué l'écosystème java de manière presque destructive. nous (les programmeurs) devrait viser une unique solution à ce problème. c'est l'idée principale derrière le concept de "machine virtuelle" de toute façon il ne doit pas appartenir ni google, ni oracle.

1
répondu 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 il y a des restrictions légales en place.

0
répondu Peter Lawrey 2009-03-22 13:14:46

Voir http://davy.preuveneers.be/phoneme/ pour MIDP, de la Fondation et de Profil Personnel jvm pour Android BRAS apk. (Merci Davy!!!)

j'ai reconditionné la base jvm pour une utilisation en ligne de commande et l'héberger à vkfox.com/android/bin/foundation-jvm.bin pour votre plaisir. On pourrait utiliser le compilateur eclipse dans L'application libre JavaIDEdroid, ou les anciens compilateurs kopi ou kopisusu avec ce jvm, en combinaison avec le JAR de fondation de CDC+. fichier D'un J2ME jdk pour un système de développement embarqué. En utilisant les fonctionnalités de TerminalIDE -- console et sun compiler -- avec les jars de référence indiqués vous y rendriez aussi. C'est essentiellement l'équivalent d'un jdk1 sans tête.4 avec la possibilité de graphiques MIDP ou awt.

0
répondu user3258608 2014-01-31 19:12:20

essayez l'application GNURoot (Proot ptrace container) avec debian Wheezy;

apt-get update

apt-get install openjdk-7-jre

/usr/lib/jvm/java-7-openjdk-armel/jre/bin / java ...

(y compris long path)

0
répondu user908510 2014-09-05 12:08:18