C++-Framework: Qt 5.9 als neues Long-Time-Support-Release veröffentlicht
[ad_1]
Die neue Version des Qt-Frameworks zur Entwicklung plattformunabhängiger Anwendungen löst Qt 5.6 als neues LTS-Release ab. Ansonsten weiß Qt 5.9 mit vielen Detailänderungen und besserer Performance zu überzeugen.
Qt wird aufgrund des Abkommens mit der KDE Free Qt Foundation regelmäßig aktualisiert. Um Anwendern, die nicht jedes Release mitgehen wollen oder können, gewisse Garantien zu geben, hat man sich darauf verständigt, von Zeit zu Zeit LTS-Releases (Long Term Support) herauszugeben. Das bedeutet, dass eine LTS-Version von Qt auch dann noch Updates erhält, wenn der Nachfolger bereits auf dem Markt ist. Normalerweise ist das nicht der Fall – wer beispielsweise nach dem Erscheinen von Qt 5.8 einen Fehler in Qt 5.7 meldet, bekommt diesen nur im Rahmen eines Releases von Qt 5.8.x gefixt. Das neue Qt 5.9 ist ab sofort der aktuelle LTS-Branch.
Qt ist ein seit Jahren entwickeltes und reifes Framework. Deswegen haben die Entwickler von Qt naturgemäß das Problem, dass das Finden neuer Features mit steigendem Umfang zunehmend schwieriger wird. Das Team identifizierte für das neue Release einige Dutzend Baustellen, die auf einer gesonderten Webseite detailliert aufgelistet wurden.
Änderungen im Kleinen
Wer unter Qt mit nativen Plattformen arbeitet, musste bisher komplexe Abstraktionsklassen realisieren. Qt 5.9 hilft hier mit einer neuen Klasse aus, die zur Laufzeit Reflektion über die Arbeitsumgebung ermöglicht:
class Q_CORE_EXPORT QOperatingSystemVersion
{
public:
enum OSType {
Unknown = 0,
Windows,
macOS,
iOS,
tvOS,
WatchOS,
Android
};
static const QOperatingSystemVersion Windows7;
static const QOperatingSystemVersion Windows8;
...
Q_DECL_CONSTEXPR OSType type() const { return m_os; }
QString name() const;
Freunde des Location-Moduls dürfen sich derweil über neue APIs freuen, die das Rotieren und Kippen von Karten ermöglichen: Dieses in anderen Mapping-Frameworks schon lange vorhandene Feature setzte unter Qt Location bisher von Hand zu realisierende Bitmap-Operationen voraus. Ähnliches findet sich in Qt Charts, wo einige für wissenschaftliche Anwender wichtige Erweiterungen bereitstehen (Stichwort logarithmische Diagrammachsen).
Nutzer von Qt Quick Controls dürfen sich in Version 5.9 über Multitouch-Support freuen. Das Qt fördernde Unternehmen Digia spendiert zudem eine Gruppe neuer Animationen, die die Qualität des Benutzerinterfaces erhöhen und eine langjährige Scharte des Frameworks beheben. Das in Qt seit einiger Zeit enthaltene virtuelle Keyboard bekam derweil Unterstützung für hauseigene Layouts, was Entwicklern das Erzeugen applikationsspezifischer virtueller Tastaturen erleichtert.
Außerdem wurde die Kompatibilität mancher Elemente des Frameworks erweitert: So stand die NFC-API unter Android bisher nicht zur Verfügung, während QprocessEnvironment nun auch in Apples Mobilsystemen einsetzbar ist. Windows RT darf derweil auf Bluetooth Classic zugreifen, während Android nun Bluetooth-Peripherals unterstützt.
Wirklich neu
Das einzige komplett neue Modul ist Qt Gamepad, das Entwicklern den direkten Zugriff auf Spielsteuergeräte ermöglichen soll und bisher nur als Preview vorlag. Qt Creator 4.3.0 verbessert die Integration zwischen Code und WYSIWYG auf QML-Ebene: So gibt es einige Ansichten, in denen sich QML-Code gleichzeitig grafisch und textuell bearbeiten lässt.
Code und Grafik, gleichzeitig am Schirm
Bild: Digia
Neben der Möglichkeit zur Kombination aus grafischem und codierendem Bearbeiten erlaubt Qt Creator 4.3 auch die Kombination aus Code-Bearbeitung und Profiler-Ergebnissen.
Nutzer des QNetworkAccessManager bekommen zwei Erweiterungen im Interesse der Sicherheit. Erstens wird nun auch HTTP Strict Transport Security (HSTS) unterstützt, zweitens ermöglicht ein neuer Aufzählungstyp das feingranulare Einstellen des Verhaltens bei der Abarbeitung von Weiterleitungen:
RedirectsPolicy {
ManualRedirectsPolicy,
NoLessSafeRedirectsPolicy,
SameOriginRedirectsPolicy
}
Qt3D erfuhr diverse Erweiterungen. Ein besonderes Feature ist die Möglichkeit, auf Qt Quick 2 basierende Szenen in eine Textur zu kopieren, um dieses Resultat sodann wie eine gewöhnliche Textur in dreidimensionalen Szenen weiterzuverwenden. Zudem steht mit qfloat16 eine 16-bittige Gleitkommazahl zur Verfügung, die bei der Interaktion mit GPUs und Accelerator-Karten hilfreich sein dürfte.
QML wird schneller
Unter Linux war QML – insbesondere auf ARM-Prozessoren – vergleichsweise langsam, was das Deployment sehr leistungsstarker CPUs erforderte und den Stromverbrauch des Gesamtsystems erhöhte. Eines der Hauptziele von Qt 5.9 war die Steigerung der Performance an dieser Stelle.
Qt 5.9 bringt diverse Möglichkeiten zur Geschwindigkeitssteigerung mit.
Bild: Digia
Diverse Optimierungen im Hintergrund senken den Speicherbedarf und beschleunigen das Abarbeiten von Shadern. Von besonderem Interesse in diesem Zusammenhang ist auch eine Optimierung im Entwicklungsprozess von Qt – eine Vielzahl automatisierter Performancetests sorgen dafür, dass das Qt-Team die Performance des Frameworks permanent im Blick hat.
Dank Graphana stehen Leistungsinformationen permanent zur Verfügung.
Qt Lite wurde im Rahmen von Qt 5.9 mit feingranulareren Bitschaltern versehen: Hinter dieser auf den ersten Blick komplex klingenden Formulierung verbirgt sich die Möglichkeit, die einzelnen Module noch genauer ein- und auszuschließen. Im Zusammenspiel mit wesentlichen Verbesserungen im Bereich der Optimierbarkeit ergibt sich eine massive Reduktion der Kompilatgröße.
Kleines Fazit
Im Bereich Betriebssystem-Support gab es einen kleinen Tausch: Windows RT 8.1 wird nicht mehr unterstützt. Stattdessen steht nun das Echtzeitbetriebssystem Integrity zur Verfügung, das im Rüstungs- und Embedded-Bereich erfolgreich ist.
Das neue Qt bringt eine Vielzahl von Verbesserungen am Gesamtframework. Wer derzeit noch mit einer älteren Version von Qt arbeitet, wird das Upgrade nicht bereuen. Im Zusammenspiel mit der neuen Variante der Qt-Creator-IDE dürften sich zudem bei der Arbeit mit QML Produktivitätssteigerungen ergeben. (ane)
[ad_2]
Read more on: Source