Что такое ядро браузера

Обновлено: 07.07.2024

Чтобы выяснить, что является ядро ​​браузера, сначала вы должны сначала понять конфигурацию браузера. Проще говоря, браузер можно разделить на две части, оболочку + ядро Отказ Тип оболочки относительно большой, а ядро ​​меньше. Shell означает корпус браузера: например, меню, панель инструментов и многое другое. В основном для предоставления операции пользовательского интерфейса, параметров параметров и многое другое. Это называется ядром для достижения различных функций. Ядро - это ядро ​​браузера. Ядро - это программа или модуль, который отображает содержимое на основе языка разметки. Есть также некоторые браузеры не различают корпуса и ядра. После того, как геккон не зависит от Mozilla, есть четкое разделение внешнего корпуса и ядра. В настоящее время основной браузер имеет IE6, IE8 , Mozilla, Firefox, Opera, Safari, Chrome, Netscape и др.

Что такое ядро ​​браузера?

Ядро браузера можно разделить на две части: двигатель рендеринга (инженер-макет или двигатель рендеринга) и двигатель JS. Он отвечает за получение контента (HTML, XML, изображений и т. Д.) Для организации информации (например, добавить CSS и т. Д.) и вычислять режим отображения веб-страницы, а затем выводить на дисплей или принтер. Различные ядра браузера будут отличаться для интерпретации синтаксиса веб-страницы, поэтому эффект рендеринга отличается. Все веб-браузеры, электронные клиенты и другие приложения, требующие редактирования, необходимы для отображения сети. (См. Wikipedia) ДВИГАТЕЛЬ JS разбирает язык JavaScript и выполняет динамический эффект языка JavaScript для реализации веб-страницы. Первый двигатель рендеринга и двигатель JS не отличаются, а затем двигатель JS более и более независим, ядро ​​имеет тенденцию ссылаться на механизм рендеринга. Существует группа веб-стандартной группы, чтобы сделать кислоту для проверки совместимости и производительности двигателя. Есть много типов ядер. Если у вас нет никаких некоммерческих бесплатных ядер, может быть более 10 видов, но Общие ядра браузера можно разделить на эти четыре: Trident, Gecko, Presto, WebKit.

Trident, также известный как MSHTML, является механизмом рендеринга, разработанный Microsoft (включая JavaScript Engine JScript) Он глубоко вошел в костный мозг операционной системы Windows, такой как Play Windows Media, Windows Explorer, Outlook Express и т. Д. Многие браузеры в настоящее время используют этот двигатель, например, IE, Maxthon (последняя версия больше не используется).

Gecko IS C ++ разработан, с открытым двигателем рендеринга источника, включая Spidermonkey (Rhino). Основные пользователи имеют Firefox.

WebKit - это яблоко, основанное на разработке ХТМЛ. Он включает в себя два двигателя для веб-контуры и JavaScriptCore (Tsirelfish, V8). Основные пользователи имеют Safari, Chrome.

Presto начинается с Opera Software для двигателя рендеринга Opera. Macromedia Dreamweaver (версия MX и выше) и Adobe Creative Suite 2 также используют ядро ​​Presto.

Классификация ядра, используемая основным браузером

Trident Actor: IE, Maxthon, TT, мир, 360, браузер Sogou и т. Д.
Ядро Гекко: Netscape6 и выше, FF, Mozillasuite / Seamonkey и др.
Core Presto: Opera7 и выше
WebKit Kernel: Safari, Chrome и т. Д.


JavaScript изначально разработан Brendan Netscape Brendan Eich - это динамичный, слабый тип, прототип, встроенный класс поддержки. На основании этого был разработан стандарт Ecmascript. Его происхождение не описано в книге «Усовершенствованная книга программирования JavaScript», является придуманным Brendan Eich автономным. (См. Aimingoo EDMA) JavaScript должен также содержать DOM и BOM в реализации браузера. Веб-браузер обычно использует Public API для создания объекта Host для того, чтобы отразить объект DOM в JavaScript.



Принцип реализации ядра браузера

Процесс рендеринга выглядит следующим образом:


Дизайн архитектуры Mozilla: интерфейс и разделение. Разработайте в языке тега, JavaScript, C ++. Jsengine означает Spidemonkey, летик относится к геккону. Ключевая часть Mozilla - XPCOM и NSPR.


Процесс обработки WebKit:



Преимущества ядра браузера

Trident: это ядро ​​браузераТо есть браузерИспользуемое ядро, потому что в начале IE обладает множеством рыночной доли, это ядро ​​более популярнее. Там было много страниц в прошлом, но написано в соответствии со стандартом этого ядра, но на самом деле это ядро Не очень хорошо для реальных веб-стандартов. Даже в 2005 году он был отделен со стандартами, разработанными с помощью веб-стандартной организации формулировки (W3C Совета). В то же время ошибка самой резервной основы намного больше, что не является Очень хорошо для некоторых стандартных веб-кода W3C, который в начале т. Е. Версия более очевидна, например, IE5.5 (включая IE5.5), на самом делеIE6Это не очень хорошо для стандартов W3C, и теперь многие люди используют IE6, на самом деле он относится к относительно ранней версии.

