Компания Digia объявила о начале тестирования первого предварительного выпуска Qt WebEngine, компонента для использования браузерного движка в Qt-приложениях, идущего на смену Qt WebKit. Qt WebEngine отличается переходом на кодовую базу проекта Blink, в рамках которого компания Google развивает форк движка WebKit. Qt WebEngine войдёт в состав Qt 5.3, выпуск которого намечен на 29 апреля 2014 года.
Главное отличие Blink от WebKit заключается в использовании другой многопроцессной архитектуры, изначально применяемой в проектах Chrome/Chromium и подразумевающей наличие отдельного диспетчера ресурсов для взаимодействия с другими модулями. Кроме того, в Blink ведётся большая работа по упрощению движка и очищению его от лишнего груза, такого как поддержка устаревших платформ, ограничивающих возможности по дальнейшему развитию и оптимизации.
Для использования преимуществ многопроцессной модели Blink, подразумевающей выполнение движка в отдельном изолированном процессе, разработчики Qt подготовили новый вариант API, который отличается от API Qt WebKit иными методами встраивания QObject и организацией взаимодействия c web-страницей в асинхронном режиме. Новый API в большинстве случаев повторяет старый API, например, обеспечена совместимость элемента Qt Quick WebView, но требует внесения изменений в приложения при встраивании QObject или при желании использовать специфичные возможности QWebElement API.
Первый тестовый выпуск Qt WebEngine нацелен главным образом на проверку интеграции с Qt и Qt Quick. Для Qt Quick и виджетов предоставлен предварительный API, который пока не является стабильным и ещё будет дополняться. В случае Qt Quick, API непосредственно интегрируется с Qt Scene Graph и поэтому обеспечивает высокую производительность для активного web-контента (например, WebGL). Widgets API главным образом сфокусирован на упрощении портирования с QtWebKit. Доступный для загрузки (git) модуль Qt WebEngine поддерживает только Linux и Mac OS X, но в будущем также будет адаптирован для Windows и встраиваемых платформ на базе Android и Linux.
Для разработчиков приложений планируется подготовить средства для упрощения миграции программ с Qt WebKit на Qt WebEngine. Для знакомства с Qt WebEngine в архив включено несколько рабочих примеров: QuickNanoBrowser — простой web-браузер, поддерживающий вкладки, и оптимально подходящий для оценки высокой производительности отрисовки WebGL-приложений, которой можно добиться за счёт интеграции с Qt Scene Graph; Browser — вариант оригинального демонстрационного браузера, показывающий технику портирвоания с QtWebKitWidgets на Qt WebEngine; FancyBrowser — демонстрирует средства взаимодействия с web-контентом, используя jQuery и асинхронный метод runJavaScript.
Основные причины перехода с WebKit на Blink и технологии Chromium:
- В разработке Chromium большое внимание уделяется кросс-платформенности, поддерживаются все основные настольные платформы и Android. В WebKit поддержка современных платформ отстаёт от Chromium;
- Многие возможности, требующие дополнительной доработки при использовании WebKit, доступны из коробки в Chromium. Например, Chromium упрощает использование наработок по адаптации продукта для разных платформ и операционных систем, без дополнительных Qt-специфичных надстроек работают мультимедийные возможности и WebRTC.
- При использовании Chromium упрощается интеграция с операционной системой, что позволяет сосредоточить внимание на развитии API и интеграции с Qt;
- Разработка Chromium ведётся под очень серъёзным контролем в соответствии с высокими требованиями к качеству, что упрощает тестирование производных продуктов;
- Chromium позволяет обеспечить более качественную и высокопроизводительную интеграцию как с виджетами, так и с элементами сцены Qt Quick;
- Chromium является одним из наиболее динамично развивающихся проектов.