Cross-Plattform: Flutter 2.8 und Dart 2.15 liefern mehr Leistung für Mobile Apps

Die zeitgleich vorgelegten Updates des Frameworks und der Programmiersprache versprechen kürzere Startzeiten und geringeren Speicherbedarf für bestehende Apps.

In Pocket speichern vorlesen Druckansicht 2 Kommentare lesen

(Bild: Ko Thongtawat / Shutterstock.com)

Lesezeit: 3 Min.
Inhaltsverzeichnis

Google hat Flutter 2.8 veröffentlicht. Unter den zahlreichen Verbesserungen und Neuerungen, die in das Release des Cross-Plattform-Frameworks sowie das Update der zeitgleich vorgelegten Programmiersprache Dart 2.15 eingeflossen sind, spielt vor allem höhere Performance eine zentrale Rolle. Laut Ankündigung des Flutter-Teams sollen durch das Update auch bereits existierende Mobile Apps von kürzeren Startzeiten und geringerem Speicherbedarf profitieren.

Im Bemühen, die Latenz beim Start von Apps zu senken, hat sich das Flutter-Team verschiedener Aspekte angenommen, darunter der Standard-Schriftartenmanager und das Zusammenspiel mit der Garbage Collection (GC) der Dart VM. Während das sich Einrichten des Schriftartenmanagers bisher offenbar als Engpass beim Setup von Dart Isolate erwies, laufen beide Prozesse künftig zeitgleich (concurrent). Darüber hinaus vermeidet Flutter 2.8 unnötige GC-Zyklen der Dart VM während der Startsequenz einer App. Unter Android beispielsweise benachrichtigt das Framework die Dart VM vor dem Rendern des ersten Frames nur noch bei Speicherengpassmeldungen von TRIM_LEVEL_RUNNING_CRITICAL oder höher.

Auf Geräten mit knappen Speicherressourcen konnte sich bisher auch das vorzeitige Laden des AOT-Codes des Isolate-Service der Dart VM als Problem erweisen. Zumindest für Android erlaubt Flutter 2.8 nun ein bedarfsgerechteres Laden des Dienstes, der nun in einem separaten Bundle zur Verfügung steht. Auch der Platform Thread muss künftig nicht mehr das Erstellen von Platform Views abwarten. Bei einer App wie Google Pay sollen sich durch die genannten Maßnahmen die Startzeiten auf schwächerer Android-Hardware halbieren, auf leistungsfähigeren Geräten sei immerhin eine Verbesserung um etwa zehn Prozent zu verzeichnen.

Zu den in der Ankündigung versprochenen Performanceverbesserungen leistet auch Dart 2.15 einen wichtigen Beitrag, der sich aus einer Überarbeitung des Concurrency-Modells ergibt. Um typische Shared-Memory-Probleme wie Race Conditions zu vermeiden, baut Dart auf den voneinander unabhängigen Ausführungseinheiten Isolates auf. Mit dem neuen Release führt das Dart-Team zudem Isolate Groups ein. Da die in einer solchen Gruppe enthaltenen Isolates sich verschiedene interne Datenstrukturen für das laufende Programm teilen, kann jedes einzelne Element schlanker ausfallen. Das führe zu schnelleren Startzeiten und verringertem Speicherbedarf der einzelnen Ausführungseinheiten – laut Blogbeitrag jeweils bis um den Faktor 100.

Die Syntax von Dart 2.15 erlaubt darüber hinaus nun auch Contructor Tear-offs. Bisher standen Entwicklerinnen und Entwicklern bei der Arbeit mit den Kernbibliotheken von Dart lediglich Function Pointer zur Verfügung. Beispielsweise beim Bauen von Flutter UIs fehlte die nützliche Funktionalität jedoch. Die Contructor Tear-offs erlauben künftig unter anderem einfacheres Erstellen von Column Widgets, wie das folgende Beispiel mit der Text-Widgets zeigt:

class FruitWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
        children: ['Apple', 'Orange'].map(Text.new).toList());
  }
}

Einen vollständigen Überblick aller Änderungen sowie mehr Details zu den neuen Versionen finden sich in den jeweiligen Blogeinträgen des Cross-Plattform-Frameworks Flutter und der Programmiersprache Dart.

(map)