KHTML
KHTML — это свободный движок рендеринга веб-страниц с открытым исходным кодом, разработанный для браузера Konqueror в среде рабочего стола KDE. KHTML написан на языке C++ и распространяется под лицензией LGPL (GNU Lesser General Public License). Он обеспечивает отображение HTML, XHTML, CSS, а также поддержку скриптов на JavaScript и других веб-технологий. KHTML известен тем, что стал основой для движка WebKit, который впоследствии был использован в браузере Safari от Apple и во многих других приложениях.
История
Предпосылки и создание
Разработка KHTML началась в 1998 году в рамках проекта KDE, который стремился создать полноценную среду рабочего стола для Unix-подобных операционных систем. Первоначально для браузера Konqueror использовался движок KDE HTML Widget (KHTMLWidget), который был основан на библиотеках Qt. Однако он имел ограниченную поддержку современных веб-стандартов. В 1999 году команда разработчиков KDE, включая Ларса Кнолля (Lars Knoll) и Антти Койвуниеми (Antti Koivunen), начала работу над новым движком, который получил название KHTML. Целью было создание быстрого, совместимого со стандартами и модульного движка, который мог бы конкурировать с проприетарными решениями, такими как Internet Explorer и Netscape Navigator.
Развитие и интеграция
Первая стабильная версия KHTML была выпущена в составе KDE 2.0 в 2000 году. Она поддерживала HTML 4.01, CSS 1 и частично CSS 2, а также JavaScript через интерпретатор KJS (KDE JavaScript Engine). В последующих версиях KDE (3.0, 3.1, 3.2) движок был значительно улучшен: добавлена поддержка CSS 2.1, DOM (Document Object Model), XML, XSLT, а также улучшена производительность и стабильность. KHTML также стал основой для других проектов, таких как браузер для мобильных устройств и встраиваемых систем.
Ответвление WebKit
В 2001 году компания Apple, разрабатывая браузер Safari для macOS, искала движок с открытым исходным кодом, который можно было бы адаптировать под свои нужды. После оценки нескольких вариантов, включая Gecko (от Mozilla) и KHTML, Apple выбрала KHTML из-за его модульности, производительности и лицензии LGPL. В 2002 году Apple создала форк (ответвление) KHTML, который получил название WebKit. Разработчики Apple внесли значительные изменения в код, включая поддержку новых технологий (например, Canvas, SVG, HTML5), улучшение JavaScript-движка (создав Nitro) и интеграцию с графической подсистемой macOS. В 2005 году Apple открыла исходный код WebKit под лицензией BSD, что привело к его широкому распространению.
Конфликт и сотрудничество
Взаимодействие между разработчиками KHTML и Apple было сложным. С одной стороны, Apple вносила улучшения и делилась ими с сообществом KDE, но с другой — часто не синхронизировала свои изменения с основной веткой KHTML, что приводило к расхождениям. В 2006 году разработчики KHTML выразили недовольство тем, что Apple не публикует все изменения в коде, что затрудняло слияние. В ответ Apple пообещала улучшить процесс. Однако к 2007 году стало очевидно, что WebKit развивается быстрее и имеет больше ресурсов, чем KHTML. В 2008 году проект KHTML официально объявил о прекращении активной разработки в пользу WebKit, хотя поддержка и исправления ошибок продолжались до 2010 года.
Архитектура и особенности
Компоненты
KHTML состоит из нескольких ключевых модулей:
- Парсер HTML/XML: Разбирает разметку и создаёт DOM-дерево.
- CSS-движок: Обрабатывает таблицы стилей и применяет их к элементам.
- JavaScript-движок (KJS): Интерпретирует и выполняет скрипты на JavaScript.
- Модуль рендеринга: Отвечает за отрисовку страницы на экране, включая работу с шрифтами, изображениями и векторной графикой.
- Сетевой модуль: Загружает ресурсы (изображения, стили, скрипты) по протоколам HTTP/HTTPS.
Поддержка стандартов
KHTML был одним из первых движков, который стремился к полной поддержке веб-стандартов, установленных W3C (World Wide Web Consortium). На момент своего расцвета (2004–2006) он поддерживал:
- HTML 4.01 и XHTML 1.0/1.1
- CSS 1, 2.1 и частично CSS 3 (например, селекторы, псевдоклассы)
- DOM Level 1, 2 и частично Level 3
- ECMAScript (JavaScript) 1.5
- XML 1.0 и XSLT 1.0
- PNG, JPEG, GIF, SVG (частично)
Производительность
KHTML был известен своей высокой скоростью рендеринга, особенно на старых системах. Он использовал эффективные алгоритмы для обработки CSS и DOM, что позволяло быстро отображать сложные страницы. Однако по сравнению с современными движками (WebKit, Blink, Gecko) его производительность была ниже из-за отсутствия JIT-компиляции JavaScript и оптимизаций для современных графических процессоров.
Применение
Браузер Konqueror
Основным и наиболее известным приложением, использующим KHTML, был браузер Konqueror, входящий в состав KDE. Konqueror также выполнял функции файлового менеджера и просмотрщика документов. KHTML обеспечивал отображение веб-страниц, а также поддержку вкладок, закладок и расширений.
Другие проекты
KHTML использовался в нескольких других проектах, включая:
- KDE Web Browser: Встраиваемый компонент для отображения веб-содержимого в приложениях KDE.
- KDE HTML Widget: Библиотека для встраивания веб-движка в сторонние приложения.
- Мобильные браузеры: Некоторые проекты для мобильных устройств, такие как Web Browser for Maemo (на платформе Nokia N800/N810), использовали KHTML.
Влияние на WebKit
Хотя KHTML больше не развивается активно, его кодовая база стала основой для WebKit, который в свою очередь породил Blink (движок Google Chrome и Opera). Таким образом, KHTML косвенно повлиял на большинство современных браузеров, включая Safari, Chrome, Opera, Vivaldi и Microsoft Edge (до перехода на Chromium). Многие алгоритмы и архитектурные решения, заложенные в KHTML, используются и сегодня.
Критика и ограничения
Проблемы с совместимостью
В начале 2000-х годов KHTML часто критиковали за неполную поддержку веб-стандартов, особенно CSS 2.1 и DOM. Некоторые сайты, разработанные для Internet Explorer, отображались некорректно. Это было связано с тем, что KHTML строго следовал спецификациям W3C, в то время как многие сайты использовали проприетарные расширения IE.
Отсутствие поддержки ActiveX и Flash
KHTML не поддерживал технологию ActiveX от Microsoft, что ограничивало его использование на сайтах, требовавших этого компонента. Также поддержка Flash была реализована через внешние плагины (например, Adobe Flash Player), что иногда приводило к проблемам со стабильностью.
Медленное развитие
По сравнению с коммерческими движками (Internet Explorer, Netscape) и Gecko, KHTML развивался медленнее из-за ограниченных ресурсов сообщества KDE. Это привело к тому, что к 2005 году он отставал по функциональности и производительности от конкурентов.
Интересные факты
- Название: KHTML расшифровывается как «KDE HTML», где «K» — традиционная приставка для проектов KDE.
- Лицензия: KHTML распространяется под LGPL, что позволяет использовать его в коммерческих проектах без необходимости открывать весь исходный код.
- Влияние на WebKit: WebKit, созданный на основе KHTML, стал одним из самых популярных движков в мире. По состоянию на 2024 год, на основе WebKit и его форка Blink работают более 90% браузеров на мобильных устройствах и около 70% на десктопах.
- Конфликт с Apple: В 2005 году разработчики KHTML обвинили Apple в нарушении лицензии LGPL, утверждая, что компания не публикует все изменения в коде. Apple исправила ситуацию, но инцидент подорвал доверие между сообществами.
- Наследие: Несмотря на то, что KHTML больше не используется, его кодовая база продолжает жить в WebKit и Blink, которые являются основой для современных браузеров.
Источники
- KDE Documentation: KHTML — The KDE HTML Engine
- WebKit Open Source Project: History of WebKit
- LWN.net: The KHTML/WebKit split
- W3C: HTML 4.01 Specification
- Apple Inc.: Safari and WebKit
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →