Aplikacje cross-platform i natywne - czym się różnią i które rozwiązanie wybrać?

Dlaczego wybór pomiędzy aplikacjami Cross-platform a natywnymi jest tak ważny? Jakie są różnice pomiędzy tymi rozwiązaniami? Kiedy wybrać technologie natywne, a kiedy cross-platformowe?

Technologia cross-platform czy natywna? To pytanie zadał sobie każdy, kto budował aplikacje mobilną. Odpowiedź na to pytanie w każdym przypadku będzie inna, ponieważ zawsze jest to wybór oparty na koniecznych do stworzenia funkcjonalnościach i w pewnych przypadkach wybór technologii natywnych będzie lepszą opcją, a w innym - cross-platform. By zrozumieć genezę tego problemu warto zastanowić się, czym tak naprawdę różnią się technologie cross-platform od natywnych, oraz przyjrzeć się zaletom i wadom obu rozwiązań.

Aplikacje cross-platform.

Cross-platform development jest procesem budowania aplikacji mobilnej, która docelowo może być uruchomiona na kilku systemach operacyjnych - np. Android i iOS - bazując na jednym kodzie źródłowym. Większość przedsiębiorstw i startupów chce, aby ich aplikacja była dostępna na wielu urządzeniach z różnymi systemami operacyjnymi, aby pokryć jak największą część rynku.

Główną cechą technologii cross-platformowych jest to, że stworzony kod źródłowy naszej aplikacji działa na wielu platformach jednocześnie, z niewielkimi różnicami w kodzie pomiędzy platformami iOS i Android - dzięki czemu wystarczy jeden zespół projektowy, który może skupić się na pracy nad jedną aplikacją. Jest to możliwe głównie dzięki cross-platformowym frameworkom, takim jak React Native czy Flutter. Cross-platform można podsumować zdaniem “Jeden język programowania, który działa na najważniejszych platformach”.

Zalety developmentu aplikacji Cross-platform

Wybór technologii cross-platformowych ma swoje wady i zalety, tak samo jak technologii natywnych. Powinna być to decyzja podyktowana biznesowo – najbardziej odpowiednia do Twojej aplikacji i funkcjonalności, które będzie zawierać.

Ten sam kod, który działa zarówno na iOS jak i na Androidzie

Główną zaletą podejścia cross-platform jest jeden kod, który działa na kilku platformach. Przekłada się to na drastycznie mniejsze koszty oraz krótszy czas wykonania aplikacji. W przypadku aplikacji natywnych, kod musi być pisany za pomocą dwóch różnych technologii (zazwyczaj jest to Swift i Kotlin), przez co ta sama funkcjonalność musi zostać wykonana tak naprawdę dwa razy. W rzeczywistości development aplikacji natywnych skutkuje stworzeniem dwóch „osobnych” aplikacji, które wymagają innych specjalistów w zespołach projektowych.

Krótszy proces tworzenia aplikacji i szybsze wejście na rynek

Cross-platform wymaga napisania tylko jednej wersji kodu, która nieznacznie różni się między platformami. Przez to wiele aplikacji nie wymaga tak naprawdę implementowania dwóch osobnych projektów na Android i iOS. Cały proces tworzenia jest dużo szybszy, przez to, że cała załoga od Front-Endu, UX/UI, aż do Back-Endu pracuje razem nad jednym kodem.

Koszty developmentu aplikacji

Przez to, że technologie cross-platformowe nie potrzebuje osobnego zespołu do każdego systemu, budowa aplikacji jest tańsza w porównaniu do technologii natywnych - i budowy osobnych aplikacji na iOS i Android. Dodatkowo używając np. React Native, developerzy mogą wykorzystać część kodu również w wersji webowej. W rezultacie development aplikacji cross-platformowych jest znacznie prostszy, tańszy i szybszy.

Zachowanie spójności UX/UI pomiędzy platformami

Obsługa aplikacji oraz User Experience podczas korzystania różnią się między systemami i urządzeniami. W aplikacjach natywnych często skutkuje to wymogiem dodatkowych godzin pracy UX/UI Designera. Cross-platformowe frameworki stanowią pewnego rodzaju rozwiązanie, ale zdecydowanie nie jest w pełni bezproblemowe.

Różnice systemowe pomiędzy iOS a Androidem powodują, że UX/UI designerzy muszą wziąć pod uwagę pewne ograniczenia oraz “zasady” określonego systemu. Dobrym przykładem jest tutaj sam natywny interfejs urządzenia, który różni się między praktycznie każdym systemem.

