Pull to refresh

Мысли по поводу Qt 5

Reading time6 min
Views15K
Original author: Lars Knoll [Qt Labs]
Qt 4.0 была выпущена в июне 2005 года, почти шесть лет назад. Многое изменилось в индустрии программного обеспечения за эти годы. Тогда разработка приложений шла в основном на настольных системах, сейчас же мобильные устройства, подключенные к сети, становятся все более популярными. Технология пользовательского интерфейса перешла от статических виджетов к плавным сенсорным. Начиная с Qt 4.0, мы выпустили семь минорных версий Qt, следуя потребностям разработчиков и пользователей, например, разработав Qt Quick. С растущей пользовательской базой Qt, растёт потребность во встроенных, мобильных приложениях и UI-разработчиках.

Кроме того, в будущем, чтобы быть ведущим фреймворком для разработчиков в нескольких отраслях, Qt необходимо непрерывно обновляться и развиваться. Qt 4 был эволюцией, поэтому я задумался о том, как могут выглядеть следующие версии Qt с технической точки зрения. Последние годы мы работали над созданием основы для следующей мажорной версии. Я вижу в ней Qt Quick, QML Scenegraph и проект Lighhouse в сочетании с усилением акцента на Qt Webkit как фундамент, который мы планируем использовать для перехода к новому мажорному релизу Qt.

Учитывая, что Qt управляется открыто, я хотел бы поделиться своими размышлениями с сообществом Qt, чтобы начать дискуссии о технической архитектуре Qt 5.


Цели следующей мажорной версии Qt (Qt 5)

  • Улучшить использование GPU, позволяя создавать плавную (и ускоренную) графику даже при ограниченных ресурсах;
  • Сделать создание современных приложений и пользовательских интерфейсов проще и быстрее (с использованием QML и JavaScript);
  • Сделать приложения, подключенные к Сети, мощнее и лучше, то есть дать возможность легко встраивать веб-контент и веб-сервисы в любое приложение Qt.
  • Уменьшить сложность и объем кода, необходимого для поддержания и реализации портов.
Qt 4.7 содержит немного унаследованного кода, что позволяет нам сделать Qt лучше для создания приложений и пользовательских интерфейсов нового поколения. Хотя большая часть все еще имеет очень важное значение для наших разработчиков, но некоторые части тормозят последующее развитие.

Сделать несложным переход с Qt 4 на Qt 5


В Qt 5 мы планируем сделать некоторые изменения в API и оставить позади ограничения из прошлого, чтобы было лучше в будущем. Для тех из вас, кто был с нами при переходе Qt 3 на Qt 4, мы не планируем повторять подобные трудности перехода в Qt 5. Мы считаем, что можем сохранить совместимость в большинстве случаев, но потери бинарной совместимости не избежать. Мы сделаем все, чтобы избежать нарушения каких-либо основ и сделать переход с Qt 4 на Qt 5 очень простым для большинства приложений.

Qt 5 будет сосредоточено на небольшом наборе операционных систем/платформ (т.е. платформ Wayland и X11 на Linux, Mac и Windows). Общее число платформ будет зависеть от усилий открытого сообщества, вложенных в Qt. Другие операционные системы, в настоящее время поддерживаемые Qt 4 (особенно коммерческие системы UNIX), не будут в центре внимания для Nokia. Целью проекта Qt 5 является предоставление наилучшей функциональности на каждой платформе, что означает, что Qt начнёт предлагать более дифференцированные возможности на разных ОС, в то же время предлагая эффективное повторное использование большей части кода на разных платформах.

Открытая разработка вместе с вами при сильной поддержке Nokia


Другим важным изменением в Qt 5 будет модель разработки. Qt 4 был разработан в основном в Trolltech и Nokia, затем опубликован для сообщества разработчиков. Qt 5 мы планируем развивать открыто, как проект с изначально открытым исходным кодом. Не будет никаких различий между разработчиками, работающими в Nokia и другими участниками.

Если вы или ваша компания хотите принять участие в разработке Qt 5, пожалуйста, присоединяйтесь к саммиту разработчиков Qt в Берлине с 16 по 18 июня. Это основное место, где мы хотели бы обсудить вместе с вами планы и идеи для Qt 5.0 и 5.1. Некоторые из нас также будут на саммите разработчиков Ubuntu на этой неделе и конференции MeeGo в конце этого месяца.

Обзор


Qt 5 должна быть основой для нового способа разработки приложений. Пока вся мощность нативности Qt в использовании C++, предлагается сфокусироваться на переходе к модели, где C++ используется в основном для реализации модульного бэкэнда функциональности для Qt Quick.

В Qt 5 мы должны поместить Qt Quick в центр Qt без разрушительных последствий для существующего кода, разработанного для Qt 4. Это будет, скорее, реструктуризацией, что позволит нам изменить способ разработки приложений в будущем.

Хотя традиционные Qt/C++ приложения и будут продолжать работать с Qt 5, но произойдут некоторые фундаментальные изменения в том, КАК приложения могут быть и будут написаны.

