Скрыть
Ларс Нол (Lars Knoll), создатель движка KHTML, руководитель проекта Qt Project и директор по развитию фреймворка Qt в компании Digia, официально анонсировал релиз кроссплатформенного фреймворка Qt 5.0, первого значительного выпуска за последние семь лет. Фреймворк развивается компанией Digia при непосредственном участии сообщества в рамках нового полностью открытого процесса разработки и управления проектом.
В конце января планируется выпустить первый корректирующий релиз 5.0.1. Весной ожидается значительный релиз 5.1, в который будут включены некоторые компоненты не вошедшие в выпуск 5.0, например, Qt 3D и Qt Sensors. Примерно в то же время будут опубликованы предварительные версии Qt для платформ Android и iOS. После этого значительные версии станут выпускаться в соответствии с фиксированным циклом подготовки релизов, два раза в год.
Qt 5 примечателен модульной структурой и смещением акцента в сторону использования для написания приложений средств декларативного описания интерфейса с определением логики взаимодействия с пользователем на языке JavaScript, в то время как применение C++ позиционируется для реализации критичных ко времени выполнения или излишне сложных частей программы, а также для создания новых модульных бэкендов для Qt Quick. Несмотря на большое число существенных улучшений и изменений, Qt 5 сохраняет базовую обратную совместимость с прошлыми выпусками, поддерживает в полной мере средства для создания Qt-программ на языке C++ и содержит почти все компоненты Qt 4 (прекращена поддержка давно устаревших элементов), большинство модулей из бывшего Qt Mobility и некоторые экспериментальные элементы из Qt Labs.
Основные особенности Qt 5:
- Модульная структура репозитория. Многие из подсистем Qt разрабатываются разными группами разработчиков, развиваются с повышенной интенсивностью или плотно зависят от сторонних проектов. При грамотном разбиении фреймворка на модули, подобные подпроекты смогут обновляться и поставляться независимо от других частей Qt. Модульная организация репозитория позволит обеспечить сборку отдельных библиотек без загрузки и пересборки всех зависимостей, а также независимое использование каждой библиотеки, т.е. в разработчики получат возможность обособлено использовать только те компоненты Qt, которые им необходимы. Разработчики интенсивно развивающихся подсистем QtWebKit и QtDeclarative получат возможность не ждать когда подтянется другой код и выпускать релизы значительно чаще. Кроме того, модульная структура существенно упростит приём в состав Qt модулей, созданных сторонними проектами, например, проект KDE намерен добиваться интеграции в Qt некоторых своих библиотек общего назначения. Ожидается, что разбиение на модули является длительным и постепенным процессом, который будет продолжен и после выхода Qt 5.0.
- Перевод всех портов на использование уровня абстракции Qt Platform Abstraction layer (QPA), основанного на наработках проекта Lighthouse. QPA значительно упрощает перенос Qt на новые оконные системы и устройства, так как он изначально оперирует более абстрактными категориями, фундаментально отличаясь от ранее используемых средств интеграции с оконными системами. Например, уже написаны бэкенды для QNX, Android и iOS. В настоящее время реализация QPA уже входит в состав Qt 4.8, в качестве замены QWS/Qt Embedded, но в Qt 5 данная прослойка задействована для всех платформ, что потребовало существенной переработки огромной части кода, связанного с обеспечением поддержки различных платформ. Из полностью поддерживаемых платформ отмечены: X11/Linux, Windows, Mac OS X, Embedded Linux и Windows Embedded.
- Изменение архитектуры графического стека и увеличение производительности графических операций. В качестве центрального элемента новой архитектуры для Qt Quick выступает QML Scenegraph, работающий поверх OpenGL. Для работы новой графической архитектуры Qt 5 система должна поддерживать как минимум OpenGL (ES) 2.0. В качестве примера производительности Qt 5 приводится способность вывода контента со скоростью 60 кадров в секунду на одноплатном компьютере Raspberry Pi.
Поддержка QPainter сохранена для выполнения расширенных функций, но ограничена возможностью использования бэкенда программной растеризации вывода (Raster), бэкенда OpenGL и бэкенда для вывода на печать и создания PDF. Поддержка привязанных к платформам бэкендов, таких как X11 и CoreGraphics, прекращена. QWidgets теперь отображается поверх графической сцены, а не наоборот, как реализовано в версии Qt 4, что позволило перейти в Qt 5 на принципиально новую графическую архитектуру, сохранив при этом совместимость с Qt 4.
В QtGui добавлен набор классов QOpenGL*, заменивших собой устаревшие классы QGL*, которые пока оставлены для обеспечения совместимости. Также представлен класс QGuiApplication, которые заметно легче классов QApplication и QWindow при выполнении задач обработки корневой области на экране. - Выделение всех связанных с QWidget возможностей в отдельную библиотеку. Несмотря на то, что основанные на QWidget классы чрезвычайно важны для существующих приложений, общая тенденция ведёт к тому, что все пользовательские интерфейсы должны быть реализованы на QML и Qt Quick. Отделение связанных с QWidget функций в отдельную библиотеку позволит в долгосрочной перспективе сохранить чистоту архитектуры Qt 5.
- Переработанная реализация Qt Quick 2, которая разделена на отдельные модули, связанные с графической частью и с компонентами поддержки языков QML и JavaScript. Обеспечивающие выполнение JavaScript классы (QJSEngine и QJSValue) теперь базируются на JavaScript-движке V8, развиваемом при участии компании Google и распространяемом под лицензией BSD. В движок QML также внесены значительные оптимизации производительности и связанные с языком улучшения, при сохранении базовой совместимости. Модуль Qt Quick включает в себя реализацию Scenegraph на базе OpenGL и все ранее поддерживаемые в Qt 4.x базовые возможности. Дополнительно добавлена поддержка графических эффектов, создаваемых при помощи шейдеров OpenGL. Для обеспечения обратной совместимости в виде модуля Qt Quick 1 доступна полностью совместимая с Qt 4.x реализация Qt Quick.
- В состав Qt Core включен парсер формата JSON и оптимизированное для более высокой скорости обработки бинарное представление для данных JSON. Добавлена поддержка определения MIME-типа как по расширению, так и по содержимому. Добавлен движок для обработки регулярных выражений, полностью совместимых с Perl. Добавлена поддержка стандарта C++11, но сохранена возможность сборки и при помощи компиляторов, совместимых с C++98;
- Включение в состав основного пакета дополнительных инструментов, таких как визуальный построитель интерфейса Qt Designer, интерфейс для локализации приложений Qt Linguist и интегрированная среда разработки Qt Creator, которые ранее развивались в виде обособленных проектов;
Компоненты, входящие в состав пакета Qt 5.0:
Базовые библиотеки:
- Qt Core
- Qt Network
- Qt Gui
- Qt Sql
- Qt Testlib
- Qt Widgets
- Qt Qml
- Qt Quick
- Qt Multimedia
- Qt WebKit
- Qt WebKit Widgets
Дополнения:
- Qt Xml
- Qt XmlPatterns
- Qt Svg
- Qt Concurrent
- Qt Printsupport
- Qt DBus
- Qt OpenGL
- Qt ActiveQt
- Qt Graphical Effects
- Qt Script
- Qt Declarative
- Qt Image Formats
Инструменты и сопутствующие проекту элементы:
- Qt Assistant
- Qt Linguist
- Qt Designer
- Qt Translations
- Qt Creator
- Qt Documentation
>>>
Подробнее