Aplikacje mobilne: natywne vs. hybrydowe

Nie zaskoczy chyba nikogo wiadomość, że rynek aplikacji mobilnych nieustannie rośnie. W największym istniejącym obecnie sklepie – Google Play – jest około 2,5 miliona aplikacji. Według szacunków użytkownicy urządzeń mobilnych z systemem operacyjnym Android pobierają ich rocznie niemal 85 miliardów! Drugi z gigantów rynku – App Store – udostępnia swoim użytkownikom 1,9 miliona aplikacji. Nie bez znaczenia pozostaje też pandemia koronawirusa. W III kwartale 2020 roku wydatki wzrosły do 28 mld dolarów, a więc o 20% w stosunku do tego samego okresu sprzed roku, przy czym najwięcej zarobiły gry mobilne. Stale zwiększa się liczba użytkowników smartfonów, więc należy się spodziewać dalszego rozwoju. Warto więc wiedzieć w jakich technologiach tworzone są aplikacje mobilne.

Technologie natywne

Przede wszystkim programiści mobile sięgają po technologie natywne, czyli dedykowane konkretnemu systemowi operacyjnemu. Używają więc przede wszystkim języka Java bądź Kotlin w przypadku Androida oraz języków Swift i Objective-C w przypadku iOSa. W przypadku innych systemów operacyjnych urządzeń mobilnych dochodzą do tego kolejne środowiska, natomiast z racji na ich aktualnie małą popularność (mniej niż 1% rynku) nie będziemy się na nich skupiać w tym artykule. Największym mankamentem aplikacji natywnych jest koszt wytworzenia i utrzymywania dwóch (bądź więcej gdy uwzględnimy mniejsze systemy) projektów jednocześnie. Pod innymi względami aplikacje hybrydowe nie wyprzedzają natywnych, nie mniej ten jeden powód jest wystarczający by powstało wiele różnych alternatyw.

Technologie webowe

PWA czyli progresywna aplikacja webowa jest naturalnym rozwinięciem standardowej aplikacji webowej. Jest ona tworzona z wykorzystaniem tych samych narzędzi programistycznych, a także dostępna pod konkretnym adresem internetowym. Dzięki temu wystarczy istnienie jednej wersji dla wszystkich użytkowników smartfonów. Różni się od aplikacji webowej tym, że po otwarciu witryny można ją zainstalować na swoim telefonie, co skutkuje dodaniem dedykowanej ikony do ekranu głównego. Kilka sekund później można korzystać z aplikacji, która pod kątem interfejsu do złudzenia przypomina normalną aplikację natywną. Może działać offline, wyświetlać powiadomienia oraz wykorzystywać niektóre funkcje urządzenia takie jak aparat czy geolokalizacja. Takie rozwiązanie ma także swoje ograniczenia – przede wszystkim nie jest kompatybilna ze starszymi niż 11.3 wersjami oprogramowania iOS, nie może korzystać z części funkcji urządzenia jak np. NFC czy Bluetooth, a także jest znacząco mniej wydajna od aplikacji natywnej.

Technologie hybrydowe

Innym rozwiązaniem są różnego typu aplikacje hybrydowe, łączące w sobie elementy technologii webowej oraz natywnej. Łączy je idea, by jeden program działał na urządzeniach z różnymi systemami operacyjnymi. Aplikacje można podzielić ze względu na formę do jakiej się kompilują. Jedne funkcjonują na urządzeniu w postaci kodu typowego dla aplikacji webowych, a inne są kompilowane do kodu natywnego dla danego systemu. Zdecydowanie ich wspólną zaletą jest współdzielony kod, co przekłada się na łatwiejszy i tańszy proces developmentu.

Aplikacje kompilowane do kodu webowego

Aplikacje hybrydowe kompilowane do kodu typowego dla aplikacji webowych można tworzyć za pomocą narzędzi takich jak: Ionic, Cordova, PhoneGap i inne. Są podobne do PWA, z tą różnicą, że są dostępne w sklepach mobilnych Google Play oraz App Store, a nie pod adresem internetowym. Obrazowo rzecz ujmując są one stylizowanym na aplikację natywną opakowaniem dla aplikacji webowej.

Aplikacje kompilowane do kodu natywnego

Aplikacje hybrydowe kompilowane do kodu natywnego można tworzyć za pomocą narzędzi takich jak:

  • React Native – opierający się na JavaScript i React, tworzony przez Facebooka
  • Flutter – korzystający z nowego języka Dart, tworzony przez Google
  • Xamarin – wykorzystujący .NET, tworzony przez Microsoft
  • Native Script – umożliwiający pisanie w Angularze, Vue.js, TypeScript lub JavaScript

Aplikacje takie również są udostępniane za pośrednictwem sklepów mobilnych. Ich kod napisany w wymienionych wyżej językach jest kompilowany do postaci kodu natywnego zgodnie z regułami określonymi przez narzędzie. Dzięki temu ich wydajność i szybkość działania jest bliższa aplikacjom natywnym niż ma to miejsce w przypadku innych hybryd. Bliższa, ale mimo wszystko nie jednakowa. Podobnie jak w przypadku innych technologii interfejs użytkownika jest porównywalny z natywnym, ale mogą się pojawić trudności w związku z korzystaniem ze specyficznych funkcjonalności telefonu. W niektórych przypadkach programiści są zmuszeni samodzielnie stworzyć w języku natywnym odpowiednie mosty, umożliwiające korzystanie z tychże funkcji za pośrednictwem aplikacji. Z tego powodu w przypadku rozbudowanych i specyficznych aplikacji jedynie część kodu jest współdzielona przez obie platformy.

Podsumowanie

Wybierając technologię, w której stworzymy naszą aplikację powinniśmy rozważyć kilka kwestii. Zastanówmy się, kto znajduje się w naszej grupie docelowej. Przemyślmy, czy nasza aplikacja będzie rozbudowana i obciążająca lub będzie korzystała ze specyficznych funkcji telefonów. Czy chcielibyśmy, aby była dostępna nie tylko na telefonach, ale także zegarkach bądź telewizorach. W takim przypadku powinniśmy postawić na technologie natywne. Jeśli mamy ograniczony budżet bądź czas, albo po prostu aplikacja nie jest skomplikowana być może lepszym rozwiązaniem będzie któraś z technologii hybrydowych. Tutaj także powinniśmy się przyjrzeć dokładniej konkretnym rozwiązaniom, aby możliwie najlepiej dostosować narzędzie do naszych potrzeb. Planując aplikację powinniśmy wziąć pod uwagę nie tylko jej pierwotny kształt, ale także rozważyć potencjalne ścieżki rozwoju.

Nasz zespół z chęcią pomoże Ci w dobraniu technologii optymalnej dla Twoich potrzeb.
Skontaktuj się z nami poprzez formularz.

Zobacz również

W listopadzie podpisaliśmy umowę na świadczenie usługi przygotowania interaktywnej mapy zasobów województwa...
Nasza firma podpisała kolejną umowę na realizację projektu rozwijającego i wspierającego system...
Rozpoczynamy realizację projektu wsparcia serwisowego i programistycznego Systemu Obsługi Programów (SOP) dla...