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 →