Запуск байт-кода Java на Android - Sun JVM поверх DalvikVM

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

Есть ли постоянные усилия по созданию такой реализации Sun JVM?


person George    schedule 22.03.2009    source источник
comment
Вы смогли запустить байт-код Java на телефоне Android? если да, то можете ли вы перечислить шаги ??   -  person inquisitive    schedule 10.08.2015


Ответы (7)


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

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

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

person TofuBeer    schedule 22.03.2009
comment
хм как запустить Vista в эмуляторе x86 внутри jvm в 1995 году? :) - person George; 23.03.2009
comment
все старое снова новое :-) - person TofuBeer; 23.03.2009
comment
Угу, но Android может запускать двоичные файлы Linux - person Heath Mitchell; 13.05.2021

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

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

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

person Community    schedule 29.09.2009

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

person George    schedule 22.03.2009

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

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

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

person jan    schedule 24.07.2011

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

person user908510    schedule 05.09.2014

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

person Peter Lawrey    schedule 22.03.2009
comment
Вот лицензионное соглашение для Android: разработчик .android.com / sdk /. Я не вижу здесь никаких юридических преград. - person George; 22.03.2009
comment
Кроме того, ОС Android находится под лицензией Apache и GPL: source.android.com/license. Так что никаких юридических ограничений нет. - person George; 22.03.2009

См. http://davy.preuveneers.be/phoneme/ для MIDP, Foundation и jvms личного профиля для Android-файлы ARM. (Спасибо, Дэви !!!)

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

person user3258608    schedule 31.01.2014