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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

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

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

Ответ 3

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

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

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

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

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

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