Dlaczego Flutter wybrał Darta, a nie jakiś "lepszy" język
Dlaczego Flutter korzysta z Darta, a nie jakiegoś “lepszego” języka? Pytanie to pojawia się bardzo często na grupkach dartowych i flutterowych (i nie chodzi tutaj tylko o grupki anglojęzyczne). Co więcej, prawie wszystkie komentarze porównują Darta do Kotlina i TypeScriptu.
Przyjrzyjmy się historii. Google wydał Fluttera w maju 2017 podczas Google I/O. Na tym samym wydarzeniu Kotlin został okrzyknięty oficjalnym językiem dla aplikacji androidowych. Jednak wydanie i start developmentu to dwie zupełnie różne sprawy.
Początki
Development Fluttera rozpoczął się w 2014 roku — projekt nazywał się wtedy Sky i w październiku tego samego roku zmieniono nazwę na… uwaga, uwaga — Flutter. Można to wszystko zweryfikować za pomocą tego issue na GitHubie.
Screenshot issue, po którym zmieniono nazwę na Flutter
Przeanalizujmy innych kandydatów
Wyobraźmy sobie, że jest rok 2014 - nie było zbyt wiele technologii, które spełniały poniższe wymagania:
- Posiadanie kontroli nad ewolucją języka, by stworzyć jak najlepsze API frameworka
- Uniknięcie starć prawnych, takich jak Google kontra Oracle .
- Kompilacja powinna być jak najbardziej wydajna.
Kotlin miał 3 lata, ale nie dotarł jeszcze do świata developmentu mobilnego. Pomijając jednak jego małą popularność, problemem mogło być to, że kompilator generował bytecode tylko dla JVM.
C# był wtedy bardzo popularny, ale nie był wystarczająco otwarty. Co więcej, kontrolował go Microsoft, a więc mogło to spowodować ten sam problem, co w przypadku Google i Oracle.
Golang zyskiwał wtedy popularność, a Google eksperymentował z MobileX — pakietem do pisania aplikacji mobilnych z Go. Składnia nie była jednak aż tak przyjazna dla aplikacji mobilnych — bardziej nadawała się do serwerów.
TypeScript miał wtedy 2 lata i był kontrolowany przez Microsoft. Co więcej, do dzisiaj (czyli do 2021), nie ma on skutecznego kompilatora do kodu binarnego pomimo prób stworzenia kompilatora do WASM. Dart nie był wtedy popularny i uważano go za sierotę, ale miał kompilator do Dart VM. Co więcej, Google miał pełną kontrolę nad tym językiem.
Możemy zatem wywnioskować, że Dart był najlepszą opcją (a drugą najlepszą opcją był Kotlin).
Kotlin jest bardziej popularny i jest teraz oficjalnym językiem Androida
Kotlin ma teraz takie narzędzia jak Kotlin Multi-Platform (KMM) i Kotlin Native, aby uniknąć styczności z JVM. Dlaczego więc nie przepisano Fluttera w Kotlinie?
Zanim zadamy sobie to pytanie, pamiętajmy, że istnieje framework o nazwie Jetpack Compose, który jest w fazie beta - był on rozwijany od maja 2017.
Screenshot z Twittera z profilu Jima Sprocha, osoby, która zapoczątkowała Jetpack Compose — Maj 2017
Jetpack Compose (JC) na nowo definiuje sposób, w którym tworzymy mobilne aplikacje Androida — koncept ten jest bardzo zbliżony do Fluttera, ale w kwestii używanych konstrukcji, jest bardzo kompatybilny z Kotlinem.
W tym momencie JC działa tylko dla Androida, podczas gdy Flutter dla wielu platform (mobilnych, webowych i desktopowych), ponieważ Flutter jest 3 lata starszy od JC.
Obie technologie to dobre alternatywy, ale Flutter jest bardziej dojrzały.
Podsumowanie
Biorąc pod uwagę historię, Dart był najlepszym wyborem dla Fluttera, w momencie, w którym Flutter powstawał.
Niestety mamy też za mało ważnych szczegółów, aby mieć jakąkolwiek opinię. Dart był najlepszym i pewnie jedynym wyborem do tworzenia Fluttera w 2014 roku. Myślę więc, że nie to była zachcianka Google’a, ale dobrze ugruntowana decyzja techniczna.
Oryginał tekstu w języku angielskim możesz przeczytać tutaj.