Blog - Oprogramowanie mobilne

Mobilne aplikacje natywne

Opublikowane wrzesień 2013 przez Ewa Brzeska w Oprogramowanie mobilne.

Właściwie ten artykuł powinnam zatytułować inaczej - jego tytuł mógłby brzmieć:

O wyższości natywności...

Dlaczego tak? Dlatego, że nie ukrywam, iż jestem wielką zwolenniczką rozwiązań natywnych i to nie tylko w sferze oprogramowania mobilnego. W branży IT pracuję już od wielu lat. Cała moja praktyka zawodowa związana jest z tworzeniem oprogramowania w pełnym cyklu jego życia. Przez lata zmieniałam środowiska sprzętowe i systemowe oraz narzędzia programistyczne, zmieniały się także moje role w realizowanych projektach. Jednak bez względu na platformę systemowo-sprzętową, na którą był realizowany kolejny projekt - zawsze sprawdzała się jedna zasada: najlepsze parametry wydajnościowe, optymalny UI (User Interface) i UX (User Experience) oraz łatwość utrzymania i dalszego rozwoju oprogramowania, miały i mają przede wszystkim te rozwiązania, które tworzone są jako natywne.

Moje doświadczenia obejmują projekty informatyczne różnej skali, w tym takie, w których krytyczne były wydajność i niezawodność wytwarzanego oprogramowania (np. oprogramowanie do monitorowania i nadzoru procesów przemysłowych, pracujące w czasie rzeczywistym, w cyklu 24/7). Pozornie tego typu, "poważne" oprogramowanie leży dość daleko od aplikacji mobilnych. Dlaczego zatem wspominam o nim w tym artykule? Dlatego, że tak pozornie odległe światy, obejmujące tak różne zdawałoby się typy oprogramowania, mają ze sobą więcej wspólnego, niż mogłoby się wydawać.

Oprogramowaniem mobilnym zajmuję się już (a może dopiero?) ponad 2 lata. Z perspektywy całej mojej praktyki zawodowej to niewiele. Jednak rynek oprogramowania mobilnego jest młodym rynkiem. Dwa lata praktyki związanej z wytwarzaniem aplikacji mobilnych w  roli PM / PO, to całkiem niemało. Tym bardziej, że "dotykam" w mniejszym bądź większym zakresie, wszystkich faz cyklu życia oprogramowania: od analizy potrzeb, poprzez projekt, implementację, fazę testów, aż do przekazania użytkownikom, czy publikacji. Jest to na tyle dużo, żeby wiedzieć, że zarówno samo oprogramowanie mobilne, jak i proces jego wytwarzania, podlegają dokładnie takim samym regułom jak i inne rodzaje oprogramowania. Co to oznacza w praktyce?

W praktyce oznacza to przede wszystkim, że najbardziej wydajne, a jednocześnie zużywające najmniej zasobów systemowych są tylko i wyłącznie aplikacje natywne.

Aplikacje natywne vs. aplikacje przeglądarkowe (webowe) i hybrydowe

aplikacjach mobilnych pisałam już bardziej ogólnie w jednym z wcześniejszych artykułów. Termin "aplikacje natywne" pojawia się tam w kontekście kategoryzowania oprogramowania mobilnego z uwagi na technologię jego wytwarzania. Także w ostatnim artykule, "Aplikacja mobilna czy mobilna strona www? wspominam o podziale aplikacji mobilnych wg technologii ich wytwarzania. Jeszcze raz przypomnę, jak możemy podzielić aplikacje mobilne wg wyżej wspomnianego kryterium:

  • aplikacje natywne, budowane w całości z wykorzystaniem jedynie natywnych, właściwych dla danej platformy systemowo-sprzętowej, środowiska programistycznego oraz języka programowania (dla Apple iOS jest to XCode i Objective-C)
  • aplikacje webowe, przystosowane do pracy w przeglądarce internetowej (dla iPhone i iPada jest to przeglądarka Safari)
  • aplikacje hybrydowe, będące złożeniem dwóch w/w typów aplikacji - część kodu takich aplikacji pisana jest w technologii webowej (HTML5, CSS, JavaScript,...) i osadzona w wewnętrznej przeglądarce

Poniżej przedstawiam najważniejsze zalety i wady w/w typów aplikacji mobilnych.

Aplikacje natywne

Zalety

  • możliwość pracy zarówno offline, online, jak i w sposób mieszany - z synchronizacją danych co wyznaczony kwant czasu
  • szybkie i płynne działanie
  • optymalne zużycie zasobów urządzenia (pamięci operacyjnej, baterii)
  • dostęp do wszystkich funkcji sprzętowych urządzenia (GPS, kamera, Akcelerator, Bluetooth, WiFi)
  • UI (User Interface) oraz UX (User Experience) przyjazne użytkownikowi, w pełni zgodne z zasadami obowiązującymi dla danego systemu opetracyjnego i typu urządzenia (dla Apple iOS zbiorem takich zasad jest "iOS Human Interface Guidelines")
  • możliwość dystrybucji publicznej przez sklep z aplikacjami odpowiedni dla danego systemu (dla Apple iOS - przez App Store)
  • wysoki poziom bezpieczeństwa aplikacji (dystrybuowane aplikacje są podpisywane cyfrowo, przestrzeń danych jest chroniona systemowo)

Wady

  • aplikacje natywne działają tylko na takiej platformie systemowo-sprzętowej, na jaką zostały napisane
Aplikacje webowe

Zalety

  • raz napisana aplikacja działa na różnych platformach systemowo-sprzętowych

