Firefox для Android прекращает использование XUL

Разработчики проекта Mozilla приняли решение отказаться от использования языка XUL при создании интерфейса пользователя в версии Firefox для платформы Android. Вместо XUL будут использованы стандартные механизмы построения интерфейса, предоставляемые платформой Android. В качестве web-движка по прежнему остаётся Mozilla Gecko, который параллельно используется в версии Firefox для настольных систем. Загрузить код прототипа переработанной версии Firefox для платформы Android можно из специально созданного hg-репозитория.

По словам разработчиков проект пока находится на ранней стадии развития - в настоящее время создан начальный прототип и проводится согласование различных рабочих моментов с командами, занимающимися локализацией и созданием средств для разработки дополнений. Пока неизвестно когда работа будет доведена до готовности для конечных пользователей, но разработчики уверены, что проект не повлияет на развиваемые параллельно будущие выпуски Firefox для Android, которые находятся на этапе тестирования в ветках Beta и Aurora. Как минимум Firefox 8 и 9 для Android по прежнему будут базироваться на технологии XUL, включая недавно созданный новый интерфейс для планшетов.

В качестве трёх ключевых мотивов отказа от XUL в пользу NativeUI называется:

  • Уменьшение времени запуска - использование штатного Android API для построения интерфейса позволит заметно увеличить скорость запуска приложения, в основном за счет возможности параллельной загрузки части, ответственной за интерфейс, и движка Gecko, собранного при помощи Android NDK (Native Development Kit) в виде библиотеки. В итоге запуск браузера будет происходить за доли секунды, а не за несколько секунд;
  • Значительное уменьшение потребление памяти за счет исключения фазы интерпретации XUL-кода (сам интерпретатор XUL основан на JavaScript и остаётся в Gecko) и использования стандартных виджетов;
  • Увеличение отзывчивости интерфейса, так как родной API позволяет без лишних манипуляций выполнять такие операции как панорамирование и масштабирование. Кроме того, исчезает дополнительный интерпретируемый уровень, приводящий к большим накладным расходам.

Отказ от дополнительной прослойки в виде языка разметки XUL позволит существенно сократить потребление ресурсов, но сделает невозможным установку классических дополнений на базе XUL. Для создания дополнений можно будет использовать только систему Jetpack, которая, в отличие от XUL, не требует изучения особенностей внутреннего устройства браузера и базируется на стандартных web-технологий HTML, CSS и JavaScript. Кроме простоты разработки, достоинством Jetpack-расширений является возможность мгновенной активации дополнения, без перезагрузки браузера, и отсутствие требований к обеспечению совместимости с будущими версиями браузера. В настоящее время Add-on SDK, базирующийся на Jetpack, интенсивно продвигается разработчиками Mozilla и со временем должен вытеснить XUL.

Среди других проблемных моментов ухода от XUL называются потеря переносимости реализации интерфейса и необходимость внедрения новых методов локализации (в настоящее время процесс локализации достаточно плотно завязан на XUL). Что касается переносимости, то основной задачей XUL является обеспечение возможности создания интерфейса, который без изменения может работать на принципиально разных платформах. Интерфейс определяется на универсальном интерпретируемом языке, абстрагированном от особенностей какой-либо платформы. Переход на API Android сделает продукт специфичным для Android и не даст использовать связанные с интерфейсом наработки при создании версий Firefox для других мобильных платформ.

Кроме того, уход от XUL потребует переработки самой концепции формирования интерфейса - вместо самобытного оформления, браузер будет более плотно вписываться в программное окружение, станет походить на другие приложения для Android (см. скриншот) и будет базироваться на стандартных виджетах и элементах управления. Тем не менее, в новой версии планируется сохранить такие особенности, как интеллектуальная адресная строка Awesome Bar, сервис синхронизации Firefox Sync и поддержка навигации на основе вкладок, включая режим вывода эскизов открытых вкладок.

©  OpenNet