XUL (XML User Interface Language)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 00:55, 27 декабря 2017.
XUL
XUL XML картинка.png
Парадигма Декларативный (язык разметки)
Разработчики Mozilla Foundation
Язык физической реализации C++
Платформа Gecko[1]
OS Кроссплатформенное программное обеспечение
Лицензия Mozilla Public License (MPL)
Портал: https://developer.mozilla.org/ru/docs/XUL
Главная реализация
Mozilla
Под влиянием
HTML, XML

XUL (XML User Interface Language) — это основанный на XML язык разметки динамического интерфейса, используемый в приложениях Mozilla. Так под аббревиатурой XUL понимают любое подмножество различный языков, основанных на XML и предназначенных для описания интерфейса. Так для Mozilla Foundation это будет сам XUL, для Java — Synth, Macromromedia — Flex, Microsoft Corporation — XAML.[Источник 1]

Общее описание

XUL позволяет создавать кроссплатформенные приложения с интерфейсами любой сложности, как использующие интернет, так и работающие локально. В приложениях легко изменить графику, всплывающие подсказки и расположение элементов так, чтобы их интерфейс отвечал требованиям бренда или был переведен на любой язык. Веб-разработчики, уже хорошо знакомые с Dynamic HTML (DHTML), легко изучат XUL и так же легко смогут создавать приложения с его помощью. Чтобы посмотреть примеры интерфейсов на XUL, откройте страницу XUL Periodic Table в браузере Firefox или любом другом браузере на движке Gecko.

Логотип платформы XULRunne

XUL разрабатывается в рамках проекта Mozilla и является частью платформы XULRunner. XUL разработан для создания интерфейсов в таких программах как браузеры, почтовые клиенты и т. д. Однако, XUL можно достаточно эффективно использовать для создания любых приложений, активно взаимодействующих с веб-ресурсами.

Тем не менее, XUL изначально предназначен для работы с Gecko в составе продуктов Mozilla, и его составляющие полностью контролируются процессом их разработки. Это позволяет Mozilla Foundation легко добавлять нужные им функции в ущерб стандартности (например, использования какого-нибудь другого языка). Как и в случае с HTML, XUL позволяет описывать интерфейсы посредством использования языка разметки, задавать внешний вид приложения используя CSS (Customer Service System) и определять поведение приложения используя JavaScript. Но в отличие от HTML, используя XUL, можно создавать динамику в пользовательском интерфейсе намного быстрее и удобнее. Например, выпадающее меню можно реализовать с помощью нескольких предназначенных для этого тегов, не требующих громоздкой конструкции на JavaScript и/или CSS, как это потребовалось бы в HTML.

на данном примере видно 3 кнопки, размещённые одна над другой в вертикальном («vbox») контейнере

XUL активно использовался для написания расширений для браузера Mozilla Firefox и почтового клиента Mozilla Thunderbird. Большая часть интерфейса этих двух программ написана на XUL. В августе 2015 Mozilla объявила использование XUL для создания расширений Firefox устаревшей технологией, от которой планируется отказаться в пользу WebExtensions. В форке Firefox Pale Moon планируется сохранить поддержку XUL.[Источник 2]

XUL является частью среды разработки кросс-платформенных интерфейсов, известной как XPFE[2]. Это полнофункциональный язык разметки, на объекты приложений, такие как окна, метки и кнопки. Язык соответствует стандарту W3C XML 1.0. Приложения, написанные на XUL, также могут использовать HTML, CSS, DOM, JavaScript. И главное, XUL пытается разделить представление данных и логику приложений. Делается это посредством следующих абстрактных слоев:

  1. Содержание (content): объявление окон и элементов пользовательского интерфейса ассоциированных с ними.
  2. Оформление (skin): включение CSS и изображений, определение вида приложения.
  3. Локализация (locale): текст, отображаемый в пределах приложения, распределен по специальным локальным файлам, что обеспечивает переносимость языка.

