Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

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