Но поскольку высокая доля рынка IE, Microsoft не обновляла сердечник в течение длительного времени, что приводит к двум результатам.

1, Trident Core и W3C стандарт запрета.
2. Большое количество ошибок, таких как Trident Kernel не решено, в сочетании с некоторыми экспертами и учеными раскрыты, что IE браузер не является безопасным, так что многие пользователи начинают обращаться к другим браузерам, FF, OPERA - это подъем.

Gecko: Это ядро, используемое Firefox и Flock. Преимущество этого ядра является мощным, богатым, может поддерживать множество сложных эффектов веб-страницы и расширения браузера, но стоимость также очевидна для потребления многих ресурсов, таких как память Отказ

Presto: Opera принимает ядро ​​Presto, ядро ​​Presto называется признанным просмотром скорости веб-страницы, которая выгодно от естественного преимущества в разработке, что будет больше ядер при обработке сценариев JS. В три раза быстрее, невыгодное положение для достижения Быстрая скорость и выбросить часть совместимости веб-страницы.

Webkit: WebKit - это ядро, используемое Safari, но Safari - это браузер в системе Apple (хотя есть также версия Windows, но меньше), поэтому просто вводит преимущества и недостатки этого ядра, то преимущество в том, что скорость просмотра веб-сигналов Быстрее, хотя и не следующим образом, но это лучше, чем Gecko и Trident. Недостатком заключается в том, что толерантность неисправности не высока, то есть совместимость веб-кода низкая, что заставит некоторые письменные несбалансированные веб-страницы не могут быть отображается правильно.

Резюме: Для браузера Интернет испытал десятилетие быстрого периода развития. В последние годы многие новые браузеры также запустили, но они не используют ядро ​​самостоятельного развития, поэтому сам ядро ​​браузера на самом деле не прорывается.



Доброго времени суток, Хабр! В очередной раз читая комментарии, наткнулся на мысль о том, что далеко не все понимают, как обстоит ситуация с браузерами для Windows на данный момент. От чего хотелось бы провести небольшой обзор текущего положения. Ну, и сразу к делу!

Браузерные движки

Браузер — программа не простая, это целый набор компонентов, взаимодействующих между собой. Для краткого обзора потребуются всего два компонента из множества — движок отрисовки содержимого и движок исполнения JavaScript.

Существующие движки отрисовки содержимого

  • Trident (так же известный как MSHTML) — движок, ранее разрабатываемый Microsoft для браузера Internet Explorer;
  • EdgeHTML — преемник Trident, ранее разрабатываемый Microsoft для браузера Legacy Edge (ранее просто Edge);
  • WebKit — движок, разрабатываемый Apple для браузера Safari;
  • Blink — преемник WebKit, разрабатываемый Google для браузера Chrome;
  • Gecko — движок, разрабатываемый Mozilla для браузера Firefox;
  • Servo — исследовательский проект Mozilla, некоторые технологии со временем перетекают в Gecko.

Существующие движки исполнения JavaScript

  • Chakra JScript — движок JS, ранее разрабатываемый Microsoft для браузера Internet Explorer;
  • Chakra JavaScript — преемник Chakra JScript, ранее разрабатываемый Microsoft для браузера Legacy Edge;
  • Nitro — движок JS, разрабатываемый Apple для браузера Safari;
  • V8 — движок JS, разрабатываемый Google для браузера Chrome;
  • SpiderMonkey — движок JS, разрабатываемый Mozilla для браузера Firefox.

И тут вроде бы очевидно, какие браузеры какие движки используют, но Microsoft внёс не много путаницы в понимание данной темы, поэтому рассмотрим браузеры отдельно.

Браузеры

Chromium


Chromium — это open-source ответвление браузера Chrome. Браузеры на основе Chromium составляют большую часть из всех используемых браузеров на планете Земля.

Обычно, браузеры на базе Chromium между собой отличаются только визуально, ведь у всех под капотом движки Blink и V8, хотя, какие-то компании пытаются привнести больше функционала в браузер, чем имеется.

Это в конечном итоге встанет разработчикам браузеров боком, потому что в любой момент главный разработчик Chromium — Google может вставить палки в колёса разработчикам модификаций.

Всех браузеров на основе Chromium подсчитать одному человеку вряд ли под силу, поэтому приведу список только тех, что помню:

  • Chrome — в представлении не нуждается, браузер от Google;
  • Chr Edge — новый браузер от Microsoft со старым названием. Поговаривают, отличается большей производительностью от Chrome. С некоторых пор предустанавливается в систему;
  • Brave — браузер с повышенной безопасностью настолько, что приватный режим использует Tor;
  • Яндекс.Браузер, Opera, Vivaldi, тысячи их.

