Варианты движка Javascript для Android (не WebKit)

Мы создали приложение HTML5 + Javascript и хотели бы перенести его на Android. Мы уже знаем, что WebKit не может запускать приложение HTML5, потому что

  • Гетерогенная кодовая база Android плохо поддерживает последние достижения HTML5

  • Мы используем WebGL

  • Сложный пользовательский интерфейс HTML5 слишком медленный для отображения на Android WebKit

Однако наша основная логика приложения по-прежнему находится в Javascript.

Сейчас ищут способы

  • Запуск логики приложения напрямую портированного (скопированного) Javascript

  • легко привязать себя к Android Java UI API

  • Создайте собственный пользовательский интерфейс Android на основе этой логики Javascript.

  • Создавайте привязки, совместимые с WebGL, для Android OpenGL ES и получайте доступ к графическому API из Javascript.

  • Надеюсь, JIT или достойная производительность

Какие варианты у нас есть для пользовательских сред выполнения JS на Android? Я знаю, что Firefox Aurora уже делает это; Firefox в большей степени основан на JS, и теперь они перешли с XUL на собственный пользовательский интерфейс Android в сборках Aurora.

Полученное приложение должно иметь производственное качество и распространяться на Android Market.


person Mikko Ohtamaa    schedule 11.01.2012    source источник


Ответы (2)


Если вам нужен весь HTML5 (и особенно WebGL), вам также понадобятся DOM API, которые не являются частью SpiderMonkey. SpiderMonkey — это всего лишь основной интерпретатор языка Javascript, и он не содержит привязок, специфичных для браузера, таких как объекты окна/документа/элемента. Так что на самом деле, если вы хотите HTML5+JS на Android, вам придется встроить весь браузер, что нелегко сделать с Firefox Aurora.

person staktrace    schedule 12.01.2012
comment
Я специально попытался уточнить, что мне нужен не HTML5, а собственный Java-интерфейс Android. Также нет примеров, как связать Spidermonkey с Android Java. - person Mikko Ohtamaa; 12.01.2012

Взгляните на новый родной код пользовательского интерфейса для Firefox Mobile, он включает в себя Gecko (и, следовательно, SpiderMonkey), и имеет все возможности контента Firefox для настольных компьютеров, включая WebGL.

Обратите внимание, однако, что Firefox Mobile раньше делал что-то очень похожее на то, что вы хотите: встраивать (и предоставлять необходимые API-интерфейсы доступа к устройствам) механизм Gecko, а затем выполнять весь пользовательский интерфейс и логику приложения с помощью XUL и JavaScript. Это приводит к значительным проблемам с производительностью и является основной причиной, по которой мы сейчас работаем над пользовательским интерфейсом Java для мобильных устройств.

Как упоминалось в staktrace, если вам нужен WebGL, вам понадобится DOM, а это значит, что вам понадобится Gecko целиком. Или вы можете использовать OpenGL ES напрямую с графическими API Android. Можно извлечь или повторно использовать часть кода Gecko WebGL и создать собственную привязку OpenGL JavaScript, но это будет не WebGL.

person Reuben Morais    schedule 16.01.2012
comment
Я обсуждал с разработчиками Firefox Mobile, и они сказали, что у них нет механизма моста для API Java. Вместо этого они обсуждают с SpiderMonkey (C) через JNI, используя специальный протокол JSON. - person Mikko Ohtamaa; 16.01.2012
comment
Также было бы достаточно любых привязок GL для Javascript... в WebGL мало специфичных DOM, и эти части можно легко заменить собственным кодом. - person Mikko Ohtamaa; 16.01.2012