\linebreak

## Dart

Dart ist die offizielle Programmiersprache für die Entwicklung von
Flutter Apps und wurde in dieser Arbeit für die Entwicklung der
Demo Anwendung verwendet. Dart ist eine objektorientierte, klassenbasierte
Programmiersprache mit Garbage Collection und C-ähnlicher Syntax hat.
Die Sprache wurde von Lars Bak und Kasper Lund entworfen und
bei Google entwickelt. 2011 wurde sie veröffentlicht [@larsbakDartLanguageStructured2011].
Damals wurde Dart speziell für die Entwicklung von Webanwendungen
entwickelt. Es sollte besonders dabei helfen komplexe und hochleistungsfähige
Webanwendungen zu entwickeln. Google sah es aber explizit nicht als
Ersatz für JavaScript, sondern als Ergänzung. Im Buch "What is Dart?" von
den Google Entwicklern Kathy Walrath und Seth Ladd betonten diese 2012,
dass Google nicht erwarten würde, dass Dart JavaScript ersetze, sondern
dass Dart und JavaScript nebeneinander existieren könnten und Dart auch von
JavaScript profitieren kann, da Dart Code in JavaScript transpiliert
werden kann [@walrathkathyWhatDart2012, 1-2]. Hingegen der Erwartungen von Google
wurde Dart jedoch nicht so populär wie erwartet. Google nutzte Dart
zwar intern für einige Projekte, doch die Programmiersprache blieb
weitesgehend unbekannt und wurde nur von wenigen Entwicklern genutzt.
Genaue Gründe sind hierfür nicht bekannt, doch ein Grund könnte sein,
dass die JavaScript Community zu diesem Zeitpunkt
schon sehr groß war und viele Entwickler nicht bereit waren, auf eine
komplett neue Programmiersprache umzusteigen. Zudem wurde 2012 TypeScript von
Microsoft veröffentlicht, welches ähnliche Probleme wie Dart löst, jedoch
besser in die bestehende JavaScript-Community integriert werden konnte, da es JavaScript
als Sprache erweitert und Entwickler so nicht eine komplett neue
Sprache lernen mussten.

Erst durch die Einführung von Flutter wurde Dart populärer, da es die
offizielle Programmiersprache für die Entwicklung von Flutter Apps ist.
Flutter wurde intern bei Google anfangs mit JavaScript entwickelt, doch
dies führte zu Problemen, da JavaScript nicht die Performance und
Stabilität bieten konnte, die Google für die Entwicklung von mobilen
Apps erwartete. Daher wurde JavaScript durch Dart ersetzt und das
Flutter und Dart Team haben eng zusammengearbeitet, um Dart so zu
verbessern, dass es die Anforderungen von Flutter am besten erfüllt.

Heute ist die neueste Version von Dart die Version 3.3.1. Dart ist
eine der wenigen Programmiersprachen, die seit ihrer Veröffentlichung
sehr starke Veränderungen durchgemacht hat. So wurde zu der JIT (Just
in Time) Kompilierung, die Dart ursprünglich verwendete, eine AOT (Ahead of
Time) Kompilierung hinzugefügt, die es ermöglicht, Dart Code in nativen Code
zu kompilieren. Dies war notwendig, um die Performance von Dart zu
verbessern und um Dart für die Entwicklung von mobilen Apps zu
optimieren, zusätzlich auch weil Apple keine JIT Kompilierung auf iOS
Geräten erlaubt. Mit Version 3 wurde eine komplette Sound Null Safety
zu Dart hinzugefügt. Sound Null Safety bedeutet, dass der komplette
Code und auch Code aus allen Bibliotheken vollständig null-sicher sein muss.
Mit Version 3 ist dies auch eine Voraussetzung in Dart, nicht null-sicherer
Code kann nicht mehr kompiliert werden [@googleinc.UnsoundNullSafety].
