IT News: Digital Camera, OS, Laptop, Smartphone, Smart TV, Sound...

The Author's Project by Valeri N.Kravchuk
Сайт проверен Dr.Web
Меню сайта
  • Главная страница
  • Информация о сайте
  • Дневник
  • Каталог файлов
  • Обратная связь
  • Каталог сайтов
  • FAQ
  • Доска объявлений
  • Форум
  • Фотоальбом
  • Категории раздела
    Автомобильные гаджеты, ремонт... [220]
    Безопасность IT [484]
    Блоки питания, Power Banks, зарядки... [489]
    Видеорегистраторы [220]
    Гаджеты для спорта и здоровья... [189]
    Гаджеты, аксессуары... [625]
    Измерительная техника, инструменты [444]
    Накопители данных [226]
    Нетбуки, Ноутбуки, Ультрабуки [679]
    Мультиварки, блендеры и не только... [158]
    Планшеты [758]
    Радар-детекторы [26]
    Роботы-пылесосы [37]
    Своими руками [353]
    Сети, сетевые технологии, оборудование... [267]
    Смартфоны [4963]
    Фотокамеры, объективы, искусство фотографии.. [542]
    Умный дом [47]
    Электронные книги [95]
    CB, LPD, PMR- связь... [169]
    DECT, IP-телефоны [18]
    Drones, boats, cars... [108]
    electric cars [35]
    GPS-навигаторы, трекеры... [51]
    Linux и не только [4380]
    mini computers и не только... [409]
    News IT, Это интересно, ликбез... [1112]
    Smart TV, UltraHD, приставки, проекторы... [414]
    Smart Watch [263]
    Sound: наушники, плееры, усилители... [613]
    Windows 10... [298]
    Windows 11 [28]
    Погода

  • Метеорадар БРЕСТ
  • Погода в Бресте от www.yr.no

    Яндекс.Погода БРЕСТ

  • Интересные ссылки

    COMPIZOMANIA

    Наш опрос
    Оцените мой сайт
    Всего ответов: 1338
    Статистика
    Анализ веб сайтов

    Яндекс.Метрика

    Рейтинг@Mail.ru Яндекс цитирования

    Russian America Top. Рейтинг ресурсов Русской Америки.

    eXTReMe Tracker

    Правильный CSS!


    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Locations of visitors to this page
    Форма входа
    Главная » 2013 » Декабрь » 9 » Архитектура Gnome: от GTK+ до Gnome Shell
    20:44
    Архитектура Gnome: от GTK+ до Gnome Shell
    Архитектура Gnome: от GTK+ до Gnome Shell

    GNOME: The Free Software Desktop Project

    Базовая архитектура

    Развитие Gnome всегда происходило эволюционным путем. Заложенные еще в самом начале проекта идеи до сих пор остаются базой для всех остальных компонентов, меняясь лишь качественно. Gnome сменил уже три версии GTK в качестве графического тулкита, идея межпроцессного взаимодействия, изначально реализованная на основе CORBA была заменена на более легковесный d-bus, сменилось несколько поколений мультимедийных фреймворков, были добавлены многие другие технологии, которые теперь являются частью Gnome 3.

    Одной из отличительных черт проекта Gnome всегда была идея заимствования кода из других проектов. Это может показаться странным, особенно в сравнении с KDE, но большая часть компонентов Gnome написаны вовсе не разработчиками самой среды, а командами, не имеющих с проектом ничего общего. Так, в Gnome используется графический тулкит GTK, изначально созданный для проекта Gimp, в качестве менеджера окон до недавнего времени был задействован Metacity, в качестве мультимедиа-фреймворка используется Gstreamer, который в свою очередь опирается на библиотеку ffmpeg. Firefox уже давно считается стандартным браузером среды наравне с Epiphany.

    Фактически, изначальная версия Gnome представляла собой всего-лищь несколько приложений, способных объединить уже существующие технологии для создания полноценной графической среды. Среди таких приложений были строка состояния, файловый менеджер, конфигуратор и небольшая библиотека libgnome с реализацией часто используемых функций. Со временем количество своих разработок в проекте возросло, но общая идея среды, построенной с использованием существующих компонентов осталась неизменной.

    Сами создатели Gnome условно делят свою разработку на несколько подуровней, в каждом из которых используются те или иные наработки сообщества. В этой статье мы детально рассмотрим все эти уровни и разберемся как разработчикам удается совместить воедино все это разнообразие технологий.

    Ядро

    Архитектурно Gnome представляет собой набор библиотек и различных механизмов, которые позволяют создавать сложные графические приложения, способные взаимодействовать с другими компонентами среды. На самом низком уровне этого каркаса находятся несколько базовых библиотек и фреймворков, среди которых glib, gobject, libgnome, d-bus и gvfs. Это фундамент Gnome, на котором базируются все остальные компоненты среды.

    Центральной частью этого фундамент является библиотека Glib, расширяющая базовые возможности библиотеки Libc и представляющая множество подсобных функций, необходимых для разработки многих типов приложений. Среди реализованной библиотеке функциональности можно отметить большой набор различных типов данных, механизм отладочных сообщений, функции для работы со строками, средства работы с динамической памятью, атомарные потоки и средства синхронизации, генератор псевдо-случайных чисел, синтаксический анализатор .ini-подобных конфигурационных файлов и многое другое.

    Изначально Glib была разработана в ходе работы над библиотекой GTK, но вскоре стала самостоятельной библиотекой, возможности которой используются многими графическими и консольными приложениями. Например, Glib активно используется файловым менеджером mc.

    На Glib также основана еще одна корневая библиотека проекта Gnome называемая Gobject. Она представляет объектную систему (каркас) используемую большинством других компонентов Gnome, а также библиотекой GTK+. Gobject позволяет применить принципы разработки ООП к любому поддерживаемому языку программирования (в первую очередь Си), позволяя создавать, копировать, уничтожать и выполнять другие операции над объектами.

    Чуть выше Glib и Gobject находится библиотека libgnome, реализующая ряд высокоуровневых возможностей, которые пригодятся при создании графических приложений и осуществления связи между компонентами графической среды. Библиотека включает в себя еще более полный Glib-подобных функций, инструменты интернационализации, хранения конфигурации, запуска новых приложений и т.д. В настоящее время библиотека объявлена устаревшей, а весь ее функционал постепенно переносится в Glib и другие библиотеки и инструменты, используемые в среде Gnome.

    Для взаимодействия приложений с другими элементами среды Gnome используется шина d-bus, реализующая механизм передачи сообщений между различными приложениями. D-bus был разработан независимой команды разработчиков в качестве универсального средства взаимодействия для любых возможных приложений и теперь является частью freedesktop.org и стандартом передачи сообщений в UNIX. Шина d-bus заменила не только громоздкий и медлительный RCP CORBA, используемый в Gnome изначально, но и механизм DCOP, используемый в KDE 3. Также d-bus сегодня используется во многих системных компонентов Linux-дистрибутивов, например udev для передачи сообщений о подключении нового оборудования.

    Поверх d-bus в Gnome реализован демон gvfs, представляющий средства для подключения различных виртуальных файловых систем, реализованных с помощью FUSE. Демон GVFS дополнен библиотекой, реализующей API GIO для асинхронного неблокируемого чтения и записи файлов и других потоков данных. Благодаря GVFS и GIO сторонние разработчики могут легко реализовать в своих приложениях такую функциональность как чтение удаленных FTP-архивов или SMB-дисков. До внедрения GVFS в Gnome использовалась аналогичная система GnomeVFS, недостаток которой состоял в том, что виртуальная ФС не была видна внешним приложениям без поддержки GnomeVFS.

    Графический интерфейс

    Поверх фундамента в Gnome реализован графический интерфейс, центральной частью которого является графический тулкит GTK+, библиотеки Pango, Cairo, а также набор смежных библиотек, таких как ATK, Clutter и WebKit.

    Библиотека GTK+, изначально созданная для реализации интерфейса графического редактора Gimp используется в Gnome для формирования пользовательского интерфейса приложений. По своей сути GTK+ представляет собой набор графических элементов управления (виджетов), таких как кнопки, чекбоксы, списки, окна ввода и т.д., с помощью которых строится внешний облик приложений.

    Начиная с версии 2.8 GTK+ использует для отрисовки интерфейса библиотеку векторной графики Cairo, которая позволяет переложить множество действий по отрисовке картинки на графический процессор. Cairo способна работать как поверх X Window, так и графической подсистемы Microsoft Windows, BeOS, OS/2. Linux Framebuffer и множества других средств вывода изображений, включая вывод в PNG, PDF и SVG.

    Для вывода текста GTK+ использует возможности библиотеки Pango, предназначенной для отображения текста на разных языках. Pango способная работать с различными типами шрифтов и отображать текст практически на всех известных языках используя различные стили, цвета и способы написания (справа налево, например). В свое время Pango был разработан специально для GTK+, а самими известными приложениями, использующими его, являются Firefox и компоненты проекта Gnome.

    Совместно с GTK+ любой разработчик может задействовать возможности тулкита ATK для наделения своих приложений возможностями для людей с ограниченными возможностями, такие как увеличенные элементы управления для слабовидящих пользователей или специальный клавиатурный режим (например, "липкие" клавиши) для людей с нарушениями опорно-двигательной системы.

    Для формирования различных элементов рабочего стола, не связанных с интерфейсом самих приложений, задействованы возможности графической библиотеки Clutter. На Clutter полностью основан графический интерфейс Gnome Shell, также ее возможности частично используются в других приложениях. Ключевая особенность этой библиотеки заключается в использования подходов к разработке игр для написания графических интерфейсов. Библиотека почти полностью основана на OpenGL и предлагает богатые возможности для анимации и создания визуальных эффектов, требуя минимального написания кода. Изначально Clutter была разработана компанией Intel для использования в ОС Moblin (позднее MeeGo и Tizen), но теперь разрабатывается независимой командой программистов.

    Немаловажное место среди инструментов формирования интерфейса в Gnome занимает WebKitGTK+, движок WebKit, интегрированный в GTK+. Он может быть использован для встраивания веб-страниц в другие приложения, например браузер Epiphany, почтовый клиент Evolution или интерфейс Gnome Shell. Сам Gnome Shell, используемый по умолчанию в Gnome 3, полностью реализован на языке JavaScript с использованием движка Gjs, основанного на Spidermonkey и GObject.

    Мультимедиа

    Немаловажную роль в Gnome занимает мультимедийная подсистема, которая также основана на наработках сторонних разработчиков. В ее основе лежит три компонента: PulseAudio, Canberra и Gstreamer.

    В основе мультимедийной подсистемы лежит звуковой сервер PulseAudio, который выполняет задачи по интеллектуальному управлению звуковыми потоками. PulseAudio решает такие задачи как установка различных уровней громкости для отдельных приложений, смешивание аудиопотоков, осуществление проигрывание потока с предсказуемой задержкой, преобразование аудиоформатов, синхронизация потоков воспроизведения, встроенный микшер. Кроме того, демон поддерживает систему плагинов, которая позволяет расширять набор доступных средств обработки звука новыми эффектами. До появления PulseAudio в Gnome применялся звуковой сервер ESD, созданный для графической среды Enlightenment.

    Поверх PulseAudio работает мультимедийный фреймворк GStreamer, выполняющий роль универсального всеядного комбайна, способного проигрывать большинство существующих форматов аудио и видео-данных. GStreamer основан на системе плагинов, реализующих поддержку тех или иных форматов контейнеров или методов сжатия данных. При обработке мультимедиа-данных происходит их передача по цепочке плагинов, а вывод направляется в PulseAudio (ALSA, OSS, по запросу) или в указанный буфер или окно X Window. Для приложений доступен API, с помощью которого можно управлять воспроизведением и выполнять другие операции над данными.

    Для вывода различных уведомлений и звукового сопровождения работы среды используется простая библиотека Canberra.

    Коммуникации

    Для связи с внешним миром Gnome использует стандартные средства операционной системы, а также набор инструментов автоконфигурирования сети и осуществления обмена сообщениями в реальном времени (IM). Основные компоненты этого слоя: Avahi, GUPnP, NetworkManager и Telepathy.

    В основе сетевой подсистемы Gnome лежит NetworkManager, автоматический конфигуратор сетевых интерфейсов, который работает как с обычными Ethernet-адаптерами, так и WiFi-картами, а также различными модемами и Bluetooth-устройствами. Благодаря модульному дизайну NetworkManager позволяет подключаться к практически любым типам сетей, задействуя такие технологии как DHCP для полностью автоматической настройки IP и DNS-адресов. Демон NetworkManager стартует еще на этапе запуска сервисов, поэтому к моменту запуска среды Gnome есть уже оказывается полностью настроенной и готовой к работе.

    Для еще более интеллектуальной настройки сети Gnome использует демон Avahi, представляющий собой свободную реализацию Zeroconf, то есть технологию автоматического создания IP-сети и обнаружения сервисов без участия человека. Avahi берет на себя такие задачи как автоматическое присвоение машине IP-адреса из диапазона 169.254. (в случае если в сети нет DHCP-сервера), назначение доменного имени в зоне .local и протокола UPnP, реализованного с помощью библиотеки GUPnP. Avahi позволяет пользователю не сразу после установки/загрузки ОС получить доступ к любым службам, доступным в сети, включая сетевое оборудование.

    Уровнем выше находится фреймворк Telepathy, предоставляющий приложениям средства обмена данными в реальном режиме времени. Пока возможности Telepathy используются в основном для обмена мгновенными сообщениями (IM) в таких программах как Empathy, однако его возможности намного шире и в долгосрочной песрпективе его можно приспособить для обмена практически любыми типами данных, включая голосовой и видеочат, обмен файлами, совместное редактирование документов, просмотр удаленного рабочего стола. Некоторые приложения уже начинают использовать эти возможности, например Sudoku и Tetris для многопользовательской игры, AbiWord (с плагином AbiCollab) для совместного редактирования. Telepathy имеет модульный дизайн с реализацией многих популярных протоколов обмена сообщениями.

    Хранение информации

    Чтобы приложения не "городили сущностей", а разработчики не трудились над созданием собственного механизма хранения данных на диске, Gnome реализует несколько механизмов эффективного хранения информации на диске. Среди этих механизмов можно отметить EDS, GDA, Tracker, Gnome Keyring.

    EDS (Evolution Data Server) используется для централизованного хранения книги контактов и календаря, доступ к которым может получить любое приложение, имеющее соответствующие права. Благодаря хранению этой информации в едином месте среда существенно облегчает жизнь пользователя, снимая с него задачу дублирования информации в различных приложениях. Например, Empathy автоматически добавит в ростер всех пользователей из адресной книги Empathy, имеющих какие-либо аккаунты в IM-сервисах. Календарь, доступный по нажатию на часы в строке состояния автоматически покажет все важные даты, до этого добавленные в планировщик. Библиотека GDA (Gnome Data Access) реализует обертку вокруг реляционных баз данных, которую приложения могут использовать для унифицированного доступа к различным базам данных.

    Tracker реализует в Gnome функциональность локального поисковика. Архитектурно он сильно напоминает аналогичную подсистему KDE4 и также реализует стандартизованный API Nepomuk, однако имеет иную, более медлительную, реализацию с меньшими запросами оперативной памяти. Tracker - это семантический поисковик, который учитывает смысл поисковых запросов, а не просто ключевые слова, используемые в нем. Такой подход позволяет искать данные намного более эффективно, возвращая в ответ документы, которые могут не содержать ни одного заданного ключевого слова, но подходить по смыслу к поисковому запросу.

    Еще одна система хранения данных, используемая в Gnome, это библиотека Gnome Keyring, отвечающая за хранение паролей. Принцип ее работы аналогичен многим другим похожим приложениям, таким как, например, KeePassX - сборник паролей, зашифрованный с использованием другого пароля. Разница в только в том, что в качестве мастер-пароля в Gnome Keyring (обычно) используется пароль пользователя, а каждая запись имеет привязку к приложению, благодаря чему приложение может просто запросить пароль напрямую у Keyring, не принуждая пользователя самостоятельно копировали его в приложение.

    Интеграция с системой

    Одну из ключевых ролей в Gnome играет набор механизмов, обеспечивающих связь среды с железом. Основную роль здесь играют три демона: upower, udisks и policykit.

    UPower представляет собой обертку вокруг файловой системы sysfs, которая позволяет приложениям получать статистику потребления энергии различными компонентами системы посредством шины d-bus, а также информацию об изменении состояния источников питания (переход на питание от сети, информация о заряде аккумулятора и т.д.). Все эти данные позволяют Gnome адекватно реагировать на события, связанные с питанием, своевременно активировать функции энергосбережения, уведомлять пользователя о разряде батареи и корректно выключать и перезагружать машину.

    Демон UDisks представляет аналогичную функциональность, связанную с накопителями. Каждый раз, когда в системе появляется новый накопитель, UDisks уведомляет об этом всех своих "подписчиков", сообщая им полную информацию об устройстве. Эта информация позволяет реализовать функции автомонтирования и безопасного отключения устройств. Когда-то UPower и UDisks были частью проекта HAL, но после появления udev необходимость в HAL пропала и его функциональность была перенесена в два разных демона, развиваемый в рамках проекта freedesktop.org.

    Чтобы регулировать какие приложения могут получить доступ к функциональности UPower и UDisks, также другим привилегированным функциям, Gnome использует другую разработку freedesktop.org под названием PolicyKit (polkit). В его задачи входит фильтрация сообщений d-bus на основе заранее определенных правил и регулирование доступа к этим сообщениям со стороны других приложений.

    Выводы

    Как и сам Linux, Gnome это конструктор, собранный из десятков элементов, созданных сотнями независимых разработчиков. Благодаря универсальным стандартам и инструментам, созданных в рамках freedesktop.org, все эти элементы удается объединить вместе, получив полноценную рабочую среду, которая правильно функционирует и не нуждается в какой-либо настройке и доводки до пригодного к использованию состояния.


    http://execbit.ru/2013/12/09/gnome-arch/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+execbit%2Flast+%28execbit.ru%29

    Категория: Linux и не только | Просмотров: 816 | Добавил: laptop | Рейтинг: 5.0/1
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Волк слабее льва и тигра, но в цирке волк не выступает!
    Волк слабее льва и тигра, но в цирке волк не выступает!
    Волк - единственный из зверей, который может пойти в бой на более сильного противника.
    Если же он проиграл бой, то до последнего вздоха смотрит в глаза противника. После этого умирает...

    Праздники сегодня

    Поиск
    Календарь
    Архив записей
    Друзья сайта
  • Официальный блог
  • JEEP - the best! Mercedes - the best! Автомобильный портал города Бреста: технические характеристики с фото, авторынок, автоспорт...
    Наша кнопка
    IT новости с моего лаптопа...

    Внимание!
    Администратор сайта laptop.ucoz.ru не несет ответственности за содержание рекламных объявлений. Все используемые на сайте зарегистрированные товарные знаки принадлежат своим законным владельцам! Используемая со сторонних источников информация публикуется с обязательными ссылками на эти источники.
    Copyright Valeri N.Kravchuk © 2007-2024