Android кастрирует технологию ARM Jazelle? - PullRequest
31 голосов
/ 20 июля 2009

Оправданием, которое я видел, скажем, «убитость» байт-кодов Java в Android, была производительность. (Я подозреваю, что есть и другая причина.) Однако, изменив байт-коды, они не сделали технологии аппаратного ускорения, такие как Jazelle moot, и, таким образом, фактически снизили производительность, доступную для платформы Mobile Java?

Мне кажется нелогичным, зная, что целевой платформой является мобильная платформа на основе ARM. Хотя он МОЖЕТ дать вам лучшую производительность на других архитектурах ЦП, он, кажется, плюет в лицо ARM и Jazelle.

Какой количественный эффект это оказывает на производительность Java?

Действительно ли это улучшает производительность, и если да, то как?

Что влияет на другие платформы? (то есть x86, mips, yadda, yadda, yadda ...)

Ответы [ 3 ]

17 голосов
/ 20 июля 2009

Да, Дальвик делает Джазель бесполезной. Вопрос только в том, была ли Jazelle полезной для начала или это рекламный шумиха на 90%? Хороший JIT или AOT (с опережением времени) компилятор имеет тенденцию давать гораздо лучшую производительность, чем пытаться использовать специализированные инструкции. Подход на основе регистров Dalvik может быть быстрее, чем у традиционного интерпретатора байт-кода Java, но если разница незначительна между интерпретатором и JIT. Надеемся, что одна из следующих версий Android имеет JIT.

Создание хорошей виртуальной машины с современными сборщиками мусора и оптимизаторами занимает ~ 5-10 лет. Sun (и Microsoft) провели эти годы. Google не имеет. Надеемся, что они будут продолжать инвестировать в него, чтобы однажды Java-код Android не оказался на 90% медленнее, чем должен быть.

5 голосов
/ 20 июля 2009

Википедия: Виртуальная машина Dalvik :

В отличие от большинства виртуальных машин и настоящих виртуальных машин Java, которые являются стековыми машинами, виртуальная машина Dalvik представляет собой архитектуру на основе регистров.

Оптимизированный для низких требований к памяти, Dalvik обладает некоторыми специфическими характеристиками, которые отличают его от других стандартных виртуальных машин:

  • ВМ была уменьшена, чтобы использовать меньше места.
  • Dalvik не имеет компилятора "точно в срок".
  • Пул констант был изменен для использования только 32-битных индексов для упрощения интерпретатора.
  • Он использует свой собственный байт-код, а не байт-код Java.

Кроме того, Dalvik спроектирован так, чтобы устройство могло эффективно запускать несколько экземпляров виртуальной машины.

Редактировать : см. Википедию: Альянс открытых телефонов . Член-основатель включает в себя Intel, Motorola, Qualcomm и Texas Instruments. Год спустя, в декабре 2008 года, к ARM присоединились. Поэтому, я полагаю, для этих компаний не имело смысла полагаться на запатентованную технологию, не являющуюся членом, когда целью было создать конкурента iPhone / Blackberry с открытым исходным кодом.

2 голосов
/ 20 июля 2009

На самом деле у меня сложилось впечатление, что Dalvik был предназначен больше для экономии пространства, чем эффективности исполнения. Также из Википедии:

Несжатый файл .dex обычно на несколько процентов меньше, чем сжатый .jar (архив Java), полученный из тех же файлов .class.

Хотя современные телефоны могут использовать ARM с поддержкой Jazelle, в будущем это не обязательно так.

Также из Википедии (предупреждение: слухи):

Опубликованные спецификации очень неполны, их достаточно только для написания кода операционной системы, который может поддерживать JVM, использующую Jazelle. Заявленное намерение состоит в том, что только программное обеспечение JVM должно (или может) зависеть от деталей интерфейса оборудования. Такое тесное связывание облегчает совместное развитие оборудования и JVM, не влияя на другое программное обеспечение. По сути, это дает ARM Holdings значительный контроль над тем, какие JVM могут использовать Jazelle. Это также предотвращает использование Jazelle JVM с открытым исходным кодом.

Как только они добавят JITter в Dalvik, это станет спорным вопросом.

...