Следует ожидать, что с течением времени все интерфейсы будут написаны на QML. JavaScript основным в сообществе Qt, и мы должны ожидать, что большая часть логики приложений и даже целые приложения будут написаны на JavaScript, а не C++. Ожидается, что многие разработчики приложений на уже сейчас начнут с QML и JavaScript, и будут реализовывать функции на C++ лишь тогда, когда это требуется. В некоторых случаях, вся мощь C++ API, предлагаемая Qt, может быть использована для реализации критичных по времени и сложных по функциональности приложений.

Хотя мы и предлагаем поддержку основанной на QWidget модели программирования и набор API для совместимости, в долгосрочной перспективе мы также видим QML как будущее пользовательских интерфейсов на рабочем столе. Решением здесь является основанные на QML наборы компонентов, которые интегрируются с нативными API стилизации на настольных платформах.

Четыре больших архитектурных изменения

  1. Реструктуризация нашего графического стека
    Мы поместим Qt Quick и QML Scenegraph в центр нашей новой графической архитектуры. QPainter по-прежнему будет доступен и очень полезен для многих вещей, но он не будет использоваться для основного интерфейса пользователя. Qt потребует OpenGL (ES) 2.0 для работы. QWidgets будет в иерархии на вершине графа сцен (а не граф сцен на вершине QWidgets, как это сейчас делается в Qt 4).
  2. Все порты Qt будут основаны на Lighthouse
    Проект Lighthouse был начат с целью обеспечения лучшего способа абстрактной интеграции оконных систем, чем мы в настоящее время используемся. Он в настоящее время достигает зрелости в Qt 4.8, и мы намерены использовать Lighthouse для всех портов Qt в Qt 5.0.
  3. Модульная структура репозитория
    Много работы было сделано за последние недели, и вы можете увидеть результаты в новых модульных репозиториях Qt. Модуляризация позволит облегчить и ускорить совместную разработку Qt.
  4. Отделение всех связанных с QWidget функций в отдельную библиотеку
    Пока что классы, основанные на QWidget, чрезвычайно важны для существующих приложений, но с течением времени мы будем приближаться к модели, где все интерфейсы создаются в QML. Выделение функциональности, связанной с QWidget, свою отдельную библиотеку — это хорошая мера для достижения чистой архитектуры Qt 5 в долгосрочной перспективе.
Как вы видели из предыдущих постов, первые три пункта были разработаны в течение достаточно долгого времени, и мы уже начинаем работу над последним. Ожидается, что большая часть этих изменений будет сделана до августа.

Qt Components и Qt Mobility теперь станут неотъемлемой частью платформы Qt, а не модулями со специальным статусом.

Бета-версии доступны к концу 2011 года. Финальный релиз в 2012 году


То, что мы не хотим слишком изменить основы Qt и тот факт, что мы хотим сделать переход существующих приложений на Qt 5 простым, заставляют нас быть осторожными с количеством изменений и существующей базой кода. Большую часть изменений мы уже вам предложили, а также мы начали работы над реструктуризацией нашей кодовой базы в новую модульную структуру, где каждая динамическая библиотека находится в своем собственном репозитории. Мы считаем, что мы должны удалить некоторые очень редко используемые API, которые сохранены для совместимости, но останавливают последующее развитие. Мы также считаем, что бета-версии будут доступны к концу года и окончательный релиз Qt 5.0 будет выпущен в 2012 году.

На прошлой неделе был выпущен Qt SDK с обновлениями, которые планируется использовать в предстоящем году для целевых устройств с Nokia Symbian и MeeGo. Qt 5.0 сосредоточена вокруг следующего поколения приложений и пользовательских интерфейсов, но серьёзных сложностей с переходом на эту версию возникнуть не должно.

Помогите нам ускорить разработку


Для тех из вас, кому интересны подробности, вот ссылка на официальный документ, более подробно описывающий некоторые из идей. Ничего из этого документа не закреплено окончательно, но он отражает наши текущие направления и мысли.

Вы можете следить за нашей работой в хранилищах Qt. Мы намерены поддерживать master-ветку пригодной для использования в любое время, по крайней мере на Linux с Wayland и X11 (плагин xcb lighthouse).

Возможно, что некоторые функции не будут в полной мере доступны в Qt 5.0 и появятся лишь с течением времени в последующих версиях, но надеемся, что существенной регрессии функциональности для Qt 4.8 не будет (да, мы намерены выпустить еще одну промежуточную версию в серии Qt 4.x в течение следующих нескольких месяцев!). При разработке Qt 5 мы должны сделать все от нас зависящее, чтобы сохранить совместимость с Qt 4, так чтобы портирование приложений на Qt 5 было как можно более простым. Так что, если вы хотите помочь или поучаствовать в разработке Qt 5, мы ждем вас на саммите разработчиков Qt в Берлине в июне этого года.
Tags:
Hubs:
+47
Comments44

Articles

Change theme settings