Запуск Java-байт-кода на Android - Sun JVM поверх DalvikVM - PullRequest
18 голосов
/ 22 марта 2009

Поскольку реализация Java (OpenJDK) и виртуальная машина Android DalvikVM являются открытым исходным кодом, должна быть возможность реализовать JavaVM от Sun на вершине DalvikVM от Google. Это позволило бы запускать приложения и языки на основе JVM (Clojure, Jython) «из коробки» на Android.

Предпринимаются ли в настоящее время усилия по созданию такой реализации Sun JVM?

Ответы [ 7 ]

13 голосов
/ 22 марта 2009

OpenJDK использует собственный код, так что это будет нетривиальный порт ... есть хотя бы одна виртуальная машина ( JikesRVM ), написанная на Java, к сожалению, она не полностью работает реализация Java.

Поскольку DalvikVM запускает классы, которые были преобразованы из файлов .class, должна быть возможность преобразовывать классы заново. Тогда «единственная» проблема заключается в том, что языки генерируют байт-код на лету - для этого потребуется дополнительный шаг преобразования сгенерированного байт-кода в формат DalvikVM во время работы программы на DalvikVM.

Хммм .... что-то вроде JITT (Just In Time Translator), который покрывает файлы классов в файлах DalvikVM во время выполнения на телефоне. Интересно, как медленно это будет.

9 голосов
/ 29 сентября 2009

Возможно портирование OpenJDK на платформу Android. Есть такие усилия, как: Shark, Zero и caciocavallo, которые значительно упрощают процесс порта (= нет ASM, простой AWT peer). Плюс Android не что иное, как ядро ​​Linux позади. Вопрос только в том, когда это кто-нибудь сделает?

Между прочим, и на iphone, и на телефонах с Android установлен Jazelle-совместимый процессор, и кто-то с очень сильными навыками взлома процессора будет очень рад добавить поддержку Jazelle в OpenJDK. При этом мы могли выбирать между: очень легким ускорением ресурса (Jazelle) и JIT; -)

Про iPhone тоже самое: порт возможен. Только Apple поместила в лицензию на iPhone раздел, который явно запрещает использование виртуальных машин. В соответствии с европейским законодательством для меня этот лицензионный раздел является незаконным. Две причины: Вы не можете заставить / связать покупку двух ваших товаров. Здесь я настраиваюсь и Iphones связаны между собой. Вы не можете отказаться продавать то, что можете продать. Здесь, как только будет создана виртуальная машина для iPhone, если она не будет помещена в магазин iTune, этот пункт будет применяться. Есть ли кто-нибудь, кто хочет оспорить законность лицензии Apple на земле? Я так не думаю, несчастные люди будут летать на Android или любую другую платформу.

1 голос
/ 24 июля 2011

технически должно быть возможно интерпретировать байт-код горячей точки на dalvik vm или байт-код dalvik на горячей точке, но это никогда не будет эффективным (не говоря уже об элегантном) дизайне в долгосрочной перспективе. затраты на это могут стать очень высокими, особенно в отношении обслуживания в будущем развитии такой разделенной экосистемы.

Я думаю, что с самого начала dalvik vm - это вопрос контроля власти / рынка, а не инновационных усилий по улучшению экосистемы виртуальных машин Java. dalvik vm и hotspot vm являются озером двух автомобильных мостов через одну и ту же реку, построенных параллельно в пяти метрах друг от друга. оно разделяет и вносит путаницу в технологическую экосистему Java.

Google, по моему мнению, определенно является технологическим лидером с инновационным вкладом за последнее десятилетие, который затмевает гораздо более консервативного оракула, но в этом самом предмете они потрясли экосистему Java почти разрушительным образом. мы (программисты) должны стремиться к единому единому решению этой проблемы. это основная идея концепции «виртуальная машина» в любом случае - она ​​не должна принадлежать ни google, ни oracle.

1 голос
/ 22 марта 2009

Тем временем я нашел возможное решение (только JavaME):

0 голосов
/ 05 сентября 2014

попробуйте приложение GNURoot (контейнер proot ptrace) с Debian Wheezy;
apt-get update
apt-get установить openjdk-7-jre
/ usr / lib / jvm / java-7-openjdk-armel / jre / bin / java ...
(включая длинный путь)

0 голосов
/ 31 января 2014

См. http://davy.preuveneers.be/phoneme/ для jvms MIDP, Foundation и Personal Profile для Android ARM apks. (Спасибо, Дэви !!!)

Я переупаковал Foundation jvm для использования в командной строке и разместил его на vkfox.com/android/bin/foundation-jvm.bin для вашего удовольствия. Можно использовать компилятор eclipse в бесплатном приложении JavaIDEdroid или старые компиляторы kopi или kopisusu с этим jvm, вместе с заглушенным файлом cdc + foundation jar из J2ME jdk для встроенной системы разработки. Использование функций TerminalIDE - консоли и компилятора sun - с указанными ref jars также поможет вам в этом. Это по сути эквивалентно безголовому jdk1.4 с возможностью графики MIDP или awt.

0 голосов
/ 22 марта 2009

Не думаю, что проблема техническая. Теоретически вы можете, например, перенести OpenJDK на iPhone, но есть юридические ограничения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...