ВВЕДЕНИЕ 5
1. АНАЛИЗ ЛИТЕРАТУРЫ И СУЩЕСТВУЮЩИХ РЕШЕНИЙ 8
1.1. Синтаксический анализ 8
1.2. Обзор существующих решений 14
1.2.1. Проект Университета Беркли 14
1.2.2. Браузерный движок ZOOMM 15
1.2.3. Браузерный движок Servo 16
2. ПРОЕКТИРОВАНИЕ 20
2.1. Диаграмма деятельности 20
2.2. Диаграмма последовательности 21
3. РЕАЛИЗАЦИЯ 23
3.1. Выбор языка и платформы разработки 23
3.2. Диаграмма классов 25
4. ТЕСТИРОВАНИЕ 31
ЗАКЛЮЧЕНИЕ 36
ЛИТЕРАТУРА 37
Веб-обозреватель или веб-браузер - прикладное программное обеспечение для просмотра веб-страниц, содержания веб-документов, компьютерных файлов и их каталогов, управления веб-приложениями, а также для решения других задач. В глобальной сети браузеры используют для запроса, обработки, манипулирования и отображения содержания вебсайтов.
Функциональные возможности браузеров постоянно расширяются и улучшаются благодаря конкуренции между их разработчиками и высоким темпом развития и внедрения информационных технологий. Несмотря на то, что браузеры разных изготовителей базируются на разных технологических решениях, подавляющее большинство современных браузеров придерживается международных стандартов и рекомендаций W3C (World Wide Web Consortium) в области обработки и отображения данных.
Актуальность проблемы
На сегодняшний день повсеместно используются так называемые последовательные браузеры, т.е. браузеры, в которых процессы исполняются в некой последовательности (рис. 1). Такая концепция сформирована, по большей части, исторически, ввиду архитектур SISD- процессоров.
Процесс загрузки страницы происходит следующим образом. Браузер получает код HTML, CSS и JS, после этого осуществляет синтаксический анализ (парсинг, помимо структуры HTML анализируются стили CSS и скрипты JavaScript) и формирует объектную модель документа (DOM), после чего применяет стили. Далее создается дерево отображения (flow tree), после этого происходит разметка страницы (layout) на составные блоки, называемые списками отображения. После этого происходит отрисовка на слои (рендеринг), после чего слои компонуются в окончательный результат для вывода [6, 7].
Рис. 1. Стадии обработки веб-страницы и ее промежуточные представления в браузере
Концепция параллельных браузеров предполагает
распараллеливание операций обработки веб-страницы: синтаксический анализ, разметку страницы, применение стилей, параллельное исполнение скриптов.
Есть несколько иной подход в параллелизации работы браузера, состоящий в инстанцировании этих служб для каждой отдельной вкладки в браузере (tab). Но такой вариант не является в полной мере параллельным решением, поэтому отдельно рассматриваться не будет.
Выгода распараллеливания операций заключается в увеличении быстродействия и повышении энергоэффективности работы браузера, что достаточно актуально для мобильных устройств [10, 12].
Согласно исследованиям [10, 12], задачи по синтаксическому
анализу занимают достаточное количество времени, чтобы встал вопрос об оптимизации их решений.
Internet Explorer 8 выполняет синтаксический анализ примерно 310 % времени от общей готовности страницы для использования пользователем, Firefox, согласно измерениям авторов исследования, проводит до 40 % общего времени именно в синтаксическом анализе. Поэтому существенное ускорение работы синтаксического анализатора, которое можно будет достигнуть за счет распараллеливания операций, положительно скажется на общем времени загрузки страницы.
Цель и задачи исследования
Целью данной работы является реализация спекулятивного HTML- парсера, работающего в побочном потоке в браузерном движке Servo.
Для достижения цели необходимо выполнить следующие задачи:
1) провести обзор литературы по теме работы и анализ существующих парсеров в веб-браузерах;
2) разработать спекулятивный парсер;
3) реализовать и провести тестирование разработанного анализатора.
Структура и объем работы
Работа состоит из введения, 4 разделов, заключения и списка литературы. Объем работы составляет 38 страниц, объем списка литературы - 22 наименования.
Содержание работы
В первом разделе, «Обзор существующих решений», изложено описание основных существующих на рынке решений и разработок.
Во втором разделе, «Проектирование», определены функциональные требования к разрабатываемому парсеру, описаны основные алгоритмы работы.
В третьем разделе, «Реализация», представлен перечень используемых средств и технологий разработки, приведены основные алгоритмы работы парсера и его компонентов.
В четвертом разделе, «Тестирование», приведены результаты тестирования, подтверждающие корректность работы парсера.
Целью данной работы являлась реализация спекулятивного HTML- парсера, работающего в побочном потоке в браузерном движке Servo.
В ходе выполнения выпускной квалификационной работы магистра были решены следующие задачи:
1) проведен обзор литературы по теме работы и анализ существующих парсеров в веб-браузерах;
2) разработан спекулятивный парсер;
3) реализован и протестирован разработанный анализатор.
В процессе работы по проектированию и реализации парсера активно велась переписка с одним из членов команды Servo Джошуа Мэттьюсем (Josh Matthews).
Результаты работы будут непосредственно использованы в проекте Servo.