Теоретически XUL обеспечивает кросс-платформенные интерфейсы (по крайней мере на данный момент он доступен в операционных системах Windows, UNIX, Mac OS). Впрочем, первое яркое впечатление от технологии сразу же омрачает ее жесткая привязка к ядру Mozilla (Gecko).[Источник 3]

Особенности XUL

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

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

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

Пример языка разметки XUL

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<window id="vbox example" title="Example 3...."
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  <vbox>
    <button id="yes" label="Yes"/>
    <button id="no" label="No"/>
    <button id="maybe" label="Maybe"/>
  </vbox>
</window>

Интересный факт

Кстати говоря, с названием технологии связан один курьезный случай. Так сложилось, что аббревиатура XUL происходит от имени персонажа Зуул из фильма «Охотники за приведениями». Ключевой оказалась фраза из фильма «Нет больше Даны, есть только Зуул» трансформировавшаяся в слоган «Нет больше данных, есть только XUL». Может быть, именно по этому сообщество XUL так усердно следит за корректностью произношения названия языка.

Принцип работы XUL

XPFE очень похоже по структуре на DHTML, это очень хорошо видно, на иллюстрации

XUL является частью XPFE, кроссплатформенной среды, предназначенной для того, чтобы разрешить проблемы создания интерфейсов, которые будут работать под любой операционной системой. ( насчёт любой платформы это широко сказано, на данный момент поддерживается Windows, UNIX и MacOS).

  • JavaScript используется для развития функциональности.
  • CSS используется для дизайна, а язык разметки для создания наполнения. Разница лишь в том, что используется не HTML а XUL.

Сам по себе XPFE - платформо-независим, и все его компоненты основаны на открытых стандартах.[Источник 4]

Пример языка разметки XUL

Особенности настройки сервера

По умолчанию, ненастроенные сервера Apache и IIS отдают .xul файлы с заголовком text/plain. Что бы Mozilla правильно понимала XUL файлы, загруженные из сети, необходим заголовок application/vnd.mozilla.xul+xml. Добавьте строчку: application/vnd.mozilla.xul+xml xul в файл конфигурации mime.types Apache. Или, если у вас не прав на администрирование (обычная ситуация, когда вы покупаете виртуальный хостинг у провайдера) добавьте в файл .htaccess (или создайте его) в каталоге, где расположены XUL файлы, строчку:AddType application/vnd.mozilla.xul+xml xul

Особенности настройки Mozilla для разработки

Вы можете использовать специальные настройки Mozilla, которые значительно облегчат жизнь разработчику. Внести их можно набрав about:config в строке ввода адресса или сохранить их в user.js . Последний вариант более предпочтителен, если вы будете переустанавливать Mozilla/Firefox.

Параматр Установить Цель
browser.dom.window.dump.enabled true Включить диагностирующую функцию dump(). Результаты, помещённые к ней параметром, будут выведены в консоли.
javascript.options.strict true Более побробный отчёт в консоли JavaScript.
nglayout.debug.disable_xul_cache true По умолчанию, XUL-приложения кэшируются Mozilla. Во время отладки вы захотите, чтобы всё время подгружалась актуальная копия файла.
nglayout.debug.disable_xul_fastload true Отключаем ещё один кэш XUL
signed.applets.codebase_principal_support true Пропуск всех ограничений безопасности, кроме тех, которые требуют вмешательства пользователя.

Приложения с интерфейсом на XUL

Применение технологии XUL для RAD (Rapid Application Development, быстрая разработка приложений)

XULrunner

С точки зрения браузера или сервера, "понимающего" XUL, отдельное приложение на этом языке ничем не отличается от разметки HTML/JS: это тот же код, который сначала надо скачать с сервера (либо передать его отдельному серверу на обработку), потом преобразовать (отрендерить) и показать пользователю.

