Международная конференция разработчиков
и пользователей свободного программного обеспечения

Применение технологии XUL для RAD

Лепихов К.А., Гладков А.С. – Russian Mozilla Team – mozilla@mozilla.ru

LVEE 2006

Доклад является обзором языка XUL и среды разработки для него – XULRunner/libxul.
Дается краткое описание языка, его особенностей и что делает его привлекательным
для RAD. В конце доклада рассматриваются текущие продукты сообщества Mozilla и
других организаций, использующие в своей работе XULRunner.

почему XUL?

XUL или XML User Interface Language, это, как видно из его названия, язык,
который позволяет создавать достаточно богатые по функциональности
пользовательские интерфейсы, которые можно запускать (“отрисовывать”) как
стандартные приложения, так и загружать их из сети Internet. При этом
приложения на XUL можно легко настраивать, менять в них текст или графические
объекты, переводить на различные языки и т.д. Для программирования на XUL не
требуется специальных навыков, любой web-разработчик, знакомый с Dynamic HTML
(DHTML), сможет быстро выучить XUL и начать создавать свои приложения.

Отличительные особенности XUL:

  • Мощный язык разметки с поддержкой пользовательских элементов (widgets) (всех,
    которые поддерживаются платформой mozilla).
    В отличие от DHTML, с помощью которого можно создавать web страницы, с
    помощью XUL можно создавать переносимые приложения, содержащие окна, кнопки и
    ссылки.
  • Основан на существующих стандартах. XUL – это язык XML, основанный на
    стандарте W3C XML 1.0. Приложения, написанные на XUL, используют
    дополнительные стандарты W3C как HTML 4.0; Cascading Style Sheets (CSS) 1 and
    2; Document Object Model (DOM) Levels 1 2; JavaScript 1.5, включающий ECMA-262
    Edition 3 (ECMAscript); XML 1.0.
  • Межплатформенная переносимость. XUL может быть использован на любой
    платформе, поддерживаемой XULRunner.
  • Отделенная логика для отображения и формирования интерфейса.
  • Легкость локализации, модификации или настройки.

Таким образом, XUL является легким в освоении, гибким и переносимым языком для
RAD.

XULRunner

С точки зрения браузера или сервера, “понимающего” XUL, отдельное приложение на
этом языке ничем не отличается от разметки HTML/JS – это тот же код, который
сначала надо скачать с сервера (либо передать его отдельному серверу на
обработку), потом преобразовать (отрендерить) и показать пользователю
- т.е. можно запускать пользовательские приложения, расположенные в
сети, а не на локальном диске клиента, и XULRunner – это интерпретатор
XUL-приложений. Эти приложения распространяются в виде обычного .jar архива с
xul контентом и сопутствующими библиотеками (например, для поддержки ssl, ldap
или sqlite). Существует множество расширений (extensions) для стандартных
продуктов mozilla.org. Они добавляют необходимую для пользователей
функциональность. Крайняя форма таких расширений это глобальные большие
приложения, которые можно выделить в самостоятельные продукты. Но есть одна
проблема – пользователь вынужден ставить себе браузер(или другой продукт) для
запуска таких приложений, что затрудняет распространение ПО на базе XUL из-за
большого размера сопутствующего ПО и разработку из-за отсутствия отдельного
приложения-интерпретатора, на котором можно производить процесс отладки.
XULRunner и XRE (XUL Runtime Evironment) – попытка избавиться от этой
зависимости, позволяет запускать XUL приложения обычным образом: через
программу-загрузчик (XULRunner), или посредством встраиваемых библиотек для
рендеринга (XRE или libxul). Кроме того, применение XULRunner позволяет
устанавливать, обновлять или удалять приложения таким же способом, как и
обычные программы mozilla.org (Firefox или Thunderbird).

libxul

libxul является основным элементом в концепции развития Mozilla 2.0. Это будет
библиотекой, предоставляющей стабильный (или, как называют его разработчики,
“замороженный”) API для XUL приложений и встроенных приложений на базе Gecko.

На сегодняшний день обычная сборка mozilla-based приложения предоставляет много
различных разделяемых библиотек, которые являются как частью отдельных
компонентов, так и отдельными библиотеками с интерфейсами для различных
сторонних библиотек или протоколов (например ldap), но все они являются частью
Gecko (т.е. движка для рендеринга). libxul призвана заменить это многообразие на
одну статическую библиотеку, которая будет предоставлять Gecko и куда будут
входить все его составные компоненты (поддержка сетевых служб, DOM, рендеринг и
т.д). Все это позволит использовать прогрессивные технологии mozilla не только
в продуктах mozilla.org, но и в любой сторонней разработке, делая ее
переносимой между различными платформами, имеющую удобный и легкий GUI и
поддержку сетевых служб.

продукты на libxul/XULRunner

Еще год назад нельзя было сказать, что есть рабочие примеры применения
XULRunner, но с выходом первого стабильного предварительного релиза (stable
developer preview) список приложений на базе XULRunner заметно расширился.
Рассмотрим основных представителей:

Chatzilla

IRC клиент на базе кода mozilla. Использует XUL для отрисовки GUI. Одним из
первых перешел на XULRunner.

Firefox

Браузер на базе кода mozilla. Использует XUL для отрисовки GUI. Имеется тестовая
сборка использующая XULRunner. Полный переход планируется к Firefox 3.0.

Thunderbird

Почтовый клиент на базе кода mozilla. Использует XUL для отрисовки GUI. В
планах разработки – переход на XULRunner к версии 3.0.

Mozilla Composer

По словам основного архитектора Mozilla Composer Daniel Glazman, следующая
версия Mozilla Composer будет использовать XULRunner и код Nvu, визуального
(WYSIWYG) HTML редактора.

Songbird

Сетевой мультимедиа плейер. Использует код Firefox и XUL для отрисовки
интефейса и поддержки сетевых служб. Проект находится в активной разработке.
Имеются данные, что следующие версии будут использовать XULRunner.

Mozilla Sunbird

Календарь-планировщик. Проект находится в активной разработке. Имеются данные,
что следующие версии будут использовать XULRunner.