... ... ...

Tworzenie aplikacji mobilnych. Jaką technologię wybrać będąc web developerem?

Dodane

06-12-2017

Marek Tenus
Jeszcze kilka lat temu pozycja języka skryptowego JavaScript nie wskazywała na to, że w przyszłości będzie to jeden z najpopularniejszych języków programowania. Sam przez wiele lat traktowałem go jako dodatek do ulepszenia części wizualnej aplikacji. Przełom nastąpił w roku 2009.

Zdjęcie główne artykułu pochodzi z pexels.com

Wtedy to Ryan Dahl pracując nad wprowadzeniem technologii push do stron internetowych, wybrał język JavaScript do realizacji swojego celu. W następstwie tej decyzji powstało Node.js, które miało główny wpływ na to, aby JavaScript zrewolucjonizowało pisanie aplikacji webowych i mobilnych.

Obecnie możemy stwierdzić, że jest to jedyny język programowania, który pozwala na tworzenie full-stack’owych aplikacji webowych z obsługą warstwy klienckiej (client-side) i serwerowej (server-side). Node.js pozwoliło programistom pójść jeszcze dalej i stworzyć frameworki takie jak AngularJs, ReactJs czy też Vue. Dla przykładu z AngularJS zaczęto tworzyć aplikacje działające na jednej stronie (single app), oparte o model MVW (Model-View-Whatever). Do gry weszli najwięksi obecnie w branży IT, czyli Google (AngularJs) i Facebook (ReactJs). Aktualnie w rankingu TIOBE Index JavaScript jest w pierwszej dziesiątce najpopularniejszych języków programowania i ma ciągle tendencję wzrostową.

Grafika pochodzi ze strony tiobe.com

Pisanie aplikacji mobilnych z JavaScript?

Od wielu lat podczas rozmów z programistami słyszałem o możliwości pisania aplikacji na urządzenia mobilne jedynie z wykorzystaniem JavaScript, HTML i CSS. Nie widziałem jednak możliwości przełożenia takich rozwiązań na wydajność takich aplikacji, czy też możliwość pisania bardziej złożonych rozwiązań. Zapewne w tamtym okresie moje obawy miały pokrycie w rzeczywistości. Ale czy jest to aktualne?

Zanim rozpoczniemy przegląd możliwych rozwiązań pisania aplikacji mobilnych przez Web Developerów musimy sobie wprowadzić klasyfikację rozwiązań. Ogólnie wyróżnić możemy 3 grupy rozwiązań tworzenia aplikacji mobilnych.

  • w pełni natywne (full native),
  • natywne (native),
  • hybrydowe (hybrid).

1. Full native

Do pierwszej grupy zaliczamy tworzenie aplikacji mobilnych w Java (Android) oraz Object-C/Swift (iOS), gdzie kod źródłowy kompilowany jest do kodu maszyny. Główną zaletą tego rozwiązania jest wydajność aplikacji, dlatego przy pisaniu gier jest to technologia wręcz wskazana. Największym minusem w tym rozwiązaniu jest to, że koszt stworzenia i dalszej eksploatacji aplikacji jest wysoki.

2. Hybrid

Zapewne każdy z was słyszał już o hybrydowym tworzeniu aplikacji mobilnych. Głównym założeniem tego rozwiązania jest pisanie aplikacji podobnie jak webowych z wykorzystaniem JavaScript, HTML i Css tyle, że uruchamianych w urządzeniu mobilnym. Za prezentację widoku podobnie jak przy stronach webowych odpowiada wbudowana w urządzenie przeglądarka (WebView). Natomiast do komunikacji z urządzeniem wykorzystywana jest Cordova. Najprościej ujmując jest to API napisane w JavaScript, które pośredniczy pomiędzy kodem natywnym aplikacji zachowując spójność w komunikacji z różnymi systemami urządzeń mobilnych (Android, iOS, Windows Mobile).

Przykładem głównych framework’ów do implementacji hybrydowych aplikacji mobilnych należą Xamarin, PhoneGap i Ionic. Największym minusem tego rodzaju technologii jest wydajność i stabilność stworzonych aplikacji. Zaletami są tutaj prostota i niższy koszt stworzenia i eksploatacji w porównaniu do podejścia Full native.

3. Native

Nie bez powodu o aplikacjach określanych mianem natywnych piszę na samym końcu. A to ze względu na to, że rozwiązanie to łączy w sobie oba powyżej opisane, niwelując przy tym ich główne wady. Głównymi frameworkami do tworzenia aplikacji natywnych są React Native (Facebook) i NativeScript (Telerik). Ich historia jest dość krótka, bo sięga zaledwie kilku lat wstecz a budzi dość duże emocje wśród programistów. Podobnie jak przy podejściu hybrydowym aplikacje tworzone są z użyciem JavaScript, HTML/XML i CSS. Tyle, że nie jest tutaj używana przeglądarka do renderowania widoku i obsługi zdarzeń. Aplikacja działa w pełni natywnie. Dzięki temu wydajność jest o wiele lepsza niż przy aplikacjach hybrydowych a często nawet przewyższa te pisane w podejściu full native. Tak samo jak przy aplikacjach hybrydowych stworzenie aplikacji i ich późniejsze utrzymanie jest tańsze niż przy podejściu full native.

Najpopularniejszym frameworkiem umożliwiającym pisanie aplikacji w podejściu native jest obecnie React Native, to właśnie w nim napisano wszystkim dobrze znane aplikacje mobilne jak: Facebook, Instagram, Skype. Wschodząca gwiazdą (według mnie) jest framework NativeScript.

Najciekawszym rozwiązaniem jest w nim to, że można programować używając czystego JavaScript, TypeScript bądź Angular’a (obecnie adoptowane jest również Vue). Dodatkowo nie musimy dopisywać żadnych dodatkowych komponentów jak to może mieć miejsce przy React Native, dzięki czemu mamy 100% dostęp do API urządzenia. Oczywiście na minus (a może na plus?) może być tutaj to, że za React Native stoi duża firma i duże pieniądze, a tym samym większe możliwości.

Co wybrać?

Opisane powyżej podejścia pozwalają pokrótce na poznanie obecnych technologii tworzenia aplikacji mobilnych. Osobiście będąc Web Developerem skłaniałbym się do wybrania tworzenia aplikacji w podejściu native. W tej właśnie technologii upatruję przyszłość tworzenia aplikacji mobilnych.

Marek Tenus

Full Stack Developer w HighSolutions

Marek wieloletnie doświadczenie zdobywał prowadząc software house. Jako Team Leader jest odpowiedzialny w całości za powodzenie wybranych projektów. Jego wiedza i kreatywność pozwalają nam dostarczać realizacje na najwyższym poziomie.

Komentarze (0)