Основные концепции
1.3.2. Инновации
Платформа Mozilla не сводится к набору объектов и набору стандартов XML. В нее также включена инфраструктура, обеспечивающая обработку и применение приложений, спроектированных для использования этих объектов и стандартов.
Некоторые части данной инфраструктуры реализуют новаторские идеи. Большинство из них необходимо для создания, установки и работы приложений.
1.3.2.1. Chrome и инструментарий для разработки
Файлы, создаваемые при установке Mozilla, могут быть разделены на три части. Первая - набор файлов, индивидуальных для пользователя приложения, например, адреса электронной почты или закладки. Другая часть - набор исполняемых файлов платформы плюс несколько файлов настройки. Последняя часть - набор файлов приложения, хранящихся в каталоге под названием chrome. Chrome - центральная концепция приложений, основанных на Mozilla. Исследование этого каталога включено в раздел "Практика" данной лекции.
Внутри каталога chrome находится множество других каталогов, файлов данных, документов, скриптов, изображений и т.д. Все вместе содержимое каталога chrome, которое мы так и будем называть, chrome, представляет собой набор ресурсов. Этот набор ресурсов отвечает за любые элементы графического интерфейса, которые когда-либо оказываются доступны пользователю. Целое приложение может представлять собой только набор файлов в chrome.
Mozilla обращается к файлам в этом каталоге, используя собственную схему URL, chrome:. Пример такого URL:
chrome://notetaker/content/NoteTaker.xul
Адрес, начинающийся с chrome:, обычно - лишь частный случай адреса, начинающегося с resource:. Схема URL resource:, используемая в Mozilla, указывает на корневой каталог, куда установлены файлы платформы, поэтому предыдущий URL обычно эквивалентен такому:
resource://chrome/notetaker/content/NoteTaker.xul
Оба типа адресации представляют подмножество всех ресурсов, которые могут быть доступны с помощью URL file:. Однако адреса, начинающиеся с chrome: и resource:, обычно обрабатываются особым образом, поэтому адреса, начинающиеся с file:, не всегда могут заменять их.
Вообще говоря, все, что находится в каталоге chrome, переносимо. Хотя всегда есть исключения, приложения, установленные в chrome Mozilla для Microsoft Windows, будут обладать примерно такими же наборами файлов, как и приложения, установленные в UNIX или Macintosh. Документы XUL обычно хранятся в chrome.
Chrome - это больше, чем внешнее оформление для приложения, так как здесь может содержаться и графический интерфейс, и основная логика работы программы. Более всего chrome похож на развитый менеджер окон для X11 вроде Sawfish для GNOME (используется в ОС Linux/UNIX) или на расширенную тему оформления для Microsoft Windows. Возьмем для примера Sawfish. Sawfish можно настроить с помощью скриптов на каком-либо языке программирования. В результате обычно добавляются кнопки или украшения к строке заголовка окна. Sawfish недоступно внутреннее содержимое окна, поэтому украшения и кнопки могут находиться только на внешней его части. С другой стороны, действие chrome в Mozilla не выходит за пределы окна, но внутри него можно менять все, что угодно. Если бы программа Microsoft Word была создана на основе Mozilla и запускалась на UNIX, с помощью Sawfish можно было бы удалить эмблему W из строки заголовка окна, но поменять панели инструментов было бы нельзя. На рисунке 1.3 показана комбинация графических элементов управления Mozilla и Sawfish в одном окне. Окно содержит оформление Sawfish, строку состояния и панели инструментов, созданные с помощью chrome Mozilla, и простой HTML-документ.
Sawfish красиво оформляет строку заголовка окна, по меньшей мере, с четырьмя кнопками. Файлы в chrome добавляют ко внутренней части окна не менее двух панелей инструментов, меню, строку состояния и свернутую боковую панель. Все остальное - HTML.
В chrome также есть специальный файл под названием toolkit.jar. Это архив, содержащий набор наиболее часто используемых файлов. Самое важное в этом архиве - набор определений существующих тегов XUL, а также их значений. Так как приложения для Mozilla основываются на XUL, наличие этого файла и его содержимое жизненно важны для программистов, и без него работа значительно осложнилась бы. Этот инструментарий поставляется вместе со всеми версиями платформы. Во время разработки нового браузера Mozilla он претерпел небольшие изменения.
1.3.2.2. Оформление, темы, языковые и региональные настройки
Mozilla поддерживает механизм тем, которые позволяют менять внешний вид приложений, и систему локализации, позволяющую создавать интерфейс пользователя на разных языках. Обе системы работают внутри каталога chrome.
Отдельные темы строятся из файлов оформления. К ним относятся файлы, определяющие аспекты окон, не влияющие на размещение и форму этих окон, то есть цвета, шрифты и изображения. Файлы оформления - подмножество chrome, они автоматически используются при выборе темы браузера. "Тема" в нашем случае означает все файлы оформления, относящиеся к данной теме. Существуют разные коллекции тем для Mozilla, которые пользуются большой популярностью. В коммерческом мире темы - способ сделать внешний вид приложения индивидуальным и узнаваемым, соответствующим принятому стандартному оформлению, например, так можно добиться сходства с другими приложениями, используемыми в данной графической среде.
Адреса chrome изменяются в соответствии с текущим языком интерфейса браузера и текущей темой. Это значит, что поддержка и русской, и английской кнопки "Назад" (Back) зависит только от наличия файлов для этих языков в chrome.
1.3.2.3. Источники и адресаты данных
Внутри платформы широко используется новая система обработки данных на основе стратегии "поставщик-потребитель". Эта стратегия обычно используется в объектно-ориентированных языках и библиотеках функций. В платформу Mozilla включена поддержка инфраструктуры для нескольких сочетаний "поставщиков" и "потребителей", при этом особое внимание уделяется данным в формате RDF.
Такой подход означает, что часть кода отвечает за предоставление данных ("поставщик", в Mozilla это называется источником данных), а другая часть - за их обработку ("потребитель", в Mozilla это адресат данных). Такое разделение позволяет направлять потоки информации внутри платформы разными способами.
RDF - одна из сложных технологий W3C, и мы пока не будем подробно на ней останавливаться. Источники и обработчики данных внутри платформы дают программисту возможность перемещать информацию по приложению с помощью операций, очень похожих на используемые в работе с базами данных. В свою очередь, это делает платформу немного похожей на программу четвертого поколения для создания клиентов баз данных.
Самый сложный способ работы с источниками и обработчиками данных предполагает объединение данных в формате RDF для специальной обработки. Внутри браузера Mozilla источники и адресаты RDF-данных могут связываться промежуточной обработкой, которая будет играть роль фильтра.
С помощью такой фильтрации данные можно комбинировать и разбивать. Это происходит уже после того, как данные были предоставлены, но до того, как их передали адресату. В терминах информатики это простая система обработки знаний, что, конечно, не очень характерно для браузера.
1.3.2.4. Дополнительная функциональность
Помимо продуманной структуры платформа Mozilla отличается еще и тем, что пытается составить конкуренцию браузеру Internet Explorer от Microsoft. Чтобы достичь этой цели, у Mozilla должна быть какая-нибудь уникальная функциональность.
Ключевая особенность Mozilla - соответствие стандартам W3C. Но проблема в том, что пользователи не видят этого соответствия: если все работает как надо, это незаметно, поэтому в Mozilla добавлены еще некоторые бросающаяся в глаза особенности, позволяющие ей завоевывать рынок. Вот примеры таких особенностей:
- автозаполнение форм - Mozilla может запоминать, что было написано в этой или другой подобной форме в прошлый раз;
- поиск по мере набора - пользователь может перейти к любой ссылке на странице или любому слову, просто набирая их;
- быстрый запуск - Mozilla может запускаться быстрее, если будет частично храниться в памяти;
- автоматическое изменение размеров изображений - Mozilla может автоматически изменять размер слишком крупного изображения, чтобы оно помещалось в открытое окно браузера;
- фильтрация рекламных рассылок - в Mozilla встроена система, эффективно сортирующая рекламу ("спам").
Разработчики Mozilla стараются повышать производительность своего продукта, постоянно сравнивая ее с производительностью Internet Explorer и Opera. Регулярно предпринимаются шаги для удаления или замены неэффективного кода из платформы и браузеров, основанных на ней.
1.3.2.5. Работа с удаленными приложениями
Платформа Mozilla предоставляет два способа доступа к приложениям, разработанным для нее и расположенным на удаленном web-сервере.
Более простой метод - простая загрузка и запуск приложения. Как можно отобразить HTML-документ с формой для заполнения и отправки, так же можно локально загрузить и отобразить XUL-документ, давая пользователю возможность работать с окнами, меню и формами приложения. При этом приложение ведет себя как установленное локально; данный подход более всего напоминает некоторые методы Microsoft .NET.
Другой вариант - использовать технологию XPInstall. Это система удаленной установки, которая загружает архив с сайта и устанавливает его в локальный каталог chrome, то есть это приложение отныне будет доступным пользователю всегда. Процессом установки управляет специальный скрипт, а сам архив может содержать приложения, написанные на XUL, и другие файлы любых типов.
В обоих случаях на удаленные приложения накладываются небольшие ограничения, связанные с безопасностью, хотя при использовании правильного подхода эти ограничения можно и увеличить.