Можно запускать пользовательские приложения, расположенные в сети, а не на локальном диске клиента, и XULRunner – интерпретатор XUL-приложений. Эти приложения распространяются в виде обычного .jar архива с XUL-контентом и сопутствующими библиотеками (например, для поддержки ssl, LDAP или sqlite). Существует множество расширений для стандартных продуктов mozilla.org. Они добавляют необходимую для пользователей функциональность. Крайняя форма таких расширений это глобальные большие приложения, которые можно выделить в самостоятельные продукты. К сожалению, пользователь вынужден ставить себе браузер (или другой продукт) для запуска таких приложений, что затрудняет как распространение ПО на базе XUL из-за большого размера сопутствующего ПО, так и разработку из-за отсутствия отдельного приложения-интерпретатора, на котором можно производить процесс отладки.

XULRunner и XRE (XUL Runtime Evironment) - попытка избавиться от этой зависимости. XUL-приложения могут запускаться обычным образом: через программу-загрузчик (XULRunner) или с помощью встраиваемых библиотек для рендеринга (XRE или libxul). Кроме того, применение XULRunner позволяет устанавливать, обновлять и удалять приложения таким же способом, как и обычные программы mozilla.org (Firefox, Mozilla 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.

Mozilla 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.[Источник 5]

Примечания

  1. Платформа (свободный браузерный движок) Gecko https://ru.wikipedia.org/wiki/Gecko
  2. Mozilla application framework https://ru.wikipedia.org/wiki/Mozilla_application_framework
  3. Кроссплатформенный органайзер и календарь Mozilla Sunbird с открытым исходным кодомhttps://ru.wikipedia.org/wiki/Mozilla_Sunbird
  4. Свободный кроссплатформенный проигрыватель Songbird https://ru.wikipedia.org/wiki/Songbird
  5. Интегрированная среда разработки (IDE) для языков динамического программирования Komodo IDE https://en.wikipedia.org/wiki/Komodo_IDE
  6. Бесплатный текстовый редактор для динамических языков программирования Komodo Edit от ActiveState https://ru.wikipedia.org/wiki/Komodo_Edit
  7. Менеджер персональной информации Spicebird на основе кода Mozilla Thunderbird https://en.wikipedia.org/wiki/Spicebird
  8. Программа Instabird мгновенного обмена сообщениями в Интернете https://ru.wikipedia.org/wiki/Instantbird
  9. Опенсорсный медиапроигрыватель XULPlayer http://xulplayer.sourceforge.net/
  10. Микросхемы Cyclone3 семейства Cyclone3 LC http://altera.ru/sbis-pl-cyclone-III.html
  11. Свободный набор программ SeaMonkey https://ru.wikipedia.org/wiki/SeaMonkey
  12. Плагин (дополнение) Zotero к браузеру Firefox https://ru.wikipedia.org/wiki/Zotero

Источники/литература

  1. XUL // Mozilla. [2005-2017]. Дата обновления: 21.12.2017. URL: https://developer.mozilla.org/ru/docs/Mozilla/Tech/XUL (дата обращения:26.12.2017)
  2. XUL // Wikipedia. [2006-2017]. Дата обновления: 27.11.2017. URL: https://ru.wikipedia.org/wiki/XUL (дата обращения:26.12.2017)
  3. Языки описания интерфейсов // Habrahabr. [2006-2017]. Дата обновления: 02.08.2007. URL: https://habrahabr.ru/post/12778/ (дата обращения:26.12.2017)
  4. ВВЕДЕНИЕ В XUL // Xul. [2004-2017]. Дата обновления: 11.05.2004. URL: http://www.xul.ru/tutorial/0-Intro.php (дата обращения:26.12.2017)
  5. применение технологии XUL для RAD // Nestor. [2017-2017]. Дата обновления: 09.08.2011. URL: http://www.nestor.minsk.by/sr/2007/06/sr70616.html (дата обращения:26.12.2017)