/ 18.11.2024
Jeśli się zastanawiasz czy .Net MAUI zastąpi Xamarin to dobrze trafiłeś, ponieważ według aktualnych danych Microsoft wygasza wsparcie dla Xamarin Forms z dniem 01.05.2024. W związku z zaprzestaniem supportu firmy stoją przed decyzją czy migrować produkt do .NET MAUI jako następcy Xamarin.Forms , czy skorzystać z popularnych frameworków cross-platformowych typu Flutter czy React Native.
Deweloperzy zawsze szukają szybszych, prostszych i tańszych sposobów dostarczania produktów na rynek. Wiele rozwiązań wieloplatformowych obniża koszty i złożoność projektów, umożliwiając obsługę wielu platform z jednej bazy kodu. Może to znacząco wpłynąć na czas wprowadzenia produktu na rynek i jego dostępność, ponieważ wystarczy raz napisać kod aplikacji, a następnie uruchomić ją na każdym urządzeniu.
Wybór odpowiedniej platformy dla kolejnego projektu może być trudny. Do popularnych rozwiązań w tej dziedzinie należy m.in React Native, Ionic, .NET MAUI firmy Microsoft i Flutter wspierane przez Google. Choć żadna technologia nie jest idealna, jednak z pewnością jedna z nich może lepiej pasować do Twoich wymagań. Nawet jeśli jest mniej korzystna na pozór, to właśnie dlatego znajomość zalet i wad dostępnych rozwiązań jest niezbędna.
Zacznijmy od podstawowej wiedzy na temat tych frameworków.
Spis treści
Czym jest .Net MAUI?
Aby w pełni zrozumieć czym jest .Net MAUI, wybierzmy się w krótką podróż przez jego ewolucję.
Xamarin
Xamarin jest narzędziem używanym do rozwoju międzyplatformowego. Został on wydany w maju 2011 roku przez inżynierów, którzy stworzyli Mono, Xamarin.Android i Xamarin.iOS. Do 2014 r. widoki Xamarin musiały być implementowane oddzielnie dla każdej platformy ((XML – Android, Storyboard/ XIB – iOS). Wprowadzenie Xamarin Forms umożliwiło tworzenie wspólnej warstwy widoki, niezależnie od platformy. Ostatecznie Mono stało się Xamarin i w 2016 roku stało się częścią Microsoftu .NET MAUI został zbudowany na fundamencie Xamarin, który umożliwił programistom pisanie kodu w języku C#, udostępniając go na platformach iOS i Android.
Xamarin Forms
W 2014 roku do framework’a dodano Xamarin.Forms, umożliwiając ponowne wykorzystanie interfejsu użytkownika na różnych platformach i skrócenie czasu wprowadzenia produktu na rynek. Wprowadzono wtedy przyjazny dla użytkownika sposób projektowania interfejsów przy użyciu XAML. Ta innowacja ułatwiła tworzenie interfejsów użytkownika, które płynnie dostosowują się do różnych platform.
.NET MAUI
W 2020 roku Microsoft ogłosił MAUI (Multi-platform App UI), ewolucję Xamarin.Forms. Wydany w maju 2022 r. MAUI wykorzystuje najlepsze aspekty platformy Xamarin.Forms i przenosi je na nowy poziom. Wielką nowością w MAUI jest to, że jeśli w Xamarin.Forms potrzebujemy rozwiązania dla każdej platformy w ramach naszego projektu, teraz będziemy mieli jedną bazę kodu w jednym projekcie. Oznacza to, że możesz napisać kod raz i uruchomić go na wielu platformach, co upraszcza programowanie i zapewnia spójność.
Oto kilka kluczowych funkcji .Net MAUI
- Język programowania
.NET MAUI wykorzystuje C#, który jest dojrzałym i szeroko stosowanym językiem programowania opracowanym przez Microsoft. C# jest znany ze swoich funkcji obiektowych i silnego wsparcia dla rozwoju aplikacji korporacyjnych.
- Bardziej natywny niż wieloplatformowy
.NET MAUI wykorzystuje podejście hybrydowe. Wykorzystuje pojedynczą bazę kodu C# do obsługi systemów iOS i Android, ale wymaga oddzielnej bazy kodu dla sieci i komputerów stacjonarnych. Oznacza to, że konieczne będzie napisanie dodatkowego kodu w celu obsługi tych platform.
Społeczność i wsparcie
.NET MAUI jest nowszym frameworkiem, więc jego społeczność na GitHub wciąż rośnie zbierając ocenę 21,3k gwiazdek (luty 2024). Jest on jednak wspierany przez Microsoft, co oznacza, że prawdopodobnie będzie miał długoterminową przyszłość. .NET MAUI ma również silną kompatybilność z istniejącymi bibliotekami i narzędziami .NET.
- Wydajność i doświadczenie użytkownika
.NET MAUI jest wciąż w fazie rozwoju, więc jego wydajność i wrażenia użytkownika nie są tak dojrzałe jak w przypadku Flutter’a. Oczekuje się jednak, że .NET MAUI poprawi się w tych obszarach w miarę upływu czasu.
- Produktywność
Możliwość szybszego tworzenia pięknych i szybszych aplikacji, integrując możliwości Visual Studio z .NET MAUI.
Czy .Net MAUI ma przed sobą przyszłość?
Według deweloperów, którzy pracowali w Xamarin, .Net MAUI jest dobrym wyborem dla tych, którzy znają i pracują w .NET/C#. MAUI jest stosunkowo nowym rozwiązaniem i wciąż znajduje się w fazie intensywnego rozwoju. Przeniesienie podstawowych funkcjonalności Xamarin do MAUI jest wyzwaniem i nie zawsze się udaje. Dla wielu programistów .Net MAUI jest dość niedojrzały i niezbyt wygodny w codziennym kodowaniu. Doświadczenia użytkownika, hot-reloading i XAML nie są satysfakcjonujące, a czas kompilacji jest zbyt długi.
Wynika to z faktu, że MAUI to po prostu duża iteracja w Xamarin Forms. W repozytorium widać, że połowa otwartych problemów to błędy regresyjne), a druga połowa to problemy z Xamarin.
Odnosi się wrażenie, że Microsoft jeszcze nie zdecydował, w jakim kierunku chce podążać rozwijać MAUI, i to jest jego głównym problemem. Jest wiele sposobów pisania aplikacji MAUI i mnóstwo różnych sposobów działania. Wybór podejścia zależy m.in od tego, czy używasz MVVM (Model – View – ViewModel )czy MVU (Model-View-Update), korzystasz ze znaczników Maui lub XAML lub używasz Blazor Hybrid? A co z wiązaniami Maui Blazor? To dwa bardzo różne rozwiązania Jeden po prostu dostarcza aplikację internetową Blazor, a drugi używa stylu programowania Blazor przy użyciu wszystkich natywnych składników.
To sprawia, że MAUI daje ciągle wrażenie chaosu, w którym dość trudno wyszukać informacje, ponieważ istnieje wiele różnych podejść do rozwiązania problemów. Dlatego rekomenduje się nie tworzyć aplikacji wyłącznie w MAUI, ale użyć ją jako opakowanie, które kompiluje witrynę internetową do różnych celów. Natomiast na pewno świetlana przyszłość jest przed Blazor i nadchodzącym Blazor United który dobrze współpracuje z MAUI.
Podsumujmy więc .Net MAUI:
- Jest ciągle nowy na rynku
Jako ewolucja Xamarin.Forms, nadal boryka się z pewnymi nierozwiązanymi problemami. Programiści mogą napotkać błędy lub ograniczenia, które mogą mieć wpływ na harmonogram rozwoju projektu i ogólną stabilność. Chociaż firma Microsoft obsługuje platformę .NET MAUI, może upłynąć trochę czasu, zanim platforma dojrzeje i osiągnie ten sam poziom stabilności i niezawodności, co bardziej uznane alternatywy, takie jak React Native lub Flutter.
- Zależny od ekosystemu .NET
Chociaż jest to korzystne dla programistów zaznajomionych już z technologiami .NET, dla osób korzystających z innych języków programowania próg wejścia jest trudny. Z kolei frameworki takie jak Flutter i React Native wykorzystują odpowiednio Dart i JavaScript, które są dostępne i atrakcyjne dla szerszego grona programistów.
- Słabsza wydajność platformy
.Net MAUI, choć jest lepszy w porównaniu z platformą Xamarin.Forms, nie zawsze odpowiada wydajności programowania natywnego lub innych rozwiązań wieloplatformowych, takich jak Flutter. Może to wpływać na wolniejsze uruchamianie aplikacji lub zmniejszoną responsywność, co może mieć negatywny wpływ na odbiór użytkowników.
Teraz skupimy się na omówieniu głównych cech Flutter, jednego z popularniejszych framework’ów na rynku.
Czym jest Flutter?
Flutter jest otwartym SDK do tworzenia wieloplatformowych aplikacji wydanym przez Google w 2017 roku. Szturmem podbił branżę i do 2023 roku przy użyciu Flutter zostało zbudowanych 36 889 projektów jest on jednym z 4 najlepszych dostępnych obecnie frameworków do tworzenia aplikacji.
Popularność Fluttera stale rośnie na przestrzeni lat, co pokazuje poniższy wykres.
Z kolei według ankiety Statista przeprowadzonej wśród deweloperów w 2022 roku, Flutter jest najpopularniejszym wieloplatformowym frameworkiem mobilnym używanym przez globalnych deweloperów. Na podstawie ankiety 46 procent twórców oprogramowania korzystało z Flutter. Ogólnie rzecz biorąc, około jedna trzecia deweloperów mobilnych korzysta z wieloplatformowych technologii lub frameworków; reszta deweloperów mobilnych korzysta z narzędzi natywnych.
Dlaczego Flutter jest powszechnie używany?
Flutter oferuje deweloperom rozwiązania, które przyspieszają rozwój i prowadzą do bardziej przyjaznych dla użytkownika aplikacji. Ma inne podejście niż inne rozwiązania międzyplatformowe. Wykorzystuje język programowania Dart, opracowany przez Google. dzięki czemu może uniknąć konieczności stosowania oddzielnych języków deklaratywnych, takich jak JSX ub XML do definiowania układów lub kodu. Flutter jest napisany w tym jednym języku, co daje więcej możliwości dla narzędzi, ponieważ zarówno interfejs użytkownika, jak i logika mają tę samą strukturę. Dlatego też Flutter posiada jedno z najlepszych IDE i narzędzi deweloperskich ułatwiających życie programistom.
Podsumujmy zatem co warto wiedzieć o Flutter:
- Język i ekosystem
Flutter wykorzystuje Dart jako język programowania, który oferuje reaktywne i deklaratywne podejście do budowania interfejsów użytkownika o składni podobnej do języka C#. Ekosystem obejmuje bogaty zestaw pakietów i wtyczek dostępnych za pośrednictwem pub.dev.
- Renderowanie interfejsu użytkownika
Flutter wykorzystuje niestandardowy silnik renderujący, Skia, do tworzenia atrakcyjnych wizualnie i spójnych komponentów interfejsu użytkownika. Widżety we Flutterze są wysoce konfigurowalne i umożliwiają tworzenie projektów doskonałych pod względem pikseli.
- Popularność i społeczność
Flutter zyskał ogromną popularność wśród deweloperów, zwłaszcza w zakresie tworzenia aplikacji mobilnych, a jego tętniąca życiem społeczność przyczynia się do jego rozwoju i ma silną obecność na platformach takich jak Stack Overflow i GitHub.
- Podejście wieloplatformowe
Flutter wykorzystuje jedną bazę kodu do obsługi wielu platform, w tym iOS, Android, web i desktop. Oznacza to, że możesz napisać swój kod raz, a następnie wdrożyć go na wszystkich tych platformach bez żadnych zmian. Flutter osiąga to dzięki podejściu „napisz raz, uruchom wszędzie” (WORA), w którym ten sam kod jest kompilowany do natywnego kodu dla każdej platformy.
- Społeczność i wsparcie
Flutter ma znacznie większą i bardziej aktywną społeczność niż .Net MAUI. Oznacza to, że dla deweloperów Fluttera dostępnych jest więcej zasobów, takich jak samouczki, dokumentacja i biblioteki innych firm. Flutter ma również szerszy zakres obsługiwanych urządzeń.
- Wydajność i doświadczenie użytkownika
Flutter znany jest z wysokiej wydajności i doskonałego doświadczenia użytkownika. Wykorzystuje silnik graficzny Skia, który jest znany ze swojej szybkości i wydajności. Flutter zapewnia również szereg wbudowanych widżetów, które można wykorzystać do tworzenia natywnie wyglądających interfejsów użytkownika.
Czy Flutter jest przyszłościową technologią?
Flutter to solidna technologia umożliwiająca szybki rozwój aplikacji, a wbudowany zestaw widżetów jest naprawdę spory. Na pewno ma przed sobą przyszłość, jeśli chodzi o rozwój międzyplatformowy świetnie nadaje się dla rozwoju aplikacji dla startupów, które chcą zbudować MVP tak szybko, jak to możliwe. Google wciąż dużo inwestuje w natywny ekosystem rozwoju Androida stale rozwija i aktualizuje nowe biblioteki. Dużą zaletą jest fakt, iż Flutter jest projektem open source i ma dużą społeczność.
Nawet jeśli cały zespół Fluttera zostałby zwolniony, z pewnością wiele osób kontynuowałoby pracę nad projektem, a nawet stworzyłoby fundację, aby kontynuować jego rozwój. W przeciwieństwie do jakiejkolwiek własnościowej aplikacji (Stadia, inne aplikacje Google, które juz nie są rozwijane), inżynierowie mogą nadal przyczyniać się do rozwoju Fluttera bez względu na to, gdzie się udadzą. Poza tym nadal będą istnieć współpracownicy open source i inne firmy (Bytedance, Alibaba, Sony, Ubuntu), którym zależy na dalszym utrzymaniu go.
Kiedy .Net MAUI lepiej zastosować niż Flutter?
.NET MAUI może być lepszym wyborem niż Flutter w niektórych scenariuszach:
- Preferencje językowe:
Jeśli zespół programistów czuje się bardziej komfortowo z C# i XAML, .NET MAUI może być lepszym wyborem, ponieważ wykorzystuje te języki.
- Integracja
.NET MAUI dobrze integruje się z Visual Studio i Visual Studio Code
- Duży zbiór pakietów NuGet i narzędzi .Net, które są dostępne podczas pracy z Maui.
Trzeba jednak stwierdzić, że dodanie odpowiedniego wsparcia i przeniesienie wszystkich pakietów Xamarin w celu pełnego wykorzystania tego ekosystemu zajmuje trochę czasu.
W jakich sytuacjach Flutter jest lepszy niż .Net MAUI?
Główną zaletą jest świetna wydajność aplikacji i doświadczenie dewelopera.
- Bardziej natywny wygląd
Flutter korzysta z natywnych UI komponentów. W MAUI może to być również wadą w zależności od preferencji, ponieważ może to powodować niespójność wizualną między różnymi platformami.
- Aplikacje Flutter są zwykle mniejsze i szybsze niż te zbudowane przy użyciu .Net MAUI
Dzięki kompilacji Fluttera AOT (Ahead Of Time), która zmniejsza rozmiar kompilowanego kodu doświadczony deweloper Flutter’a może szybko dostarczać funkcjonalności dzięki dużej ilości gotowych do użycia widżetów i dobrej wbudowanej dokumentacji.
- Flutter jest bardziej dojrzały niż MAUI
Wiele aplikacji zbudowanych przy użyciu Fluttera można pobrać i przetestować, co czyni go łatwiejszym wyborem.
- Silnik Fluttera może działać jako cała aplikacja, co oznacza, że wybierając Fluttera deweloperzy nie są przez niego ograniczeni
Łatwo jest przejść do natywnego kodu lub dodać ekran Fluttera do istniejących aplikacji natywnych. Dzięki temu Flutter może być testowany i prezentowany bardzo szybko.
- Szybciej zbudujesz aplikacje na wiele platform
Flutter obecnie obsługuje takie platformy, jak Windows, iOS, Android, Google Fuchsia, Web platform, Linux, macOS Windows oraz urządzenia wbudowane (przemysł motoryzacyjny czy elektroniczny np. wyświetlacze, zegary cyfrowe). Programiści Fluttera mogą pisać pojedynczą bazę kodu i wygodnie tworzyć wieloplatformowe aplikacje w przystępnych cenach. Pozwala to również zaoszczędzić sporo czasu.
- Oszczędzasz koszty dzięki tworzeniu MVP
Flutter nadaje się do opracowywania MVP lub minimalnych opłacalnych produktów ze względu na swoją skalowalność, elastyczność i wykorzystanie wbudowanych widżetów. Programiści mogą szybko zbudować MVP dla swojego projektu i szybciej wprowadzać zmiany, aby sprostać niestandardowym wymaganiom i wydawać je skracając czas wprowadzania na rynek.
- Tworzysz aplikacji atrakcyjne wizualnie
Flutter jest oparty na widżetach i może być wykorzystywany do projektowania angażujących interfejsów użytkownika aplikacji. Możesz również użyć wizualnego kreatora aplikacji Flutter Flow, aby tworzyć angażujące projekty interfejsu użytkownika bez konieczności kodowania.
Wybór frameworka Flutter lub .Net MAUI zależy od Twoich potrzeb
Tak jak wspomnieliśmy wyżej zarówno .NET MAUI, jak i Flutter to narzędzia do tworzenia aplikacji wieloplatformowych. Flutter jest dobrym wyborem dla projektów, które wymagają szybkiego cyklu rozwoju, szerokiej gamy obsługiwanych urządzeń i silnej społeczności. .NET MAUI nadaje się do stosowania w projektach, które wymagają powszechnie używanego języka programowania, silnej kompatybilności z istniejącymi bibliotekami i narzędziami .NET.
Wybór między nimi często zależy od konkretnych wymagań projektu, znajomości języków i narzędzi przez zespół oraz osobistych preferencji.
Potrzebujesz porady dotyczącej .NET MAUI lub Flutter? Aby uzyskać więcej informacji na temat wszystkiego, co związane z technologią .NET lub Flutter, skontaktuj się z nami w dowolnej chwili. Chętnie pomożemy w wyborze odpowiednich rozwiązań.
Źródła:
- https://www.codemag.com/Article/1911092/From-Xamarin-Native-to-Xamarin.Forms-Reaping-the-Rewards-without-the-Risk
- https://dotnet.microsoft.com/enus/platform/support/policy/xamarin
- https://www.c-sharpcorner.com/article/maui-the-future-of-xamarin-forms/
- https://github.com/dotnet/maui
- https://dotnet.microsoft.com/en-us/apps/maui
- https://buildwith.app/compare/dotnetmaui-vs-flutter