Flutter vs Kotlin Multiplatform: co wybrać do budowy aplikacji mobilnej?

Czy chcesz, żeby budowa Twojej aplikacji zajmowała jak najmniej czasu, a jednocześnie, aby jej wydajność była na jak najwyższym poziomie? Technologie cross-platformowe mogą to umożliwić.
Poznaj Fluttera, jednego z najpopularniejszych cross-platformowych frameworków i technologię Kotlin Multiplatform, wschodzącą gwiazdę na tym polu.
Przeczytaj nasze zestawienie i wybierz najlepsze rozwiązanie dla Twojego projektu aplikacji mobilnej.
Kluczowe wnioski
- Tworzenie aplikacji cross-platformowych to świetny sposób na oszczędność czasu i zasobów, który jednocześnie zapewnia wysoką wydajność. Dwa popularne frameworki cross-platformowe, które warto rozważyć, to Flutter i Kotlin Multiplatform.
- Aplikacje cross-platformowe mają bazę kodu, która może działać na wielu systemach, takich jak Android, iOS, a nawet platformy desktopowe lub IoT. Eliminuje to potrzebę tworzenia oddzielnych aplikacji natywnych dla każdej platformy, oszczędzając czas i pieniądze.
- Flutter jest często preferowaną technologią do tworzenia aplikacji cross-platformowych. Wykorzystuje kompilator JIT i język programowania Dart, zapewniając szybsze działanie w porównaniu z alternatywami, takimi jak React Native.
- Flutter oferuje również specjalne funkcje, takie jak hot reload, które pozwalają programistom szybko zobaczyć zmiany w aplikacji i ułatwiają debugowanie.
- Kotlin Multiplatform (KMP) to rozwiązanie, które bazuje na języku Kotlin. Za pomocą KMP programiści mogą udostępniać niektóre części kodu między platformami, ale nie tak wiele, jak w przypadku Fluttera. To sprawia, że tworzenie aplikacji jest nieco bardziej czasochłonne, ale mniej niż w przypadku aplikacji w 100% natywnych.
- Wybierając między Flutterem a KMP, należy wziąć pod uwagę takie czynniki, jak szybkość, natywne doświadczenie i możliwości udostępniania kodu. Oba frameworki oferują unikalne korzyści.
Czym są aplikacje cross-platformowe?
Aplikacje cross-platformowe mają wspólną bazę kodu, która może działać na różnych systemach, takich jak Android, iOS czy nawet Windows, Linux lub platformy IoT.
Ich przeciwieństwem są aplikacje natywne – napisane np. w Kotlinie albo Swifcie – które rozwijamy z myślą o konkretnej platformie. W praktyce oznacza to, że do stworzenia każdej aplikacji natywnej trzeba przyjąć do zespołu nowego programistę.
W przypadku aplikacji cross-platformowych nie ma takiej potrzeby. Jeden programista tworzy produkt i na Androida, i na iOS. W rezultacie zespół może szybciej realizować projekty, a ich koszt jest mniejszy.
Flutter należy do najczęściej wybieranych technologii, które umożliwiają rozwój aplikacji cross-platformowych. Nie musisz jednak wybierać pomiędzy nim a rozwiązaniami natywnymi. Kotlin Multiplatform ostatnio stał się godną uwagi alternatywą dla tych, którzy chcą przyspieszyć proces tworzenia produktu na urządzenia mobilne, a jednocześnie przywiązują dużą wagę do zapewniania natywnych doświadczeń.
Dowiedz się więcej o różnicach pomiędzy tymi dwoma rozwiązaniami.
Najważniejsze informacje o Flutterze
Flutter to SDK (ang. software development kit), które pozwala współdzielić duże partie kodu między platformami.
Główną alternatywną dla Fluttera jest React Native, ale niektóre raporty pokazują, że popularność tego ostatniego spada. Czemu? Głównie dlatego, że Flutter jest szybszy. Wykorzystuje kompilację JIT i język programowania Dart, który nie musi komunikować się z natywnymi elementami przez most.
Hot reload to kolejna unikalna funkcja Fluttera. Programiści używają jej, żeby zobaczyć, jak aplikacja wygląda tuż po wprowadzeniu zmian w kodzie. To pozwala im szybko sprawdzić, czy ich praca przyniosła spodziewany wynik i czy nie trzeba czegoś poprawić.
Przykłady aplikacji
ABOUT YOU
To aplikacja eCommerce, którą wcześniej tworzono w technologii React Native. Nie pozwalała ona rozwijać produktu tak szybko, jak chciał zespół, dlatego podjęto decyzję o przejściu na Fluttera.
Dowiedz się więcej o tym projekcie.
Źródło: Google Play Store
Wolt
Wolt postawił na Fluttera z prostych względów: zespół chciał zaoszczędzić więcej czasu i wykorzystywać mniej zasobów niż wtedy, gdy utrzymywał dwie bazy kodu – na iOS i Androida. Aplikacja cross-platformowa była najlepszym rozwiązaniem. Na dodatek Flutter pozwala tworzyć responsywny design i ułatwia integrowanie natywnych funkcji.
Sprawdź case study tej aplikacji.
Źródło: Google Play Store
LeggUP
LeggUP to platforma wspomagająca rozwój osobisty i zawodowy. Początkowo istniało tylko rozwiązanie webowe, ale zespół potrzebował aplikacji mobilnej, która umożliwiałaby użytkownikom łatwy kontakt z coachami. Właśnie dlatego dodaliśmy do niej takie funkcje, jak np. czat. W aplikacji mobilnej można też szybko znaleźć materiały do nauki.
Dowiedz się więcej o tym projekcie.
Źródło: Google Play Store
Co warto wiedzieć o technologii Kotlin Multiplatform?
Chociaż Kotlin Multiplatform (KMP) również umożliwia budowanie aplikacji na wiele platform, jest to zupełnie inna technologia niż Flutter. Wykorzystuje język Kotlin, ten sam, którego używamy w Holdapp do tworzenia natywnych aplikacji na Androida.
Dzięki KMP można współdzielić niektóre partie kodu pomiędzy aplikacjami na Androida, iOS, webowymi i desktopowymi, chociaż nie tak w takiej ilości jak w przypadku Fluttera. Ten ostatni pozwala budować UI tylko raz na iOS i Androida, podczas gdy z KMP programiści muszą stworzyć UI oddzielnie na każdą platformę.
To sprawia, że rozwijanie aplikacji zabiera więcej czasu. Z drugiej strony pozwala też tworzyć interfejsy użytkownika, które zapewniają natywne doświadczenia.
Przykłady aplikacji
Forbes
Ta aplikacja z wiadomościami korzysta z Kotlin Multiplatform, co pozwala Forbesowi publikować jednocześnie na systemach iOS i Android. Ponad 80% logiki biznesowej jest współdzielone między obiema platformami, co przyspiesza implementację nowych elementów.
Więcej informacji znajdziesz w tym artykule.
Źródło: Google Play Store
PowerSchool (wcześniej Chalk)
Aplikacje PowerSchool oferują narzędzia wspierające nauczycieli. Zespół wykorzystuje KMP, żeby dzielić między platformami logikę biznesową, networking i online caching. Przejście od w pełni natywnych aplikacji do Kotlin Multiplatform przyspieszyło ich rozwój i proces testowania.
Przeczytaj ten wywiad i sprawdź, jak wyglądało przejście PowerSchool na KMP.
Źródło: Google Play Store
Unflow
Unflow to CMS dla aplikacji mobilnych. Zespół Unflow przyznaje, że implementacja niektórych złożonych funkcji wymaga mniej wysiłku przy wykorzystaniu Kotlin Multiplatform niż wcześniej, gdy mieli dwie natywne aplikacje.
Źródło: Google Play Store
Poznaj więcej przykładów aplikacji tworzonych w KMP.
Porównanie Fluttera i KMP
Flutter | Kotlin Multiplatform | |
---|---|---|
Podstawowe informacje | Technologia open-source od Google'a | Technologia open-source od JetBrains |
Język programowania | Dart | Kotlin |
Popularność języka | Chociaż Dart jest intuicyjny i łatwo można się go nauczyć, jest mniej popularny niż Kotlin i rzadziej się przydaje w projektach, które nie wykorzystują Fluttera. | Kotlin jest uznawany za idealny język dla początkujących programistów. Od lat jest to też język stosowany przez specjalistów od natywnych aplikacji na Androida. Właśnie dlatego łatwiej znaleźć programistów z doświadczeniem w Kotlinie niż Darcie. |
Rok publikacji stabilnej wersji | 2018 | 2023 |
Platformy |
|
|
Czas rozwoju aplikacji | Flutterowe aplikacje buduje się szybciej niż natywne i w KMP, ponieważ więcej partii kodu można współdzielić między Androidem a iOS. Duża liczba gotowych komponentów UI również przyspiesza proces rozwoju aplikacji. | Proces rozwoju aplikacji w KMP zajmuje mniej czasu niż w przypadku rozwiązań natywnych, bo można współdzielić partie kodu pomiędzy platformami. Dzieląc logikę biznesową, oszczędzasz czas, ponieważ nie musisz jej dwa razy testować. Budowa aplikacji we Flutterze powinna jednak być jeszcze mniej czasochłonna, bo można wtedy zbudować jedną warstwę UI na obie platformy. |
Koszt rozwoju aplikacji | Budowa aplikacji we Flutterze kosztuje mniej niż rozwój dwóch aplikacji natywnych, ale nie o połowę. Testy QA nadal trzeba przeprowadzić na obu platformach. | Budowa aplikacji w KMP kosztuje mniej niż stworzenie dwóch aplikacji natywnych, ale więcej niż jednej flutterowej. Wynika to z faktu, że UI we Flutterze można łatwo współdzielić między Androidem a iOS. Z kolei aplikacje stworzone w KMP mają UI charakterystyczny dla danej platformy. |
Budowa UI | Są dostępne edytowalne widżety do budowy UI we Flutterze. Aplikacje mogą bardziej przypominać natywne dzięki specjalnym bibliotekom: Cupertino na platformę iOS i Material na system Android. | KMP oferuje framework Compose Multiplatform, który pozwala dzielić implementacje UI pomiędzy aplikacjami na Androida a desktopowymi, ale nie dotyczy to jeszcze platformy iOS ani aplikacji webowych. Dlatego w aplikacjach tworzonych w KMP UI rozwijamy osobno dla każdej platformy, co zapewnia natywne doświadczenia. |
Szybki podgląd zmian | Flutter ma funkcję hot reload, dlatego gdy programiści dodają zmiany w kodzie, mogą od razu sprawdzić, jak wpływają one na aplikację. Widzą też, czy coś wymaga naprawy. | KMP nie daje możliwości szybkiego sprawdzenia zmian w UI. |
Biblioteki | Jest wiele obszernych bibliotek oferujących edytowalne, wstępnie zbudowane widżety, ale można też budować własne, np. żeby tworzyć animacje, zmienić layout i style lub zwiększyć dostępność. Dodawanie integracji do powiadomień czy aparatu również nie stanowi wyzwania, nawet bez użycia natywnych elementów. | Bibliotek KMP jest mniej w porównaniu z natywnymi i flutterowymi, ale ich liczba stale rośnie. |
Elastyczność | Flutter pozwala tworzyć proste MVP i skomplikowane aplikacje. Można zbudować aplikację w całości we Flutterze albo tylko dodawać flutterowe elementy do natywnych aplikacji. Warto z tego korzystać, gdy chcesz stopniowo przechodzić na technologię cross-platformową. To działa też w drugą stronę. Możesz dodawać natywne elementy do aplikacji flutterowych. Ta opcja przydaje się, gdy musisz zaimplementować nowe funkcje, charakterystyczne dla konkretnej platformy, które jeszcze nie zostały dostosowane do Fluttera. | Można stopniowo przechodzić z natywnego kodu na KMP. Warto zacząć od wybrania priorytetów, czyli tych partii kodu, które należy przepisać w pierwszej kolejności. |
Wydajność | Aplikacje we Flutterze kompilują się bezpośrednio do natywnego kodu, co pozwala na szybkie działanie. Impeller, silnik graficzny, umożliwia szybkie renderowanie animacji i zapewnia stabilność. | Kod w Kotlinie jest kompilowany bezpośrednio do natywnego kodu dla każdej platformy. Dzięki temu aplikacja działa szybciej. |
Dokumentacja | Flutter ma obszerną i czytelną dokumentację, zwłaszcza jeśli chodzi o warstwę UI, dlatego szukanie informacji zazwyczaj jest łatwe. | Obecnie dokumentacja KMP jest dość ograniczona, co wynika z faktu, że nadal jest to stosunkowo nowa technologia. |
Wsparcie społeczności | Społeczność Fluttera jest dość duża i ciągle rośnie. To przyspiesza rozwój tej technologii i ułatwia szukanie pomocy. Programiści mogą zadawać pytania na forach i korzystać z flutterowych kanałów na Slacku, Reddicie czy Discordzie. W wielu miastach organizowane są też wydarzenia poświęcone Flutterowi. | Informacje na temat KMP można znaleźć m.in. na Kotlinowych kanałach na Slacku i na forach rozwijanych z myślą o Kotlinie. |
Flutter vs Kotlin Multiplatform: co wybrać?
Jak pokazuje powyższa tabela, oba rozwiązania mają swoje wady i zalety. Przygotowaliśmy krótkie podsumowanie, żeby pomóc Ci wybrać najlepszą technologię do Twojego projektu.
1. Kiedy warto zdecydować się na Fluttera?
- Gdy chcesz zbudować aplikację na dwie platfromy tak szybko, jak to możliwe.
Czemu Flutter? Umożliwia dzielenie większej części kodu w porównaniu z KMP. Ma też funkcję hot reload, która pozwala szybciej sprawdzać zmiany i rozwiązywać problemy na wcześniejszym etapie projektu.
- Gdy chcesz oferować złożone lub unikalne funkcje.
Czemu Flutter? To bardziej rozwinięta technologia, która oferuje wiele wstępnie zbudowanych widżetów i ma czytelnie zapisaną dokumentację. Zrzesza też większą społeczność, co również pomaga przy skomplikowanych projektach.
- Jeśli musisz zminimalizować koszty potrzebne do budowy aplikacji.
Czemu Flutter? Ta cross-platformowa technologia pozwala ograniczyć koszt pisania kodu. Zamiast zatrudniania dwóch natywnych programistów, pracujesz z jednym specjalistą od Fluttera.
2. Kiedy lepszy jest Kotlin Multiplatform?
- Gdy współpracujesz już z zespołem, który dobrze zna Twój projekt i specjalizuje się w aplikacjach natywnych.
Czemu KMP? Nauka technologii Kotlin Multiplatform będzie dla takiego zespołu łatwiejsza. Poza tym zna on już Twoją markę i rozumie cele projektu, więc nie musisz poświęcać dodatkowego czasu na objaśnianie wytycznych i zasad współpracy.
- Kiedy kluczowe jest zapewnienie natywnych doświadczeń poprzez stworzenie osobnych interfejsów użytkownika dla każdej platformy.
Czemu KMP? Współdzieloną logikę w Kotlinie można łatwo połączyć z natywnie zakodowanym UI na dwie platformy. W rezultacie użytkownicy mogą cieszyć się z rozwiązań, do których są przyzwyczajeni, co dobrze wpływa na ich doświadczenia.
Pamiętaj, że każdy projekt powinien być przeanalizowany indywidualnie. Zawsze lepiej skonsultować wybór technologii z programistami. W Holdapp doradzimy Ci, które rozwiązanie cross-platformowe będzie najlepsze, mając na względzie Twoje wymagania dotyczące projektu. Napisz do nas, jeśli potrzebujesz pomocy.