Firefox

Firefox использует движки Gecko и SpiderMonkey для своей работы. Имеет небольшое количество базирующихся на Firefox браузеров, но самый известный — Tor Browser. Является единственным рубежом до полного перехода интернета на браузеры на основе Chromium.

Internet Explorer

Это любимая всеми утилита для скачивания браузеров. Как и Chrome — не нуждается в представлении. До 11 версии использовал движки Trident и Chakra JScript. В 11 версии, за исключением режима совместимости, стал использовать движки Trident и Chakra JavaScript. Этот браузер ещё долго будет использоваться для всякого рода систем видеонаблюдения, поскольку имеет, почему-то, популярный в узких кругах API для расширений. В Windows 8 и Windows 8.1 имел особую модификацию движка Trident на базе WinRT для Metro режима.

(Legacy) Edge

Браузер, начавший своё существование с кодовым названием Project Spartan, являлся новым браузером от Microsoft в 2015 году, использующим движки EdgeHTML и Chakra JavaScript. Конечной целью проекта была полная совместимость с сайтами, отлично работающими в Chrome. В итоге — получилось нечто своеобразное, но, очевидно, не выжившее под давлением Google.

Safari


Safari? А нет его больше, этого вашего Safari, кончился.

Нецелевое использование браузеров

Вроде бы браузеры — законченный продукт, ни добавить ни отнять. Однако, они используются в разного рода других приложениях. Причины в следующем (в порядке убывания значимости):

  • П р ограммистов на JS нечем занять;
  • На JS+HTML новичкам проще программировать;
  • Кроссплатформенность;
  • Требуется возможность отображать веб-страницы.

Приведу примеры подобного использования:

Chromium

Нынешние браузеры настолько сложны, что одному человеку создать собственный браузер не под силу (либо это должен быть гений). Они по сложности сравнимы с операционными системами! А, постойте, вот и первый кандидат на нецелевое использование — Chrome OS. Да, весь пользовательский интерфейс — просто модифицированный Chromium.
Однако, помимо этого, в виде CEF (Chromium Embedded Framework), Chromium используется в:

Internet Explorer

Почти любое Win32 приложение, умеющее отображать WEB-страницы и при этом в распакованном виде занимающее меньше 60 мегабайт использует внутри Internet Explorer. Кстати, это касается не только маленьких по размеру приложений, например, Visual Studio использует Internet Explorer для отображения WEB-страниц, когда это требуется в работе IDE. Ещё существуют HTA приложения — древний предшественник CEF на базе Internet Explorer. И ведь до сих пор работает.

(Legacy) Edge

Новым приложениям — новые движки! Любое UWP приложение, использующее внутри отображение WEB-страниц работает на базе Edge. Не то, чтобы Microsoft запрещали использовать что-то другое, но никто просто и не старался. Так же, пока что, в предварительных сборках Windows новая клавиатура с GIF панелью тоже использует Edge для рендеринга. В будущих версиях, полагаю, перейдут на Chr Edge.


Производительность

Постойте, столько приложений, а что там с производительностью? Лично я — не специалист в оценке производительности, но хочу поделится с вами некоторыми занимательными фактами.

Prefetcher

В Windows есть такая штука — Prefetcher. Она занимается подгрузкой программ в ОЗУ при старте ОС и на протяжении её работы. Штука эта достаточно умная, и она анализирует чаще всего запускаемые программы, чтобы в дальнейшем их подгружать.

Как это связано с браузерами? Идея в том, что это может смазать первый пользовательский опыт с другим браузером, например, пользуясь постоянно Chrome, имеете установленную версию Firefox. При запуске Firefox будет вести себя крайне медленно — медленнее, чем ваш основной браузер. Всё потому что он запылился в глазах Prefetcher. В конечном итоге всё будет работать быстро, но первое впечатление после долгого неиспользования будет ужасным. Особенно это касается пользователей с HDD или малым количеством ОЗУ.

Области распределённой памяти

Да, звучит не очень. Но суть, в данном случае, простая — если одна единица исполняемого кода требуется к исполнению больше одного раза, будь то exe или dll , то в память она загрузится лишь один раз. Поясню: если два различных приложения в ходе своей работы загрузят одну и ту же библиотеку, например, edgehtml.dll , то этот файл будет загружен в ОЗУ компьютера на самом деле только один раз, хотя, казалось бы, потребуется два или больше раз. Таким образом ОС экономит нам оперативную память.

Движки нормального человека

К чему это я? А вот дело в том, что в отличии от других браузеров, Internet Explorer и (Legacy) Edge предустановлены в систему, а их движки хранятся в папке System32 . Это, вкупе с API для разработки приложений, означает, что все приложения в системе, использующие данные движки будут загружать их в память только однажды. И этот принцип распространяется на все приложения.

