Ларс Нол (Lars Knoll), создатель движка KHTML, руководитель проекта Qt Project и директор по развитию фреймворка Qt в компании Digia, представил Qt WebEngine, новый компонент для использования браузерного движка в Qt-приложениях. Qt WebEngine идёт на смену Qt WebKit и отличается переходом на кодовую базу проекта Blink, в рамках которого компания Google развивает форк движка WebKit.
Примечательно, что до основания форка проект Qt занимал третье место по вкладу в развитие WebKit (на первом месте был Google, на втором Apple). Присоединение Qt к развитию Blink, вслед за Adobe и Opera, меняет расстановку сил - из заметных контрибьютеров WebKit остаётся только компания Apple. Отмечается, что решение о миграции Qt на Blink принято после досконального изучения особенностей обоих движков и учёта того, что WebKit изначально позиционируется как универсальный продукт, а Blink достаточно плотно завязан на технологии Chromium. В итоге, Blink отмечен как более перспективный проект, являющийся оптимальным выбором для Qt в долгосрочной перспективе.
Среди факторов, способствовавших принятию решения отмечаются:
- В разработке Chromium большое внимание уделяется кросс-платформенности, поддерживаются все основные десктоп-платформы и Android. В WebKit поддержка современных платформ отстаёт от Chromium;
- Многие возможности, требующие дополнительной доработки при использовании WebKit, доступны из коробки в Chromium. Например, Chromium упрощает использование наработок по адаптации продукта для разных платформ и операционных систем, без дополнительных Qt-специфичных надстроек работают мультимедийные возможности и WebRTC.
- При использовании Chromium упрощается интеграция с операционной системой, что позволяет сосредоточить внимание на развитии API и интеграции с Qt;
- Разработка Chromium ведётся под очень серъёзным контролем в соответствии с высокими требованиями к качеству, что упрощает тестирование производных продуктов;
- Chromium позволяет обеспечить более качественную и высокопроизводительную интеграцию как с виджетами, так и с элментами сцены Qt Quick;
- Chromium является одним из наиболее динамично развивающихся проектов.
Blink отличается использованием иной многопроцессной архитектуры, изначально применяемой в проектах Chrome/Chromium и подразумевающей использование отдельного диспетчера ресурсов для взаимодействия с другими модулями. Кроме того, в Blink ведётся большая работа по упрощению движка и очищению его от лишнего груза, такого как поддержка устаревших платформ, ограничивающих возможности по дальнейшему развитию и оптимизации.
Для использования преимуществ многопроцессной модели Blink, подразумевающей выполнение движка в отдельном изолированном процессе, разработчики Qt подготовили новый API QWebElement, который отличается от API Qt WebKit иной организацией встраивания QObject и использованием взаимодействия между QObject и web-страницей в асинхронном режиме. Первый выпуск Qt WebEngine войдёт в состав Qt 5.3, ожидаемого весной следующего года. Модуль Qt WebEngine будет поддерживаться для Windows, Mac OS X, Linux и встраиваемых платформ на базе Linux.
Поддержка старого API Qt WebKit будет сохранена для обеспечения совместимости и будет поддерживаться в ближайшие годы, но поддержка будет ограничена исправлением ошибок - функциональность старого движка обновляться не будет. После выпуска Qt 5.2 всё внимание будет уделено разработке Qt WebEngine. Для разработчиков приложений будут представлены средства для бесшовной миграции программ с Qt WebKit на Qt WebEngine, что позволит максимально упростить процесс перехода на новый API. При этом новый API в большинстве случаев будет повторять старый API, например, планируется на 100% сохранить совместимость элемента Qt Quick WebView. Правки потребуется вносить при встраивании QObject или при желании использовать специфичные возможности QWebElement API.