Rozwiązanie cross-platformowe nie jest perfekcyjne i ma swoje wady. Mimo tego zachowanie spójności UX/UI w aplikacjach cross-platformowych jest nieco prostsze i szybsze niż w przypadku aplikacji natywnych. Stworzenie jednej wersji aplikacji z niewielkimi zmianami pomiędzy systemami wymaga mniejszych nakładów pracy niż stworzenie dedykowanej aplikacji natywnej na każdy z systemów.

Trafienie do większej ilości użytkowników

Przez to, że aplikacje budowane w oparciu o frameworki cross-platformowe działają na kilku systemach, są tańsze w stworzeniu i można je szybciej wprowadzić na rynek. Dzięki temu możesz szybciej sprawdzić swój model biznesowy i zacząć pracować nad product-market fit na szerszym gronie odbiorców. Cross-platformowe rozwiązanie jest zdecydowanie lepsze w przypadku startupów testujących swój pomysł, albo posiadających ograniczony budżet, czas i chęć stworzenia aplikacji na kilka platform.

Wady Cross-Platform developmentu

  • Rozmiar aplikacji: Aplikacje cross-platform z reguły “ważą” więcej niż aplikacje natywne. Wszystko dlatego, że cross-platformowe aplikacje muszą działać na wielu urządzeniach oraz wymagają dodatkowe i abstrakcyjne procesy działania, wynika to przede wszystkim z tego, że język kompilowany np. z React Native na Kotlin często zawiera pod spodem dużo bibliotek/części kodu potrzebnego do realizacji danych funkcjonalności. Nie są to odczuwalne różnice w dzisiejszych czasach, jednak zdecydowanie jest to wada.

  • Niektóre z funkcji muszą być uproszczone: Developerzy muszą się trochę “pomęczyć” i zaadresować każdą z różnic osobno na każde z urządzeń i systemów. W przypadku skomplikowanych funkcjonalności wykorzystujących natywne narzędzia czy API (Application Programming Interface – standardowy sposób komunikowania się aplikacji z innymi aplikacjami) (jak np. w przypadku aplikacji AR) konieczne może być wykorzystanie natywnych technologii mobilnych. Można spotkać sytuację, w której w React Native nie będziemy mieli gotowej biblioteki, przy pomocy której będzie można stworzyć daną funkcjonalność - a w przypadku Kotlina/Javy (Android) ta sama funkcjonalność będzie mogła być wdrożona praktycznie od ręki.

  • Dłuższy proces QA: jeśli aplikacja musi działać na wszystkich systemach, powinno się poświęcić więcej czasu na równoległe testowanie każdej z platform.

Development aplikacji natywnych

Natywne aplikacje charakteryzują się tym, że budowane są z myślą o wyłącznie jednym systemie. W praktyce oznacza to, że musimy stworzyć dwie praktycznie osobne aplikacje – przynajmniej w przypadku systemów iOS i Android. Wymaga to dodatkowych środków na development - najczęściej w tym samym czasie, a to przekłada się na większe koszty.

Zalety aplikacji natywnych

Główną zaletą pisania aplikacji natywnych są braki ograniczeń w pisaniu kodu wymuszonych przez cross-platformowe frameworki. Przykładowo, w React Native niektóre z modułów konieczne do wykonania danej funkcjonalności mogą być niedostępne, a w technologii natywnej – np. Kotlin - byłyby dostępne od ręki. Aplikacje Natywne często zajmują mniej miejsca w pamięci urządzenia oraz działają szybciej niż cross-platformowe. Nie jest to jednak ogromna różnica, jednak może być ona kluczowa w aplikacjach healthcare czy AR (Augmented Reality), gdzie kilka procentów różnicy może mieć istotny wpływ na UX.

Prędkość aplikacji i ich optymalizacja

Aplikacje natywne są zazwyczaj szybsze i łatwiejsze w optymalizacji. W przeciwieństwie do aplikacji cross-platformowych budowane są pod określone systemy operacyjne. W natywnych aplikacjach często jest łatwiej wykorzystać natywne API i innych komponentów zoptymalizowanych pod konkretne rozmiary wyświetlaczy i wersji systemów.

Bezpieczeństwo i zabezpieczenia aplikacji

Natywne aplikacje zawierają dużo bardziej dopasowane i solidne zabezpieczenia niż aplikacji cross-platformowe. Z jednej strony zawdzięczają to wbudowanym zabezpieczeniom danej platformy. Z drugiej aplikacje cross-platformowe są bardziej podatne na ataki webowe, ale można temu zapobiec wykorzystując kilka zabezpieczeń. Nie oznacza to, że aplikacje Natywne są niewrażliwe, po prostu w aplikacjach natywnych mamy dużo większy wgląd na to z jakich bibliotek korzystamy.