У людей часто возникают проблемы с UWP приложениями, а точнее — с их скоростью запуска. Всё дело в WinRT — огромном наборе библиотек, при помощи которых UWP приложение взаимодействует с ОС. Если не использовать UWP приложения часто, то этот набор библиотек не будет прогружен в памяти полностью, и придётся ожидать окончания этого процесса перед использованием приложения. Но забавный факт — используя два и более UWP приложения время их старта и общая производительность резко увеличиваются и часто даже превосходят Win32 программы. Исключением из этого является приложение "Фотографии" — тут отдельная история, покрытая туманом.

Движки курильщика

А вот с приложениями (в том числе и браузерами) на основе Chromium это так не работает. Каждое приложение комплектует с собой собственную сборку библиотеки CEF, что, кроме раздувания размера приложения, не позволяет операционной системе иметь только одну копию dll в ОЗУ. Итого это сильно замедляет производительность при использовании множества подобных приложений. Помимо того, сам размер CEF довольно удручающий.

Microsoft Store

У многих возникает вопрос — почему в Microsoft Store нет ни одного браузера(не считая нескольких кривых поделок на EdgeHTML)? Ответ, на самом деле, прост — все браузеры, включая Chr Edge имеют собственную систему обновления, что прямо запрещено правилами Microsoft Store. В остальном никто никого не ограничивает.

Как удалить новый Microsoft Edge

Это не очень сложно. Для начала требуется найти папку с Microsoft Edge, она расположена по пути:
C:\Program Files (x86)\Microsoft\Edge\Application
Далее заходим в любую версию Edge и переходим в папку Installer . Полный путь может выглядеть следующим образом:
C:\Program Files (x86)\Microsoft\Edge\Application\83.0.478.58\Installer
Далее необходимо открыть командную строку от имени администратора в данной папке и выполнить следующую команду:
setup.exe --uninstall --system-level --verbose-logging --force-uninstall
Готово! Через несколько секунд этот браузер исчезнет из системы. Но при следующем же обновлении он появится снова, будте бдительны.

Заключение

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

Администраторы Хабра, пожалуйста, почините HabraStorage в Legacy Edge! Совсем не дело.


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

Это будет цикл статей в которых мы создадим свой собственный минималистичный браузерный движок. Каждая статья будет подкреплена реальным кодом и примерами.
По прошествии десяти статей у нас с вами будет минимальная рабочая версия браузерного движка, сильно минимальная. После этого, если запал не уйдёт и будет интерес сообщества, продолжим, и в итоге доберёмся до JS.

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

Браузер и браузерный движок

Существующий мир сложно представить без браузеров. Они есть на многих устройствах: компьютеры, лэптопы, телефоны, игровые приставки. Если представить браузер в виде машины то браузерный движок это всё то, что скрыто под капотом вашего автомобиля.
Браузеры как и автомобили могут отличаться внешним видом и содержимым под капотом. Цвет, кнопочки на панели, аудиосистема. У кого-то под капотом двигатель V8, а у кого-то там масло течёт.

Браузер объединяет периферию и предоставляет функционал позволяющий манипулировать движком, его поведением, предоставляет дополнительные сервисы.
Браузерный движок выполняет всю "грязную" работу: загрузка, обработка, отрисовка данных и все возможные расчёты.

Всё как в автомобилях. Есть салон в котором присутствует педаль газа, тормоза и множество переключателей полезных и понятных пользователю. А есть большая механическая часть скрытая от пользователя под капотом.

Кто создает браузеры и движки

Разработкой собственного браузера занимается множество компаний: Google, Mozilla, Apple, Microsoft, Opera Software, Яндекс, Ростелеком, Vivaldi Technologies, много их…

Каждый добавляет какие-то свои "фишки", сервисы в создаваемый браузер. К примеру, Яндекс интегрирует свои сервисы, поиск.

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

  • Blink: Google
  • Gecko: Mozilla
  • WebKit: Apple
  • EdgeHTML: Microsoft

Это основные обладатели и разработчики движков. В разработке им помогают сторонние компании на определенных условиях.

Например, рассмотрим самый популярный проект от компании Google — Chromium. Данный проект содержит в себе движок Blink. Создавать данный проект Google помогают такие компании как Intel, Facebook, IBM, LG Electronics, NVIDIA, Yandex. Полный список можно посмотреть тут.
Условия на которых компании помогают создавать Blink/Chromium описаны в разделе Legal stuff на сайте проекта Chromium. Если кратко, то всё что вы создаёте принадлежит (не эксклюзивно) Google.

Браузеры компаний Opera, Яндекс, Ростелеком и другие используют именно этот браузерный движок. Если быть до конца откровенным то заявления вроде "у нас есть свой браузер" не совсем правда. Собственные сервисы — да, а вот всё остальное принадлежит другой компании(ям). И эта другая компания предоставляет свой браузерный движок на определенных условиях.

Лицензии браузерных движков

Любой открытый код содержит в себе лицензию с описанием условий по использованию данного кода, и браузерные движки не исключение.

