54 lines
3.3 KiB
Markdown
54 lines
3.3 KiB
Markdown
|
\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].
|