Включает ли Android технологию Jazelle ARM?

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

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

Какое количественное влияние на производительность Java?

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

Каков эффект на других платформах? (Т.е. x86, mips, yadda, yadda, yadda …)

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

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

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

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

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

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

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

Изменить : см. Википедию: Open Handset Alliance . В состав учредителя входят Intel, Motorola, Qualcomm и Texas Instruments. ARM присоединился год спустя в декабре 2008 года. Таким образом, я думаю, для этих компаний не было смысла полагаться на запатентованную технологию к тому времени не являющейся членом, когда целью было создание открытого iPhone / Blackberry конкурента.

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

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

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

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

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

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