Если сразу и кратко: лицензии сносные, прям вот из ряда вон ничего нет. Кроме EdgeHTML который закрыт. Легально утащить к себе какой-то проект и закрыто разрабатывать/изменять видимо не выйдет. Лицензии призывают к взаимной открытости.

Открытый исходный код, ответвление движка WebKit. Как и в WebKit заявлено четыре лицензии:

Самый популярный браузерный движок. Он входит в состав проекта Chromium. Именно на основе Chromium создают собственные браузеры.

Если верить файлу LICENSE проекта Chromium его основная лицензия 3-Clause BSD. Но у проекта есть директория third_party (третьи лица, третья сторона) содержащая множество стороннего кода от которого проект зависит. Иначе говоря, без этого кода собрать браузер не выйдет. У каждого компонента свои лицензии отличные от того что указано в LICENSE проекта:

Открытый исходный код. Заявлена одна лицензия:

Активно развивается компаний Mozilla и используется в собственном браузере компании — Firefox. Так же используется в браузере Tor Browser обеспечивающий анонимное пребывание в сети.

Как основа для производителей браузеров большой популярности не имеет.

Открытый исходный код. Заявлено четыре лицензии:

Развивается компанией Apple и используется в собственном браузере компании — Safari. Ранее многие компании использовали в своих разработках WebKit, но после покинули проект и переключились на Blink от Google.

Закрытый исходный код. Проприетарная лицензия.

Движок используется для браузера компании Microsoft под названием Edge, который пришёл на смену Internet Explorer. Это их новый движок. Предыдущий Trident (MSHTML) компания прекратила развивать.

Риски

Использование стороннего движка порождает очевидные риски:

  1. Закрытие исходного кода
  2. Выход ключевых компаний из разработки
  3. Смена лицензий на код

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

Компании развивающие собственные браузеры должны понимать, что всё будет "хорошо" пока они не составляют угрозу/конкуренцию разработчикам оригинального браузера/браузерного движка. Думаю это очевидно. Компания тратит на разработку движка свои ресурсы, но вдруг появляется другая компания которая используя их движок захватывает рынок. Реакция, думаю, очевидна — смотрим список рисков выше.

«Мы создадим копию движка на текущий момент и продолжим развивать сами» — именно так отвечают производители браузеров на сторонних движках. Большое заблуждение, не выйдет просто так продолжить разработку чужого движка. То есть, взять программистов и поставить им задачу — пишите браузерный движок. Написание браузерного движка сложный технологический процесс. Подтверждением этого служит список их обладателей.

Для примера, компания Microsoft создает свой движок, хоть и закрытый. Google вместе с Apple разрабатывали WebKit, но позже Google сделал форк и начал развитие собственного движка Blink.

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

Адаптация движков

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

Собственный движок

Прежде всего стоит ответить на главный вопрос — зачем создавать свой браузерный движок? А точнее, кому не надо создавать свой движок?

Свой браузерный движок не стоит создавать если:

  • Нет задачи/стремления захватить рынок.
  • Браузер нужен лишь номинально. Сейчас это модно, делают даже школьники.
  • Создаваемый движок не будет отличаться от существующих: скорость, надёжность, адаптивность.
  • Идёт освоение бюджета.

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

Стоит ли заниматься разработкой движка для "заработка", для создания стартапа?

Данный вопрос скорее к сфере его применения. Мне видится несколько направлений:

  1. Собственно, создание полноценного браузера. Сотрудничество с поисковыми системами, различными сервисами. Создание особых версий для государственных структур.
  2. Рынок IoT (интернет-вещей), а так же адаптация для телевизоров, приставок, портативных устройств.
  3. Сервисы на отдельных компонентах браузера. Например, умный анализ контента сайта на риски: запрещенные комментарии, посты от пользователей и так далее. Технический анализ сайтов.
  4. Продажа движка. Самое простое, написать под компанию.

Кроме того, престиж компании разработчика браузерного движка значительно выше чем у клонов. Именно как технологической компании. Это сказывается на популярности компании и привлекательности для существующих и будущих сотрудников. Но это уже скорее о честолюбии, встать в одном списке с такими компаниями как Google, Mozilla, Microsoft.

Заключение

Без сомнения, создание браузерного движка процесс сложный и требующий значительных ресурсов. Подходить к этой разработки необходимо крайне серьёзно и с чётким планом по развитию. Кроме того, это не тот продукт прибыль от которого можно получать на промежуточном этапе разработки. Да, отдельные компоненты можно адаптировать под нужды компаний, но я уверен, что такой подход только отнимет время и значительно затянет разработку.

Развитие браузерного движка сильно зависит от метода его разработки. Каким он будет: открытым, закрытым?

Я уверен, что если компания занимается развитием браузера на основе стороннего браузерного движка то ей следует серьёзно подумать над перспективой создания собственного.

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

