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

Почему android построен на VM (Dalvik)

Мне любопытно узнать, что заставило google выбрать для разработки фреймворка Android на Java VM.

В процессе написания кода для андроида в течение почти 6 месяцев я заметил, что работающий код на виртуальной машине на ограниченной платформе ресурсов очень медленный. Существует много накладных расходов. Я знаю, что java переносится и т.д. И т.д., Вообще ли вообще невозможно использовать родные языки и получить как производительность, так и функции, предлагаемые виртуальной машиной? Для приложений, ориентированных на производительность, все еще заканчивается написание собственного кода и перенос его с помощью JNI,

Итак, почему Google выбрал этот конкретный стек:

  • Основанное на руке ядро ​​(понятно, ARM - лучшее для мобильных устройств)
  • Linux (с открытым исходным кодом)
  • Java VM (Мой вопрос)

EDIT: Я знаю java - JVM работает на одном уровне с приложениями С++ на моем сервере, но не на Android. Что касается андроида, это не так. Как мне кажется, код С++, завернутый в JNI, работает намного быстрее, чем Java-код (заметьте, что я даже проверил с тем же кодом из статического блока в java). Я соглашусь с вашим ответьте на любую другую платформу.

4b9b3361

Ответ 1

В Dalvik VM используется собственный байт-код, а не байт-код Java. Он разработан очень быстро (условно говоря). Я думаю, что часть "ВМ" его названия немного красная сельдь, так как люди склонны считать, что она будет "медленной", несмотря ни на что. Вы сами это сказали, вы работаете с "платформой с ограниченными ресурсами" - это, вероятно, ваша основная причина медленной производительности, гораздо больше, чем у Dalvik VM.

Отказ от ответственности: я не эксперт по Dalvik или Android в любом случае, форме или форме. Тем не менее, похоже, что люди склонны делать много предположений об Android на основе таких идей, как "он использует виртуальную машину" и "вы пишете приложения на Java", не глядя дальше на платформу.

Смотрите это видео для получения дополнительной информации, чем вы, вероятно, когда-либо хотели узнать на внутренних языках Dalvik VM (из Google I/O 2008).

Ответ 2

1) Java, насколько мне известно, является наиболее широко распространенным языком в университетах и ​​даже в средних школах/эквивалент. Он широко используется в профессиональном мире и имеет много кодовых баз данных, которые помогают разработчикам быстрее создавать более качественные приложения.

2) Накладные расходы - это не то, что отлично по сравнению с собственным кодом, особенно с хорошо продуманным кодом, оптимизированным JIT и контролируемым все более-хорошо спроектированным-gc.

Действительно, я думаю, что эти две причины могут оправдать, почему Java была выбрана в качестве основного языка для поддержки Android.

Ответ 3

Я думаю, что ключ - не думать о Java VM в том же смысле, о котором вы думаете о виртуализации Destkop или Server, - они очень разные. На самом базовом уровне Java VM (в данном случае Dalvik) является просто слоем перевода между байт-кодом, сгенерированным "компилятором", в собственный машинный код. Это виртуальная машина, но она не имеет таких же накладных расходов, как скажем, запуск Ubuntu в VirtualBox.

Ответ 4

Java-приложения были проверены (не всегда) так же быстро и плавно, как и приложения, написанные на таких языках, как c, С++ и т.д. Смотрите reference, просмотрите PDF файлы. Многие люди говорят, что java и vm медленны, не имея на самом деле большого количества доказательств или деталей - и эта ссылка идет на несколько деталей

Java - широко известный язык, и его легко подобрать. размещение sdk android android в руках всех этих людей, которые знают Java, уже позволяет рынку Android иметь большой потенциал для предоставления своим пользователям большого количества приложений.

отказ от ответственности: я не эксперт по этому вопросу, просто мои 2 цента