Россия, Звенигород |
Основные концепции
1.3.3. Cледствия
Наконец, некоторые свойства платформы появляются в результате взаимодействия множества меньших ее составляющих.
1.3.3.1. Интеграция с графическим интерфейсом
Mozilla - продукт, предназначенный для работы с графическим отображением, и этим она отличается от большинства проектов с открытыми исходными кодами вроде Apache. Apache просто использует подключение к сети и ожидает от нее запросы. Mozilla же тесно связана как с самим пользователем, так и с окружением, данным ей пользователем. Для работы с графическим интерфейсом различных систем в Mozilla предусмотрено несколько подходов.
На самом нижнем уровне Mozilla опирается на набор графических элементов управления из доступного набора текущей платформы. Это GTK на Linux, Win32 на Windows и инструментарий Macintosh. Существует версия Mozilla, использующая набор элементов Qt, но она долгое время не обновлялась; для X11 без GTK версии нет. Платформа обрабатывает ввод пользователем данных самостоятельно, используя механизм событий DOM 2.
На следующем уровне, уровне взаимодействия с рабочим столом, Mozilla реагирует на обычные события, отправляемые окнам: фокус, свертывание, закрытие. Ее поведение вполне предсказуемо в системах UNIX при работе почти со всеми менеджерами окон X11. Последние версии Mozilla поддерживают встроенные в Windows и GNOME 2.0 механизмы тем. Mozilla поддерживает выделение, вырезание и вставку текста, но эти операции иногда должны быть реализованы вручную и выполняются автоматически только в самых очевидных ситуациях. Mozilla также поддерживает копирование в буфер обмена содержимого смешанных форматов. Это значит, что часть форматирования выделенного куска текста может быть сохранена при вставке в другое приложение, например, Microsoft Word. Mozilla поддерживает стандартные операции при работе с мышью, например, перетаскивание внутри приложения, но, опять же, порой это приходится делать вручную. Аналогично, при перетаскивании какого- нибудь объекта в окно Mozilla ничего не произойдет и не будет никакого визуальной реакции на это действие, если такая ситуация не была предусмотрена программистом заранее. В большей части приложений Mozilla присутствует код, отвечающий за обработку подобных действий.
Наконец, на уровне приложений одной из самых сильных сторон Mozilla является язык описания графических элементов, XUL. Он позволяет связывать графические объекты простым и эффективным способом.
1.3.3.2. Переносимость
Mozilla можно запускать на самых разных ОС и в самых разных средах. На http://www.mozillla.org каждую ночь собираются тестовые версии платформы Mozilla, и сборки выкладываются в виде готовых для загрузки и установки файлов. Поддерживаются, по крайней мере, следующие операционные системы (ОС):
- UNIX: Linux i386/PowerPC, FreeBSD, HP-UX, Solaris i386/SPARC, AIX, Irix;
- миникомпьютеры: OpenVMS;
- персональные компьютеры: Windows 95/98/Me/NT/XP, MacOS 9.x/X, OS/2, BeOS.
Существуют также экспериментальные версии для таких систем как Amiga. Mozilla хорошо работает под ОС GNU/Linux, а эта ОС сама поддерживает большое количество разных аппаратных платформ. Вероятнее всего, стоит говорить о возможности Mozilla работать с любым аппаратным обеспечением, поддерживаемым GNU/Linux.
Переносимость Mozilla подразумевает не только возможность запускать ее в разном окружении. Большая часть реализованных функций идентична для всех сред. В частности, типы файлов, используемых для создания приложения Mozilla (XUL, CSS, DTD, properties, JavaScript, RDF и т. д.) - полностью переносимые форматы. Теоретически приложение Mozilla можно запускать на любой платформе, на которой может запускаться сама Mozilla, без каких-либо дополнительных усилий со стороны разработчика. На практике же незначительные различия приводят к тому, что лишь небольшое число приложений оказывается полностью переносимым без проведения дополнительного тестирования и внесения некоторых изменений.
1.3.3.3. Отсутствие проверки корректности документов
В мире сетевого программирования принято одно фундаментальное правило проектирования: отправлять данные только в соответствии со стандартом, но быть готовым получать все, что угодно, все, что можно обработать. Эта стратегия нацелена на увеличение использования стандартов в новых системах без отказа во взаимодействии со старыми.
Платформа Mozilla - приложение для работы в сети, часто получающее электронную почту, web-страницы и другие сообщения. Она следует правилу, приведенному выше, и его влияние видно программисту. За исключением режима полного соответствия стандартам для HTML, платформа интерпретирует получаемые XML-документы достаточно либерально, адаптируясь ко многим простым ошибкам, пропускам и дополнениям или игнорируя их.
Для конечного пользователя это хорошо, потому что надоедливые сообщения об ошибках сведены к минимуму. Для программиста все иначе. Добавить что-то новое в приложение Mozilla очень легко, но это новшество может никак не проявляться. Отсутствие какой-либо реакции может означать, что внесенные изменения не обработаны корректно, содержат опечатки или не реализованы вообще. Программисту при написании кода нужна более чувствительная к ошибкам система.
К счастью, основные проверки Mozilla выполняет правильно: XML- данные должны быть корректными, а JavaScript и CSS не должны содержать синтаксических ошибок. Конечно, это примитивные проверки, но и они полезны при работе в таких областях, где ошибки могут быть менее явными.
1.3.3.4. Расширяемость
Плюс Mozilla в том, что это не просто продукт, а платформа. К сожалению, минус ее в том, что она еще не такая гибкая или полная, как хотелось бы.
Тем не менее, она достаточно удобна, чтобы ее можно было расширять, внося различные изменения, от незначительных до фундаментальных. Можно добавлять новые объекты, в том числе объекты XPCOM, новые теги XML, новые темы или поддержку новых языков, наконец, можно добавлять приложения. При этом необязательно регистрировать все в каком-то центральном реестре или следовать логике авторов других приложений.
Так как исходный код платформы доступен всем, возможны какие угодно улучшения. А системы chrome и XPCOM Mozilla использовать очень легко, поэтому с ними можно экспериментировать как угодно. Некоторые эксперименты проводятся над внутренней структурой самой Mozilla, например, попытки ввести тег <canvas> для XUL. Людей, создающих экспериментальные расширения для Mozilla, объединяет сайт http://www.mozdev.org.
1.3.3.5. Безопасность
В Mozilla присутствуют те же функции защиты, что и в Netscape 4.x, плюс к ним еще добавлена модель поведения "только с того же узла". При ее использовании такие потенциально опасные операции, как, например, запись в файл, должны быть строго ограничены. Инструкция по выполнению такой операции, полученная с какого-то адреса в Internet (URL), может выполняться только над ресурсом с точно таким же адресом. Это ограничение позволяет апплетам Java обмениваться информацией только с собственным сервером. Подобным образом это ограничивает отправку HTML- и XUL-форм только на те серверы, с которых эти формы загружены.
Самым важным аспектом безопасности платформы является то, что на приложение, установленное в chrome, не налагается никаких ограничений, кроме ограничений самой операционной системы.
Работая с платформой, можно выбрать любую из моделей защиты, описанных в "Объекты XPCOM" , "Объекты XPCOM". В стандартную установку платформы включена поддержка большинства стандартов шифрования и работы с сертификатами.