Цикл статей

  1. Браузер != Браузерный движок
  2. Браузерный движок. Архитектура, работа с памятью.
  3. HTML парсер. Токенизация, обработка токенов, построение дерева.
    Пишем свой парсер. Из каких стадий состоит разбор HTML, в чём сложность и как разогнать HTML парсер в несколько раз.
  4. Кодировки в HTML. Как определяются, как конвертируются.
    Напишем свой кодировщик и обсудим положение дел.
  5. CSS парсер и CSS модули. Токенизация, обработка токенов.
    Создадим свой CSS парсер. Разберём основные аспекты обработки CSS. Выясним в чём сложность, на что тратятся ресурсы и как написать самый быстрый парсер CSS/модулей.
  6. CSS парсер. Grammar.
    Пишем собственный Grammar для CSS модулей формирующий быстрый, человеко-читаемый код.
  7. CSS Selectors. Как устроены, быстрый поиск HTML элементов по селекторам.
  8. Layout. Скрещиваем HTML и CSS.
    Назначаем CSS свойства HTML элементам. Разберём порядок назначения, приоритеты и что делать если CSS постоянно изменяется.
  9. Layout. Потоки. Поддержка CSS свойства display: block.
  10. Шрифты. Как расчитывать размер символов, строк.
    Напишем свой парсер шрифтов. Узнаем, что такое baseline, descender, x-height, как хранятся символы и углубимся в тему расчётов размера символов.
  11. Layout. Поддержка CSS свойства display: inline.

Судьба Modest

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

К сожалению, проект Modest пришлось завершить. Какое-то время проект развивался в компании, в которой я раньше работал. Мне пришлось покинуть компанию. Появились разногласия которые не позволили продолжить разработку проекта. Обычный рабочий процесс, такое бывает.

Не смотря на то, что у меня есть все права на Modest, на код никто не претендует (подписаны бумаги), я решил его "закопать". Чтобы ни у кого не возникало ложных ощущений. Тут надо понимать, что закапывается и весь основной код который развивался вне компании (mycore, myhtml). Но, есть и плюс, возможно, я стал чуть умнее.

Мной было потрачено очень много времени на изучение спецификаций, осознания их, поиск оптимальных алгоритмов, написание черновиков (прототипов), создание myhtml (самый быстрый парсер html) в свободное от работы время, и просто так забросить эту тему я пока не могу. Было потрачено много выходных, праздников, вечеров, ночей.

Теперь я занимаюсь разработкой нового браузерного движка. Разработка с ноля. Имени у него пока нет, только кодовое — lexbor. Вся основа уже написана: работа с памятью, общие алгоритмы, заложена будущая архитектура. Как всегда, всё краше и лучше чем было. В общем, у меня есть самое главное: технология и чёткое видение/понимание как и что развивать.

Одному мне такой проект не потянуть. Если поддержки не найду (финансирования) то прекращу разработку и присоединюсь контребьютером к существующему открытому движку (Blink или Gecko). Попробую побыть там волонтером и реализовать свои идеи. Занимаюсь всем этим исключительно в нерабочее время.

Тут видимо должна быть картинка «ты должен был бороться со злом, а не примкнуть к нему».

Браузер = оболочка + ядро
Среди них относительно больше типов оболочек и меньше ядер. Оболочка относится к оболочке браузера: например, меню, панели инструментов и т. Д. Он в основном предназначен для работы с пользовательским интерфейсом, настройки параметров и так далее. Он вызывает ядро ​​для реализации различных функций. Ядро - это ядро ​​браузера. Ядро - это программа или модуль, который отображает контент на основе языка разметки.

Что такое ядро ​​браузера

Ядро браузера можно разделить на две части: движок рендеринга (инженер макета или движок рендеринга) и движок JS. Он отвечает за получение содержимого веб-страницы (HTML, XML, изображения и т. Д.), Организацию информации (например, добавление CSS и т. Д.) И расчет режима отображения веб-страницы, а затем вывод ее на монитор или принтер. Разница в ядре браузера будет по-разному интерпретировать синтаксис веб-страницы, поэтому эффект рендеринга будет другим. Все веб-браузеры, почтовые клиенты и другие приложения, которым необходимо редактировать и отображать сетевой контент, требуют ядра. (См. Википедия). Движок JS анализирует язык Javascript и выполняет язык Javascript для достижения динамических эффектов веб-страницы. Сначала не было четкого различия между движком рендеринга и движком JS, а позже движок JS становился все более независимым, и ядро ​​имело тенденцию ссылаться только на движок рендеринга. Механизм рендеринга определяет, как браузер отображает содержимое веб-страницы и информацию о формате страницы. Разные ядра браузеров по-разному интерпретируют синтаксис записи веб-страниц, поэтому эффект рендеринга (отображения) одной и той же веб-страницы в браузерах разных ядер также может быть различным. Именно поэтому авторам веб-страниц необходимо тестировать веб-страницы в браузерах разных ядер. Покажите причину эффекта. Движок JS отвечает за интерпретацию, компиляцию и выполнение JavaScript, чтобы заставить веб-страницу достигать некоторых динамических эффектов. Но обычные ядра браузера можно разделить на эти пять типов: Trident, Gecko, Presto, Webkit, Blink.

