Я слышал несколько случайных сообщений от людей на форумах, утверждающих, что виртуальная машина Android Dalvik не может справиться с чем-то вроде эмулятора PS2, такого как этот, несколько портированный .
Это правда?
Существуют ли очевидные ограничения для массивной программы, работающей под управлением Dalvik, или рабочей нагрузки DVM?
С очевидным ограничением, связанным с аппаратным обеспечением, и большинство устройств имеют серьезные проблемы с этим именно по этой причине, есть ли какой-либо программный аспект , который может ограничить это, короче говоря?
Дело не в том, что Dalvik не может запускать определенные типы программ, а в производительности.
Любая система времени выполнения, основанная на неродном байт-коде (например, Dalvik, JVM, .NET CLR), влечет за собой некоторые накладные расходы на преобразование байт-кода в форму, которую может выполнять ЦП. Для большинства приложений это не проблема, так как большинство приложений относительно мало загружают процессор и проводят большую часть своего времени, просто ожидая ввода. Но эмулятор, как правило, является программой с интенсивным использованием ЦП, поэтому часто лучше реализовать его с помощью собственного кода, который не требует дополнительных затрат, связанных с запуском в Dalvik.
Dalvik эффективно ограничивает максимальный размер программы с точки зрения количества классов и методов Java, которые вы можете использовать. Я не знаю никаких эмуляторов, написанных на Java, поэтому я не знаю, будут ли они слишком большими или нет, но это раскрывает более важный момент: вы все равно не написали бы эмулятор на Java.
Большинство эмуляторов написаны на C или C++, часто с ключевыми частями на языке ассемблера хост-платформы для максимальной эффективности во внутреннем цикле. Вы можете сделать это на Android точно так же, как и на любой другой платформе: приложения для Android не обязательно должны быть написаны на Java. Если вы не пишете эмулятор на Java, не имеет значения, что Dalvik может, а что нет. Так что нет никаких причин, по которым у вас не может быть эмулятор PS2 на Android.