Wykorzystywanie potencjału urządzenia

W natywnych aplikacjach łatwiej można wykorzystać funkcjonalności urządzeń mobilnych, takich jak aparat lub GPS i innych. Dla przykładu aplikacje wykorzystujące funkcje AR lepiej działają jako aplikacje natywne niż te zbudowane w cross-platformowych frameworkach. Po części zawdzięczają to natywnym API oferowanym developerom przez iOS czy Androida.

Wady aplikacji natywnych

  • Większe koszty i dłuższy czas wymagany do stworzenia: w przypadku aplikacji natywnych praktycznie zawsze konieczne są dwa osobne dedykowane zespoły budujące tę samą aplikację na Androida jak i na iOS wymagają większego nakładu finansowego. Dodatkowo przez to, że dwa zespoły działają w tym samym czasie, konieczna jest koordynacja większej liczby osób, aby zachować spójność UX/UI i dokładnie przetestować aplikację.

  • Jeden kod na jedną platformę: W przeciwieństwie do aplikacji cross-platformowych, w aplikacjach natywnych na obie platformy nie ma możliwości recyklingu kodu pomiędzy platformami. Budując dwie osobne natywne aplikacje zespoły developerów nie będą w stanie wymieniać się kodem źródłowym i wszystko będą musieli budować od podstaw.

  • Podwójne koszty utrzymania i aktualizowania aplikacji: Kolejną kosztowną i czasochłonną wadą jest cykl serwisowania i aktualizowania aplikacji. Przez to, że kod musi być napisany osobo na każdą platformę, koszt utrzymania aplikacji może okazać się wyższy niż w przypadku aplikacji cross-platformowej – zakładając, że aplikacja ma trafić na kilka platform.

Które rozwiązanie najbardziej pasuje do Twojego następnego projektu?

Wybór pomiędzy technologiami natywnymi a cross-platformowymi nie jest tak oczywisty, jak mogłoby się wydawać na pierwszy rzut oka. Każdy z projektów ma różne priorytety i cele biznesowe – i osiągnięcie najlepszego możliwego rezultatu wbrew pozorom wcale nie musi być wyłącznie podyktowane wyborem technologii mobilnej. Warto jednak mieć świadomość, jakie najważniejsze wady i zalety obu rozwiązań technologicznych.

Przewagi Cross-Platformowych aplikacji:

  • Krótki time-to-market,

  • Mniejszy koszty developmentu oraz utrzymania i aktualizacji,

  • Developerzy mogą wykorzystać ten sam kod funkcjonalności pomiędzy iOS i Androidem,

  • Spójność w nawigacji interfejsu pomiędzy platformami

Przewagi Natywnych aplikacji:

  • Łatwiejsza optymalizacja prędkości działania aplikacji,

  • Większe bezpieczeństwo użytkownika,

  • Gotowa biblioteka UX/UI dla określonej platformy,

  • Łatwiejsze utrzymanie w przypadku, gdy aplikacja ma działać tylko na jednej platformie,

Podsumowanie

Wybór pomiędzy technologiami cross-platformowymi a natywnymi co do zasady wymaga dokładnej analizy i rozplanowania każdej funkcjonalności aplikacji. W praktyce okazuje się, że większość aplikacji mobilnych bezproblemowo mogłaby używać technologii cross-platformowych i nie wpłynęłoby to drastycznie na ich UX – przy zdecydowanie niższym koszcie wdrożenia aplikacji. Z drugiej strony w części projektów aplikacji mobilnych użycie rozwiązania cross-platformowego może być całkowicie nieuzasadnione.

Rozpisanie specyfikacji projektowej i funkcjonalności będzie zdecydowanie pomocne przy podjęciu decyzji. Jeżeli zauważymy, że aplikacja, którą chcemy stworzyć bardzo często odwołuje się do komponentów fizycznego urządzenia (np. aparat, moduł GPS, AR API lub może wykorzystywać znaczne zasoby urządzenia), lub najlepszy możliwy UX i performance jest dla nas krytyczny, technologie natywne jak Swift czy Kotlin będą prawdopodobnie lepszym rozwiązaniem.

W przypadkach, w których tak naprawdę chcemy przenieść część popularnych rozwiązań pochodzących z aplikacji webowych (wyświetlanie danych, logowanie, wysyłka wiadomości) i projekt aplikacji nie posiada skomplikowanych funkcjonalności – technologie takie jak React Native czy Flutter mogą być lepszym wyborem.

Michał Kłak

Autor

Michał Kłak

Współzałożyciel i dyrektor operacyjny iMakeable.

Kategorie
Najnowsze posty
Tagi