Классификация ядра

Trident (ядро IE): Эта программа ядра была впервые принята в IE4 в 1997 году. Она была изменена Microsoft на основе кода Mosaic и продолжала использовать IE11. Она также обычно называется «ядром IE». Trident на самом деле является открытым ядром, и его интерфейсное ядро ​​достаточно развито, поэтому есть много браузеров (оболочек), которые используют IE вместо ядра IE к
Из-за «монополии» самого IE (хотя IE не является монополией по названию, но на самом деле, особенно с Windows 95 до первых дней XP, IE действительно использовал Dongfeng Windows находится в «монопольном» положении и долгое время доминировало над ядром Trident. Microsoft долгое время не обновляла ядро ​​Trident. Это привело к двум последствиям, одно из которых состоит в том, что ядро ​​Trident почти не касалось стандарта W3C ( 2005 г.) Во-вторых, большое количество ошибок и других проблем безопасности в ядре Trident не было решено вовремя, и затем некоторые разработчики и некоторые ученые, которые привержены открытому исходному коду, открывают свое мнение, что Internet Explorer небезопасен, и многие пользователи обратились к нему. В это время появились другие браузеры, Firefox и Opera. Значительное увеличение доли рынка браузеров с ядром без Trident также заставило многих веб-разработчиков обратить внимание на веб-стандарты и эффекты просмотра браузеров без IE. к
Дополнение: начиная с версии 11 IE изначально поддерживает технологию WebGL. Механизм JavaScript IE8 - Jscript, и IE9 начал использовать Chakra. Две версии очень разные. Chakra превосходна с точки зрения скорости и стандартизации. к
Общие браузеры с ядром Trident: [1] IE6, IE7, IE8 (Trident 4.0), IE9 (Trident 5.0), IE10 (Trident 6.0); [1] 360 браузер безопасности (1.0-5.0 - Trident, 6.0 - Trident + Webkit, 7.0 - Trident + Blink)Гепард Ультра Лайт Браузер360-скоростной браузер (Trident + Webkit до 7.5, Trident + Blink для 7.5)Cheetah Safe Browser(Версия 1.0-4.2 - Trident + Webkit, 4.3 и более поздние версии - Trident + Blink) Сверхлегкий браузер Cheetah, браузер Maxthon (Maxthon 1.x и 2.x - ядро ​​IE, 3.x - двухъядерный IE и Webkit) , Браузер Baidu (ранняя версия), браузер Window of the World [2] (изначально ядро ​​IE, ядро ​​Chrome + IE, выпущенное в 2013 году), браузер 2345, Tencent TT, браузер Taobao, браузер сбора и чтения, Sogou Express Браузер (Trident для 1.x, Trident + Webkit для 2.0 и более поздних версий), браузер Ayun (ранняя версия),Rising Security Browser, Тонкий браузер, GreenBrowser, браузер Aifan (версия до 12), браузер 115, браузер 155, флэш-браузер, браузер оксида углерода, браузер конфет, браузер Rainbow, браузер Ruiying, Храбрый без границ Браузер, браузер 114, браузер Ant, браузер Feiteng, браузер Suda, браузер Zorro, браузер Dolphin (iPhone / iPad / Android), браузер UC (ядро Blink + ядро ​​Trident) и т. Д. к
Новая версия некоторых браузеров является «двухъядерной» или даже «многоядерной», один из которых - Trident, а затем добавляется еще один. Отечественные производители обычно называют другие ядра «высокоскоростным режимом просмотра», тогда как Trident является «совместимым режимом просмотра», и пользователи могут переключаться между ними.

Gecko (ядро Firefox): Netscape 6 начал внедрять ядро, а позже Mozilla FireFox (браузер Firefox) также принял это ядро. Отличительной чертой Gecko является то, что код полностью открыт, поэтому его можно разрабатывать в высокой степени. Программисты по всему миру Вы можете написать код для него и добавить функциональность. Поскольку это ядро ​​с открытым исходным кодом, многие его одобряют, и для ядра Gecko существует множество браузеров, что является важной причиной того, что ядро ​​Gecko является молодым, но его доля на рынке может быстро возрасти. к
На самом деле происхождение движка Gecko не связано с IE. Ранее я говорил, что IE не использует стандарты W3C, что вызвало недовольство у некоторых разработчиков в Microsoft; они прекратили обновление Некоторые сотрудники Netscape вместе основали Mozilla, переписали ядро ​​на основе ядра Mosaic и разработали Gecko. Но на самом деле браузер ядра Gecko по-прежнему Firefox (Firefox) с большинством пользователей, поэтому его иногда называют ядром Firefox. Кроме того, Gecko также является кроссплатформенным ядром, которое можно использовать в Windows, BSD, Linux и Mac OS X. к
Дополнение: движком JavaScript является SpiderMonkey. к
Общие браузеры с ядром Gecko: [1] Mozilla Firefox, Mozilla SeaMonkey, waterfox (64-разрядная версия Firefox с открытым исходным кодом), Iceweasel, Epiphany (ранняя версия), Flock (ранняя версия), K-Meleon

Presto (pre-Opera kernel) (устарело): ядро, используемое в Opera 12.17 и более ранних версиях, прекратило разработку и теперь устарело. Ядро впервые использовалось в Opera7 в 2003 году. Особенностью этого движка является скорость рендеринга. Оптимизация достигла предела, но цена за счет веб-совместимости. к
На самом деле это динамическое ядро. Самым большим отличием от предыдущих ядер является обработка скриптов. У Presto есть естественное преимущество. Вся или часть страницы может реагировать на события скрипта. Время от времени пересматривается. Кроме того, ядро ​​имеет самую высокую скорость при выполнении Javascrīpt. Согласно тестам в тех же условиях, время, необходимое для того, чтобы ядро ​​Presto выполнило тот же Javascrīpt, составляет всего около 1/3 от ядер Trident и Gecko (ядро Trident - самое медленное, но два Между ними нет большой разницы.) Один из модификаторов этой статьи считает, что приведенная выше информация о тестировании слишком старая и неполная, потому что небольшой тест, который он провел, показывает, что часть Presto является быстрой, а часть - медленной, а ядра в целом эквивалентны. В этом тесте, поскольку аппаратные условия компьютера Apple отличались от обычных компьютеров, ядро ​​WebCore не тестировалось. Жаль, что Presto - это коммерческий движок. Помимо Opera единственными, которые используют Presto, являются NDSBrowser, Wii Internet Channle, веб-браузер Nokia 770 и т. Д. Это в значительной степени ограничивает разработку Presto. к
Opera перешла на ядро ​​Google Chrome Blink.

Webkit (ядро Safari, прототип ядра Chrome, открытый исходный код): это собственное ядро ​​Apple и ядро, используемое браузером Safari от Apple. Движок Webkit включает в себя механизм верстки WebCore и механизм синтаксического анализа JavaScriptCore, оба производные от KDE KHTML и KJS, все они являются свободным программным обеспечением, лицензированным по соглашению GPL, и поддерживают разработку систем BSD. Так что Webkit - это также бесплатное программное обеспечение и открытый исходный код. С точки зрения безопасности, он не ограничен IE и Firefox, поэтому браузер Safari все еще очень безопасен в Китае. к
ограничивается тем, что Mac OS X не используется широко, а браузер Safari когда-то был эксклюзивным браузером Mac OS X. Можно сказать, что само это ядро ​​имеет небольшую рыночную область применения, но, похоже, оно основано на новейшем браузере Опрос показывает, что рынок браузеров даже превзошел Presto. Конечно, это связано с растущей популярностью Apple после перехода на архитектуру x86, а также с тем, что Safari 3 наконец-то запустил версию для Windows. Есть также популярные браузеры, такие как OmniWeb и Shiira под Mac. к
В быстродействующем режиме высокоскоростного браузера Sogou также используется Webkit в качестве ядра (с точки зрения понимания сценариев Chrome использует собственный разработанный движок V8). Ядро WebKit также широко используется в мобильных телефонах, например, мобильный телефон Google Gphone, iPhone Apple, браузер Nokia Series 60 и другие ядра ядра браузера - все основано на WebKit. к
Основные браузеры WebKit: браузер Maxthon 3, [1] Apple Safari (Win / Mac / iPhone / iPad), мобильный браузер Symbian, браузер Android по умолчанию,

Внедрение продукции
Blink - это механизм верстки браузера, разработанный Google и Opera Software. Google планирует использовать этот механизм рендеринга в рамках проекта Chromium, и анонсировал эту новость в апреле 2013 года. , Этот движок рендеринга является ветвью компонента WebCore движка с открытым исходным кодом WebKit и используется в браузерах Chrome (28 и более поздние версии), Opera (15 и более поздние версии) и Яндекса.

IE (до 9) = Trident + Jscript
IE (после 9) = трезубец + чакра
360=Trident+Blink
Sogou = Trident + WebKit
Firefox=Gecko+JagerMonkey
Safari=webkit=webcore+jscore
Chrome=Blink+v8
Opera=Blink+v8

Принцип реализации ядра браузера


Процесс рендеринга выглядит следующим образом:

Визуализация процесса работы двигателя

Проектирование архитектуры Mozilla: разделение интерфейса и реализации. Используйте язык разметки, JavaScript, C ++ для разработки. JSEngine относится к SpideMonkey, а Layout относится к Gecko. Ключевой частью Mozilla является XPCOM и NSPR. к

Поток обработки Webkit:

Читайте также: