Qt Developer Days Europe: Wohin steuert Qt?

Qt Cloud Services & Mobile

Qt Cloud Services: Managed Application Runtime, Cloud Storage und Managed Web Sockets

Die Qt Cloud Services lassen sich sich sowohl als Backend für das Internet der Dinge als auch allgemein für skalierbare Webanwendungen nutzen. Der Enginio Data Storage (EDS) bietet Cloud-Storage mit Authentifizierung und Zugriffskontrolle. Seine wichtigsten Use Cases sind das Speichern, Teilen und Synchronisieren von Daten mehrerer Clients sowie das Speichern der Einstellungen und Zustände von Applikationen.

Unterstützung erhält der Service dabei von den Managed Web Sockets (MWS), die eine bidirektionale Gateway für die Echtzeitkommunikation via Websockets implementieren. Die Managed Application Runtime (MAR) ist eine Platform as a Service (PaaS) und unterstützt eine Vielzahl von Sprachen und Datenbanken, darunter C++ (Qt), Node.js, Python, Java, Ruby, PHP sowie MySQL, MongoDB und Redis.

Mobile Apps mit Qt entwickeln

Während Android mit Qt 5.2 nahezu vollständig und iOS weitgehend bedient werden, hat der Support von WinRT und Windows Phone mit Qt 5.3 noch Beta-Status. Letztere sollen mit Qt 5.4 in die Liste der offiziell unterstützen Plattformen aufgenommen werden. Bereits heute gibt es jedoch insbesondere in den App-Stores von Google und Apple eine Vielzahl von Apps, die mit Qt erstellt wurden. Während der Zugriff auf Sensoren und Kamera in den Klassen QSensors und QCamera gekapselt ist, sind unter Android spezifische Funktionen des Systems auch per JNI zugänglich.

Bogdan Vatra zeigt das Zusammenspiel von Android und Qt via JNI (Abb. 2).

Qt und 3D-Grafik

Seit Qt Quick 2 greift die Qt Render Engine auf die OpenGL-Hardwarebeschleunigung der verwendeten Plattform zurück (OpenGL 2.0 oder OpenGL ES 2.0 im Embedded-Bereich). Die Elemente der Programmoberfläche werden dazu in einem Szenengraph angeordnet und dann an die Grafikhardware weitergereicht. Dieser Ansatz ist effizient und eröffnet zusätzlich noch die Möglichkeit, weitere 3D-Inhalte in den Graphen einzubauen. Das von Pasi Keränen entwickelte Modul Qt3D Canvas implementiert die WebGL API in Qt Quick. Im Zusammenhang mit WebGL wird häufig die JavaScript-Bibliothek three.js verwendet, da sie eine wesentlich effizientere Beschreibung von Szenengraphen ermöglicht.

James Turner und Giuseppe D'Angelo erläutern das Framegraph-Konzept von Qt3D (Abb. 3).
Pasi Keränen gibt Tipps zum Portieren von three.js Anwendungen nach Qt (Abb. 4).

Sie wurde ebenfalls für Qt portiert und steht für das Canvas3D-Modul zur Verfügung. Demonstriert wurde das mit einer Portierung des Fahrzeug-Visualizers von threejs.org. Die Demo wurde dabei über das Original hinaus erweitert, um Animationen für Farbübergänge und Kamerafahrten zu zeigen, die sich mit Qt Quick einfach erzeugen lassen. Im Gespräch mit dem Autor hatte Keränen noch einen Tipp für das Erzeugen von WebGL-Content parat: Das 3D-Authoring-Framework blend4web erlaubt das direkte Erzeugen von WebGL aus dem Modeling- und Animations-Tool Blender.

Ein noch leistungsfähigeres 3D-Framework wird derzeit als Qt3D-2.0-Modul entwickelt. Hier kann der Entwickler auf sämtliche OpenGL-Funktionen zugreifen. Als dritte Möglichkeit für 3D unter Qt lässt sich die QWebEngine verwenden, da ja das Modul auf Chromium basiert und somit WebGL und JavaScript-Bibliotheken für 3D unterstützt.

Pierre Rossi erklärt die Architektur des auf Chromium basierenden Moduls QtWebEngine (Abb. 5).

Fazit

Die Qt Developer Days haben einen umfangreichen Überblick über den derzeitigen Entwicklungsstand und die nahe Zukunft des facettenreichen Frameworks gegeben. Mit seiner deklarativen Oberflächenbeschreibung, neuen Mobilplattformen, umfangreichen 3D-Features, der Unterstützung von JavaScript, aber auch den Schnittstellen zu Webtechniken einschließlich der Integration der Chromium Engine sowie dem Cloud-Backend für Webanwendungen und das Internet der Dinge hat sich Qt auf der Höhe der Zeit präsentiert. (ane)

Dr. Matthias Nagorni
schreibt seit mehr als 12 Jahren Open-Source-Software in Qt und ist zurzeit Solution Architect bei der Firma Mackevision.