Открыть сервис

WebKit

WebKit — это свободный движок для отображения веб-страниц (браузерный движок), разрабатываемый компанией Apple Inc. Он обеспечивает рендеринг HTML, CSS и JavaScript, а также поддержку других веб-стандартов. WebKit является основой для браузера Safari и всех браузеров на операционных системах iOS и iPadOS, поскольку политика Apple требует использования именно этого движка для всех сторонних браузеров на её мобильных платформах. Движок также используется в ряде других приложений и встроенных веб-компонентов, включая почтовые клиенты и программы для чтения электронных книг.

История

Происхождение от KHTML

История WebKit начинается с проекта KDE (K Desktop Environment), а именно с его компонента KHTML — движка для отображения HTML, и KJS — интерпретатора JavaScript. В 2001 году компания Apple, работая над созданием собственного браузера для операционной системы macOS, искала подходящую основу. Внутренний движок Internet Explorer для Mac (основанный на Tasman) устарел, а лицензионные ограничения не позволяли использовать движки других браузеров. Выбор пал на KHTML и KJS, распространявшиеся по лицензии LGPL (GNU Lesser General Public License), которая позволяла использовать код в проприетарных продуктах.

Форк и создание WebKit

В 2002 году Apple создала форк (ответвление) кода KHTML и KJS. Разработчики компании внесли значительные изменения в архитектуру движка: была создана новая прослойка для интеграции с графической подсистемой macOS (CoreGraphics), добавлена поддержка векторной графики (SVG), улучшена обработка CSS и DOM. В 2003 году был выпущен первый публичный бета-релиз браузера Safari, основанный на этом форке. Позднее проект получил название WebKit. Отношения между разработчиками Apple и сообществом KDE были сложными: Apple не всегда оперативно передавала свои изменения обратно в основную ветку KHTML, что привело к расхождению кодовых баз. Несмотря на это, обе стороны продолжали обмениваться патчами в течение нескольких лет.

Разделение на WebKit и WebKit2

В 2010 году Apple представила архитектурное изменение — WebKit2. Основной целью было улучшение стабильности и безопасности за счёт выноса обработки веб-контента в отдельный процесс. В этой модели браузерный интерфейс (UI-процесс) и рендеринг веб-страницы (веб-процесс) работают изолированно. Если веб-страница «зависает» или падает, это не приводит к краху всего браузера. WebKit2 стал стандартным режимом работы для Safari на macOS и iOS. Первоначальная версия WebKit (позднее названная WebKit1) продолжала поддерживаться, но её развитие замедлилось.

Форк Blink

В апреле 2013 года компания Google, которая до этого активно использовала WebKit в своём браузере Chrome, объявила о создании собственного форка движка — Blink. Причиной стали фундаментальные архитектурные разногласия: Google стремилась к более глубокой многопроцессной архитектуре (схожая с WebKit2, но с иными подходами к изоляции), а также к возможности внедрения новых технологий (например, многослойного рендеринга) без оглядки на совместимость с другими потребителями WebKit. Вместе с Google из проекта WebKit ушли разработчики Opera, Samsung и некоторых других компаний. После форка Blink развитие WebKit продолжилось силами Apple и небольшого числа сторонних участников (в основном из сообщества свободного ПО).

Архитектура и компоненты

WebKit состоит из нескольких ключевых модулей, которые взаимодействуют друг с другом:

WebCore

WebCore — это ядро движка, отвечающее за разбор (парсинг) HTML и CSS, построение DOM-дерева (Document Object Model) и дерева рендеринга, а также за компоновку (layout) элементов на странице. WebCore также включает реализацию поддержки SVG, MathML, веб-шрифтов и других веб-стандартов. Этот компонент является прямым наследником KHTML.

JavaScriptCore (Nitro)

JavaScriptCore (известный также под кодовым названием Nitro) — это высокопроизводительный интерпретатор и JIT-компилятор (Just-In-Time) для языка JavaScript. Он реализует стандарт ECMAScript. JavaScriptCore включает несколько уровней компиляции: от быстрого байт-кода до оптимизированного машинного кода для конкретной архитектуры процессора (x86, ARM). Движок также поддерживает WebAssembly.

WebKit API

Это слой абстракции, который предоставляет интерфейс для интеграции движка в приложения. API позволяет разработчикам macOS и iOS встраивать веб-просмотрщик (WKWebView) в свои программы, управлять навигацией, историей, настройками безопасности и взаимодействием с JavaScript.