Wady

  • możliwe jest tylko działanie online
  • aplikacje są wyraźnie wolniejsze w działaniu
  • brak możliwości optymalizacji zużycia zasobów urządzenia
  • brak dostępu do funkcji urządzenia
  • ubogi, typowo przeglądarkowy, UI i UX
  • brak możliwości dystrybucji przez sklep z aplikacjami
  • niski poziom bezpieczeństwa aplikacji (kod HTML5 jest praktycznie otwarty)
Aplikacje hybrydowe

Aplikacje te posiadają kilka zalet aplikacji natywnych, lecz niestety obarczone są wieloma wadami aplikacji webowych, w tym wyraźnie mniejszą szybkością działania oraz zwiększonym zużyciem zasobów w stosunku do aplikacji natywnych.

Dlaczego naprawdę warto postawić na natywność?

Aplikacje natywne mają tak wiele zalet, jak aplikacje webowe - wad. Aplikacje webowe jednak powstają. Czy mają w ogóle sens?

Jeśli z góry wiadomo, że aplikacja będzie miała jedynie kilka ekranów i nigdy nie będzie rozwijana, a jednocześnie budżet na wytworzenie aplikacji jest bardzo niski - można teoretycznie zaryzykować wejście w mobilność aplikacją przeglądarkową. Jednak rozwiązania tanie, nigdy nie są dobre. W przypadku mobilnej aplikacji przeglądarkowej od razu bedzie widać jej niskobudżetowość, co niekoniecznie jest dobre z marketingowego punktu widzenia.

Obecnie coraz bardziej popularne stają się aplikacje hybrydowe. Ba, wielokrotnie w różnych artykułach, czy tekstach reklamowych, widziałam, że aplikacje hybrydowe nazywane są aplikacjami natywnymi! No cóż, hybrydy mają co prawda więcej zalet niż aplikacje webowe, jednak na pewno nie są natywne. Spotkałam się z określeniem "pseudo-natywne" w odniesieniu do tego rodzaju aplikacji i myślę, że takie sformułowanie dobrze oddaje ich charakter. Aplikacja hybrydowa zawsze jednak będzie mniej wydajna, wolniejsza w działaniu i bardziej "zasobożerna" od aplikacji natywnej. Niektórzy bedą chcieli się pewnie spierać z powyższym stwierdzeniem, ale spójrzmy na pewnien przykład. Otóż w połowie ubiegłego roku w App Store ukazała się kolejna wersja aplikacji Facebook dla systemu Apple iOS. Niby nic szczególnego, codziennie wiele aplikacji publikowanych jest tam w nowszych wersjach. Tym razem jednak bardzo szybko świat informatyczny obiegła wiadomość, że aplikacja Facebook w swojej kolejnej odsłonie została napisana praktycznie w całości od nowa. Dlaczego? Dlatego, że poprzednie jej wersje, będące hybrydą, okazały się zbyt wolne i mało wydajne. Została zatem podjęta (bardzo słuszna moim zadaniem) decyzja o tym, żeby aplikację hybrydową zastapić aplikacją natywną. Pozwolę sobie zacytować, co na ten temat napisał portal chip.pl:

"Aktualizacja Facebooka dla iOS przynosi ogromne zmiany – program został przepisany od podstaw.

Facebook żegna HTML5, dużo szybsza natywna aplikacja dla iPhone.

Facebook for iOS 5.0 to zupełnie nowa aplikacja. Jak twierdzą programiści "Osadzenie HTML5 wewnątrz aplikacji mobilnej, nie jest tym czego oczekują użytkownicy".

Na swojej stronie internetowej Facebook jest średnio wylewny. Twórcy tłumaczą jedynie, że nowa aplikacja jest dwukrotnie szybsza od poprzedniej – i wcale nie kłamią. Jak to możliwe? Dotąd program był kodem HTML5 zamkniętym w aplikacji. Programiści postanowili porzucić taką metodę i napisali nowy program, tym razem korzystając z Apple iOS SDK. Efekt – program wygląda niemal identycznie, ale uruchamia się znacznie szybciej i działa bardzo płynnie. Programiści twierdzą również, że znacznie usprawniono otwieranie zdjęć."

Źródło: chip.pl 2012/08

A więc klasyczny, wręcz kliniczny, przykład zarzucenia rozwoju aplikacji hybrydowej na rzecz natywnej, w momencie kiedy okazało się, że ta pierwsza nie jest dostatecznie szybka i wydolna!

Podsumowanie

Aplikacje natywne to oprogramowanie z najwyższej, mobilnej półki. Możliwości ich implementacji oraz dalszego rozwoju są ograniczone jedynie możliwościami samego urządzenia i systemu operacyjnego, na który zostały zaimplementowane. Jednocześnie tylko ten rodzaj oprogramowania umożliwia użytkownikowi szybką i płynną pracę z aplikacją oraz możliwość nieogranicznego korzystania z funkcji urządzenia wewnątrz aplikacji.

Zawsze, kiedy wchodzimy w mobilność, kiedy dojrzewamy do decyzji o potrzebie posiadania aplikacji mobilnej, warto rozważyć od samego początku wytworzenie natywnej wersji takiego oprogramowania. Tylko taki typ aplikacji będzie mógł "rosnąć" wraz z kolejnymi potrzebami użytkowników i kolejnymi wersjami aplikacji. Inne rozwiązania, webowe czy hybrydowe, wcześniej lub nieco później, mogą okazać się niewystarczające i wówczas aplikację będzie trzeba napisać od początku w technologii natywnej.

Copyright © Ebitech Spółka z o.o.