Roadmap de Qt5

Antecedentes

Como sabréis, Velneo V7 está desarrollado en base a Qt4. Actualmente la versión 7.14.0 y 7.14.1 están compiladas con la versión de Qt 4.8.3.

Seguramente no sabréis que además usa otras librerías complementarias (las podéis ver en el cuadro de Créditos dentro del Acerca de…):

  • decNumber v3.61
  • dyncall v0.5
  • WebKit
  • QextSerialPort
  • Scintilla
  • Esta es la base de desarrollo actual que Velneo tiene que contemplar de cara a realizar la migración a Qt5. Esto significa que los problemas a abordar son múltiples y multiplicados por cada plataforma.

     

    Puesta de largo de Qt5

    Qt5 es un cambio importante en la arquitectura de las librerías Qt ya que incorpora nuevos enfoques a la plataforma.

    http://qt.digia.com/Global/Images/Qt/Files/Qt_Developer_Day_China_2013_Presentations/Qt%20Roadmap-930-10.15%20AM%20-%20Qt%20Dev%20Day%20China%202013.pdf

    En el Roadmap de Qt 5 se habla de varios puntos importantes:

  • Compatibilidad 99% con Qt 4
  • Widgets totalmente compatibles con todas las plataformas de escritorio
  • Arquitectura modular
  • Máxima abstracción de la plataforma
  • Nueva arquitectura para la representación gráfica
  • Soporte para C++11
  • Unicode para todo
  • image

    Otras cosas importantes que incorporará:

  • Soporte JSON
  • Soporte para Mimetype
  • Fuertemente integrado con OpenGL (ANGLE para windows sin OpenGL)
  • Soporte multimedia en todas las plataformas
  • Webkit actualizado
  • Efectos gráficos para Qt Quick
  • Qt 3D
  • Respecto a Qt QML & Qt Quick:

  • Nuevo engine para QML (mucho más rápido) QtQuick 2.0
  • Mejoras en la gestión de cara a la Importación de componentes y el manejo de módulos
  • Texto totalmente escalable
  • MultiPointTouchArea
  • Sistema de partículas de serie
  • Qt Quick UI Components
  •  

    Plataformas soportadas por Qt5 (de más a menos)

  • Linux
  • Windows
  • Mac OSX
  • QNX y VxWorks
  • Android
  • iOS
  • Windows Embedded Compact 7
  • BlackBerry 10*
  • Sailfish de Jolla Mobile**
  • Ubuntu de Canonical**
  • WebOS de HP**
  • Tizen de Intel y Samsung***
  • (* en proceso de desarrollo, de menos a más)

    Resumen del soporte actual de Qt para Android:

  • En Qt 5.1 soporte preliminar (no funciona la cámara de Qt Multimedia, Qt WebKit y Qt Quick Controls)
  • En Qt 5.2 soporte completo (pero no es oro todo lo que reluce)
  • Resumen del soporte actual de para iOS:

  • En Qt 5.1 soporte preliminar (solo compila desde MacOSX, no dispone de soporte completo para el look&feel, no hay QtQuick 2.0, sin QtWebKit)
  • En Qt 5.2 soporte completo (pero no es oro todo lo que reluce)
  • Resumen de la evolución de Qt 5

  • 5.0… Para olvidar
  • 5.1… Estable pero carente de algunas cosas importantes
  • 5.2… Totalmente funcional en Windows/Linux/Mac pero carente de algunas funcionalidades complementarias en Blackberry, Android e iOS (necesarias para sacarle todo el potencial a Velneo).
  • 5.3… Seguramente la primera versión donde Qt tomará color en Android e iOS
  •  

    Evolución en detalle de Qt 5 en Android

    Parece que tendremos una versión estable y totalmente funcional de Qt sobre Android en breve, pero… ¿qué está realmente pasando en la cocina para que Velneo no adopte Qt 5 antes del año que viene?.

    Sencillo Qt5 para Android está inmaduro e incompleto, vemos en detalle (marco en negrita y en rojo lo importante para Velneo):

    http://www.kdab.com/qt-on-android-episode-1/?utm_source=rss&utm_medium=rss&utm_campaign=qt-on-android-episode-1

    En los módulos esenciales los problemas son:

    Módulo

    Qt 5.1

    Qt 5.2

    Qt 5.3

    Qt Core

    Los semáforos y memoria compartida no funcionan de forma completa

    Trabajando en ello

    Qt Multimedia

    Sin soporte para la cámara

    soporte con cámara incluida

    Qt Network

    Sin soporte SSL

    soporte completo con SSL

    Qt Quick Controls

    Sin soporte para estilo nativo

    soporte para estilos nativos

    Qt SQL

    Solo soporte para SQL lite

    Qt WebKit & Qt WebKitWidgets, Qt WebEngine

    No disponible por los dimes y diretes de Google y Apple con el WebKit

    Están trabajando en un nuevo enfoque basado en otro engine: Qt WebEngine

    Qt Widgets

    Sin soporte para estilo nativo

    soporte para estilos nativos

    Qt GUI, QML, Quick, Quick Layouts, Test

    Todo funcionando

     

    Y en los añadidos de Qt los problemas están resumidos aquí:

    Module

    Qt 5.1

    Qt 5.2

    Qt 5.3

    Qt Android Extras

    no esta disponible

    capaces de resolver algunas particularidades de Android

    Trabajando en el soporte para los servicios android

    Qt Bluetooth

    no esta disponible

    En el TODO

    Qt NFC

    no esta disponible

    En el TODO

    Qt Positioning

    no esta disponible

    En el TODO

    Qt D-Bus

    no esta disponible, android usa otra cosa llamada IPC.

    Trabajaran en algo similar pero seguramente no esté disponible para esta versión

    Qt Sensors

    Sersores habituales

    Soporte completo

    Qt PrintSupport

    No habrá soporte nativo para Android. Esto es muy importante!!!

    Qt OpenGL

    soporte limitado

    Podrán dar soporte mediante un widget de nivel más alto permitiendo mezclar QGLWidget con QWidgets

    Qt SerialPort

    no esta disponible

    Soporte completo

    Qt Concurrent, Declarative, GraphicalEffects, ImageFormats, Script, ScriptTools, SVG, XML, XMLPatterns

     

    Todo funcionando

     

    Ejemplos corriendo en Android

     

    Evolución en detalle de Qt 5 en iOS

    Parece que ya disponemos de una versión estable y funcional de Qt sobre iOS, pero… ¿está totalmente funcional?.

    Para analizar la verdadera situación no dispongo de tiempo para realizar un análisis detallado pero si os puedo dar el resumen:

    En Qt 5.1:

    • Tenemos soporte completo para: Qt Core, Qt Gui, Qt Network, Qt Widgets, Qt Sensors, Qt Quick 1
    • Limitaciones a la hora de compilar. Requerimos de MacOSx y sus herramientas ya que desplegamos via XCode
    • No tenemos el soporte nativo de look&feel
    • Qt Quick 2 no esta funcional
    • No hay soporte para QtWebKit pero se puede usar el componente nativo

     

    En Qt 5.2:

    • Soporte completo
    • Soporte para Qt Multimedia, Qt Quick 2
    • Quedaran decenas de cosas pendientes relacionada con los Addon’s

     

    Problemas con Windows 8.

    Como sabréis, Window 8 introduce grandes cambios en la interfaz de usuario. También introduce cambios sustanciales de arquitectura y de API’s de programación. Estos cambios están provocando un replanteamiento de Qt5 respecto a como abordar la mejor solución de integración de cara a futuro.
    Estos cambios provocan que de momento, las aplicaciones actuales tendrán que correr en modo clásico (basadas en GDI y Win32) limitando sus despliegues a Windows 8 Pro (no siendo de momento compatibles con Windows RT ni con Windows Phone)

    En el futuro Qt 5 tiene que dar soporte a ambas plataformas (mobile y escritorio) y a todas las versiones de producto (Windows es prioritario para Digia y Qt)

    El soporte para los UI de Windows 8 y para WinRT requiere de un arduo trabajo.

    Los problemas son múltiples:

    • Tienen que cambiar la parte de representación basada en GDI por una basada en WinRT API
    • Necesitan nuevos componentes de UI
    • Además los componentes core tienen que ser refactorizados para conseguir que sean funcionales en WinRT.
    • No hay soporte para hilos (algo que tendrán que resolver)
    • Tienen que rediseñar todo el acceso de red
    • También tendrán que rediseñar el sistema de eventos

     

    Pufff … pus mucho curro me parece.

    ¿Cómo anda la cosa?. Actualmente existe un prototipo pero no será público hasta al menos el cierre de Qt 5.2.

     

    Mis conclusiones

    La fragmentación de plataformas cada vez es mayor, por ello, Qt5 tendrá un hueco importante en esta etapa tecnológica. El problema para Qt es el trabajo que se tiene que hacer para conseguir resolver todos los problemas en todas las plataformas . Poco a poco ese trabajo se está materializando, Qt5 nos muestra el camino que la comunidad open source tiene que seguir de cara a abordar la multiplataforma a bajo nivel. Hay otros enfoques, pero en el fondo todos adolecen del mismo problema (la fragmentación de plataformas) y todos tendrán tarde o temprano que abordar las mismas cuestiones que Qt, especialmente las relacionadas con la compatibilidad a bajo nivel.

    La conclusión fundamental es que Qt5 acaba de empezar una nueva etapa y que aún estando inmaduro en plataformas como Android e iOS será muy funcional en la release 5.2. La proyección es que que en la 5.3 se convierta en una seria alternativa a los frameworks multiplataforma existentes. Por lo tanto Velneo tiene que de alguna forma seguir esta inercia de Digia con Qt para abordar lo antes posible las dos vertientes fundamentales de cara a dar soporte a la multiplataforma en al menos los cinco sistemas operativos mayoritarios.

    Respecto a los tiempo de Velneo con Qt son los lógicos leído este artículo.

    Descargar en formato PDFDescargar en PDF
    1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (3 votes, average: 4,00 out of 5)
    Loading...

    Seguir Jorge Hontoria Jiménez:

    Gerente de TipeSoft

    Dirección de proyectos de integración de software y aplicaciones orientadas a servicios. Implantación de soluciones de integración basadas en SharePoint Portal.

    Últimas publicaciones de

    6 Respuestas

    1. Muy bueno tu analisis como siempre gracias Jorge (Y)

    2. Joder Jorge solo era una visión no un reportaje tipo wikipedia. Excelente y muy muy clarito como siempre.!Gracias¡

    3. Gracias por leerme y espero que resuelva parte de vuestras dudas respecto a los avances de Qt5. Es un gran salto cualitativo y cuantitativo por lo que hay que ser pacientes con Qt y con Velneo.

      Espero que nuestros artículos sean claros respecto a nuestra visión y que no lleven a malentendidos con nadie de la comunidad o de Velneo. Este blog es la forma de comunicar nuestras ilusiones y decepciones respecto a todo lo que gira entorno a la parte tecnológica y empresarial de nuestros productos. Los artículos los escribimos sin mayor interés que aclarar a la comunidad nuestra visión.

      A veces hay artículos negativos, a veces los hay positivos pero en el fondo decimos lo que pensamos buscando la mayor transparencia en el proceso de comunicación de cara a la comunidad de desarrollo que usa nuestros productos.

    4. Jorge tus comentarios y ayudas siempre son de gran interes para nosotros gracias

    5. Jorge, una consulta.

      Cuando dices “pero carente de algunas funcionalidades complementarias en Blackberry, Android e iOS (necesarias para sacarle todo el potencial a Velneo).”

      Yo pregunto, esas carencias en qt5.2, serán peores que las carecnias que existían en Necessitas Alpha y Beta, que es en lo que se basa Velneo para su vClient Android?

      Si Digia ha incorporado al mismo Bogdan Vatra a su equipo hace ya tiempo, ¿no debería ser el soporte de qt 5.2, algo mucho mejor al soporte de que dispone velneo ahora, basandose en qt 4.8.3?

    6. Sin lugar a dudas, la versión 5.2 de Qt es mucho más “completa” que la 4.8.3 y por tanto es de esperar que el vClient compilado con Qt 5.x sea mucho mejor que la anterior versión. Aún siendo de esta forma, la forma de ser de Android hace que algunas cuestiones importantes para Velneo queden sin solución para esta plataforma y otras tengan que esperar un poco más (las que considero más importantes las remarco en rojo).

      Por hacer un supuesto; Si Velneo compila el vClient con la versión 5.1.1 de Qt obtendrá una mejor respuesta en muchos apartados pero seguirá adoleciendo de ciertos problemas de compatibilidad (resumidos en las tablas). No podemos esperar que el vClient para android sea comparable al de Linux/Windows hasta que Velneo compile con una versión de Qt 5 más madura (seguramente para 5.3 o 5.4).

    Dejar una opinión