## 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.
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. Google sah es als eine Problemlösung
für die Entwicklung von komplexen Webanwendungen, da JavaScript
nicht die Leistung und Struktur bieten konnte, die Google für die
Entwicklung von hochleistungsfähigen Webanwendungen erwartete. Es
sollte als Ergänzung zu JavaScript für diese Anwendungsfälle genutzt werden [@walrathkathyWhatDart2012, 1-2].
Hingegen der Erwartungen von Google
wurde Dart jedoch nicht so populär wie erwartet und die Programmiersprache blieb
weitestgehend unbekannt. 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.

Erst durch die Einführung von Flutter wurde Dart populärer, da es die
offizielle Programmiersprache für die Entwicklung von Flutter Apps wurde.

Heute ist die neueste Version von Dart die Version 3.3.1. Dart ist
eine der 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 in nativen Code
zu kompilieren [@googleinc.FAQ]. Dies war notwendig, um die Leistung von Dart zu
verbessern und um Dart für die Entwicklung von mobilen Apps zu
optimieren. 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 eine Voraussetzung in Dart, nicht null-sicherer
Code kann nicht mehr kompiliert werden [@googleinc.UnsoundNullSafety]
und es wird einfacher Bugs zu verhindern, die durch Nullpointer
Exceptions entstehen können.

Mit Projekten wie Serverpod [@ServerpodFlutterBackend] und Dart Frog [@DartFrog]
macht Dart auch ein Comeback im Backend-Bereich. Hiermit wird es möglich, sowohl
die Benutzeroberfläche mit Flutter und Dart zu programmieren und auch
nötigen Servercode dazu mit Dart zu schreiben. Dies ermöglicht es, dass Entwickler
effizienter in nur einer Programmiersprache entwickeln können um Projekte
schneller umzusetzen.

# Stand der Technik
