Aplikacje hybrydowe – dlaczego się sprawdzają? Ich wady i zalety

Jakub Lipiński

23-11-2015
Aplikacje hybrydowe – dlaczego się sprawdzają? Ich wady i zalety

Przez stale rosnącą popularność smartfonów i tabletów aplikacje mobile stały się nieodłącznym elementem naszego życia codziennego. Wbrew pozorom jednak „aplikacja mobilna” to termin bardzo złożony, na dzień dzisiejszy mamy kilka platform, na które możemy budować aplikacje mobilne. Najpopularniejszymi z nich są Google Android, Apple iOS oraz Microsoft Windows Phone.

Istnieją trzy typy aplikacji: aplikacje webowe, hybrydowe oraz natywne. Do niedawna dwa pierwsze traktowane były jako gorsze, niepełnofunkcjonalne, budżetowe sposoby produkcji oprogramowania mobilnego jednak z dnia na dzień się to zmienia.

Aplikacje hybrydowe pojawiły się już dawno temu, jednak przez słabą wydajność silników przeglądarek internetowych wykorzystywanych w urządzeniach mobilnych można było tworzyć tylko bardzo proste aplikacje lub stawały się one mało wydajne. Na dzień dzisiejszy nawet urządzenia z dolnej półki cenowej posiadają 2-4 rdzeniowe procesory, 2-4 GB pamięci RAM czy dedykowane procesory graficzne. Dodając do tego fakt, że korporacje takie jak Google czy Apple stale rozwijają swoje platformy (między innymi także pod kątem aplikacji hybrydowych) już dzisiaj możemy wykonać większość istniejących aplikacji w technologii zarówno natywnej, jak i hybrydowej. Rosnącą popularność aplikacji hybrydowych można także zauważyć po decyzjach biznesowych wyżej wymienionych korporacji. Microsoft ostatnio wypuścił narzędzie dedykowane dla programistów aplikacji hybrydowych Visual Studio Tools for Apache Cordova, a Google aktywnie współpracuje z programistami firmy Drifty przy pracach nad IonicFramework 2.0, który ma zostać wydany razem z oficjalnym pojawieniem się drugiej wersji Angular’a – jednej z najpopularniejszych bibliotek do tworzenia aplikacji w technologii HTML5 rozwijanej przez Google.

Na dzień dzisiejszy spokojnie mogę powiedzieć, że prawie każde, nawet duże i wymagające projekty da się zrealizować w technologii hybrydowej. Oczywiście w dużym stopniu zależy to od umiejętności programistów oraz znajomości zagadnień z zakresu optymalizacji aplikacji, jednak nawet w przypadku potrzeby zatrudnienia „specjalistów z górnej póki” i tak będzie to tańsze rozwiązanie (jeżeli interesuje nas produkcja oprogramowania na więcej niż jedną platformę mobilną), a końcowy użytkownik nie zauważy różnicy między wykonaniem natywnym a hybrydowym. Przykładem tutaj mogą być aplikacje wykorzystywane na co dzień przez miliony użytkowników na całym świecie, które zostały wykonane w technologii hybrydowej: Instagram, Amazon Appstore, Evernote, TripCase, Sworkit (do 2012 roku nawet oficjalna aplikacja Facebooka była napisana w technologii HTML5).

Wykorzystanie najnowszych technologii w aplikacjach hybrydowych także nie jest już problemem. Istnieje bardzo duża baza rozszerzeń, która cały czas jest rozwijana przez programistów z całego świata i każdy może z niej korzystać zupełnie za darmo. Tworzenie aplikacji hybrydowych z wykorzystaniem technologii NFC, systemów geoinformacyjnych, nawigacyjnych, aplikacji z wykorzystaniem różnego rodzaju sensorów urządzenia, czy nawet aplikacji nawigacji w budynkach za pomocą technologii Bluetooth LE i urządzeń typu Beacon staje się banalnie proste. W przypadku, gdy nie znajdziemy odpowiedniego rozwiązania udostępniającego nam dostęp do jakiejś funkcjonalności natywnej, zawsze możemy część aplikacji hybrydowej napisać natywnie (dla zainteresowanych: https://cordova.apache.org/docs/en/latest/guide/hybrid/plugins/index.html).

O ile wykorzystanie najnowszych technologii w aplikacjach hybrydowych jest bardzo łatwe, to samo tyczy się tworzenia interfejsu graficznego aplikacji. Zakładając, że tworzymy aplikację mobilną na dwie platformy oraz zamierzamy wspierać zarówno smartfonów jak i tablety, wystarczy w bardzo łatwy i co najważniejsze szybki sposób stworzyć projekt aplikacji z wykorzystaniem technologii HTML i CSS a następnie dopasować go do wyświetlania na różnych rozdzielczościach (Responsive Web Design). Odpada nam tutaj cała praca związana na przykład w przypadku Androida z Fragmentami i plikami XML (jeżeli zakładamy także produkcję aplikacji np. na system iOS praca ta musiałaby być wykonana dwa razy), a co najważniejsze nie potrzebujemy do tego zadania dedykowanego programisty danej platformy mobilnej.

Niestety nie ma rozwiązań idealnych, więc istnieją także wady rozwiązań hybrydowych. Od pewnego czasu webkit (silnik przeglądarki internetowej, na którym oparte są przeglądarki w systemach Android, iOS a niedługo nawet Windows Phone) umożliwia wykorzystanie technologii WebGL na urządzeniach mobilnych, jednak na większości urządzeń mobilnych jest to w dalszym ciągu mało wydajne – nadaje się tylko do wyświetlania prostych animacji 3D. O tworzeniu gier w technologii hybrydowej można więc na dzień dzisiejszy zapomnieć. Drugim problemem, z którym możemy się spotkać tworząc aplikacje hybrydowe, jest słaba wydajność aplikacji, która wykonuje wiele operacji w czasie rzeczywistym, szczególnie jeżeli operacje te opierają się na funkcjonalnościach natywnych. W większości aplikacji dla dobrych programistów nie będzie to dużym problemem (zastosowanie technik optymalizacji kodu, algorytmów oraz wykorzystanie technologii pamięci podręcznej w większości przypadków rozwiązuje problem), jednak o ile stworzenie aplikacji nawigującej użytkownika po mapie z wykorzystaniem technologii GPS, kompasu oraz żyroskopu jest do wykonania, to stworzenie pełnofunkcjonalnej aplikacji nawigującej z wykorzystaniem technologii AR (ang. Agumented Reality) będzie bardzo ciężkie do wykonania.

Podsumowując

Uważam, że technologia hybrydowa wyznaczy w niedalekiej przyszłości nowe standardy jeśli chodzi o produkcję oprogramowania mobilnego. W ostatnich latach rozwój technologii hybrydowych jest ogromny, a zainteresowanie, którym cieszą się technologie tego typu, stale wzrasta. Wszystkim osobom zainteresowanym produkcją oprogramowania mobilnego szczerze polecam zgłębienie tematu.

Autor

Jakub Lipiński – ekspert technologii mobilnych MobileMS

 

Komentarze:

Comments

comments