Дополнительные модули

  • Web Inspector — инструмент для отладки веб-страниц, позволяющий просматривать DOM, стили, сетевые запросы и выполнять JavaScript-код в реальном времени.
  • Storage — модуль для работы с веб-хранилищами (localStorage, sessionStorage, IndexedDB, WebSQL).
  • Network — компонент, отвечающий за загрузку ресурсов по протоколам HTTP/HTTPS, FTP (устаревшая поддержка), а также за управление кэшем и cookie.

Особенности и критика

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

WebKit традиционно демонстрирует высокую производительность на устройствах Apple благодаря тесной интеграции с аппаратным обеспечением (GPU, нейронные движки) и операционной системой. Однако в некоторых синтетических тестах (например, JetStream, Speedometer) он может уступать движку Blink (Chrome) или V8 (используется в Node.js). Сравнение производительности часто зависит от версии движка и конкретного устройства.

Соответствие веб-стандартам

Apple позиционирует WebKit как движок, строго следующий веб-стандартам. Однако на практике это приводит к медленному внедрению новых API. Например, поддержка прогрессивных веб-приложений (PWA) в Safari на iOS была реализована значительно позже, чем в Chrome и Firefox. Критики отмечают, что Apple использует контроль над WebKit для ограничения возможностей сторонних браузеров на iOS: например, запрет на использование альтернативных движков (Blink, Gecko) на iPhone и iPad, что, по мнению некоторых экспертов, ограничивает конкуренцию и инновации.

Безопасность

WebKit включает множество механизмов защиты: изолированные процессы (WebKit2), песочницу (sandbox) для веб-контента, защиту от межсайтового скриптинга (XSS) и межсайтовой подделки запросов (CSRF). Apple регулярно выпускает обновления безопасности для WebKit, закрывающие критические уязвимости. Однако в истории движка были и громкие инциденты, такие как уязвимости, используемые для джейлбрейка устройств.

Применение

Основные браузеры

  • Safari — стандартный браузер на macOS, iOS и iPadOS.
  • Браузеры на iOS/iPadOS — все сторонние браузеры (Google Chrome, Mozilla Firefox, Opera, Яндекс.Браузер (разработчик — компания Яндекс)) обязаны использовать WebKit из-за политики Apple. Это означает, что на мобильных устройствах Apple все браузеры фактически являются «обёртками» вокруг Safari.
  • Браузеры на macOS — некоторые браузеры (например, Epiphany, Midori) также используют WebKit, но их доля на рынке незначительна.

Встраиваемые решения

WebKit используется во многих приложениях для отображения веб-контента:

  • Почтовые клиенты (Apple Mail).
  • Программы для чтения (Apple Books).
  • Мессенджеры (встроенные веб-просмотрщики в Telegram, WhatsApp).
  • Игровые движки (например, Cocos2d-x использует WebKit для отображения HTML-интерфейсов).

Встраиваемые устройства

WebKit применяется в операционной системе Tizen (используется в некоторых смарт-телевизорах Samsung), а также в игровых консолях (Nintendo Switch использует WebKit для своего браузера). Кроме того, движок является основой для веб-компонентов в GNOME (WebKitGTK) и других окружениях рабочего стола Linux.

Лицензирование

Исходный код WebKit распространяется под двумя лицензиями:

  • LGPL v2.1 (GNU Lesser General Public License) — для большинства компонентов, унаследованных от KHTML.
  • BSD-подобная лицензия — для кода, написанного Apple и некоторыми другими участниками.

Такая двойная лицензия позволяет использовать WebKit как в свободных, так и в проприетарных проектах.

Будущее развития

Развитие WebKit продолжается силами Apple и сообщества. Основные направления работы включают:

  • Улучшение производительности JavaScriptCore (внедрение новых методов JIT-компиляции).
  • Реализацию новых веб-стандартов (например, CSS Container Queries, WebGPU).
  • Повышение безопасности и конфиденциальности (блокировка сторонних cookie, защита от отслеживания).
  • Адаптацию под новые аппаратные платформы (например, Apple Silicon).

Несмотря на потерю значительной части разработчиков после форка Blink, WebKit остаётся одним из трёх основных браузерных движков (наряду с Blink и Gecko) и играет ключевую роль в экосистеме Apple.

Источники

  • Официальная документация WebKit (webkit.org)
  • История KHTML и WebKit (KDE Community Wiki)
  • Статья «The WebKit Story» (Ariya Hidayat, 2013)
  • Материалы конференций WebKit Contributors Meeting
  • Спецификации W3C и WHATWG по веб-стандартам

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →