Przesyłanie strumieni multimediów w oparciu o UserMedia, WebRTC i ASP.NET SignalR
http://pracait.com/aktualnosci/programista-cc-czerwiec-2015/

PhoneGap vs aplikacje natywne.

Pierwszymi odbiorcami tworzonych przez nas aplikacji czy stron internetowych są użytkownicy desktopów. Nie możemy zapominać jednak o użytkownikach urządzeń mobilnych. Aby zapewnić im wygodę i zagwarantować firmie większą liczbę odbiorców, decydujemy się na dedykowane aplikacje dla urządzeń mobilnych. Czy inwestować duże pieniądze na utworzenie i utrzymanie kilku różnych aplikacji? Czy może jednak wykorzystać dużo tańsze i bardziej powszechne języki programowania aby utrzymywać jedną aplikację dla wszystkich użytkowników?

Porównanie między aplikacjami natywnymi (iPhone: Objective-C, Android: Java, Windows: C#) a hybrydowymi (PhoneGap: HTML5, CSS, JavaScript)

Czym jest Phonegap

PhoneGap coraz częściej pojawia się w rozmowach nie tylko ludzi z branży, ale również samych klientów. Kreowany na zapleczu firmy Adobe, rozwija się i poprawia swoje osiągi. Czym właściwie jest?

To darmowy framework o otwartym kodzie źródłowym dla programistów front-end stron internetowych (HTML, CSS i JavaScript), przekształcający budowaną stronę na wersję offline, gotową do zainstalowania na urządzeniu mobilnym. Wykorzystuje do uruchomienia przeglądarkę internetową opartą o silnik WebKit, oraz dodatkowe biblioteki dla aplikacji natywnej.

Aplikacja natywna a hybrydowa

Aplikacja natywna oznacza program napisany dla określonej platformy sprzętowo-programowej, czyli działający na niej bezpośrednio, bez wsparcia innych programów, takich jak emulatory czy maszyny wirtualne. Urządzenia mobilne korzystające np. z systemów IOS, Android, Widnows Phone, wymagają napisania aplikacji w całkiem różnym języku programowania. Dodatkowo rozwój systemów mobilnych rodzi konieczność pisania aplikacji dedykowanej dla danej wersji systemu. Jeśli chcemy, aby nasza aplikacja działała zarówno na nowych jak i starszych urządzeniach, jesteśmy zmuszeni do pisania więcej niż jednej aplikacji dla jednej rodziny systemów. Cała aplikacja pisana jest od podstaw przez programistę, nie ogranicza go nic poza samymi możliwościami systemu, co pozwala na tworzenie rozbudowanych i wymagających aplikacji.

Z kolei hybrydowe aplikacje używają tylko jednej technologii i jest nią zestaw internetowy HTML, CSS i JavaScript, bez względu na rodzaj systemu operacyjnego urządzenia. W tym przypadku liczą się przeglądarki, dla których należy dostosować nasz kod. Nie wymaga to jednak pisania oddzielnych aplikacji. Taki program musimy jednak „opakować” interfejsem natywnej aplikacji, używając frameworków udostępniających taką możliwość. Nasza „opakowana” aplikacja korzysta z funkcji zawartych w użytym frameworku, który to z kolei komunikuje się z API systemu operacyjnego urządzenia i udostępnia funkcje dla naszej aplikacji. Takie aplikacje buduje się za pomocą różnych narzędzi (np. PhoneGap lub Ionic), a ich działanie można  porównać do tłumacza. Gdzie nasza aplikacja internetowa jest przetłumaczona z aplikacji natywnej.

W obu przypadkach mamy do czynienia z aplikacją którą można pobrać ze sklepu danego systemu operacyjnego (iPhone: iTunes App Store, Android: Google Play, Windows: Windows Apps), a następnie zainstalowaniu jej na naszym urządzeniu. Różnica polega na tym, że aplikacja natywna uruchamia się z ustawieniami, zachowaniem i wyglądem niektórych elementów zgodnym z danym systemem operacyjnym. Hybrydowa aplikacja, natomiast uruchamiana jest w przeglądarce internetowej, domyślnie nie dziedziczącej ustawienia systemu operacyjnego, chyba że umożliwia to użyty framework.

Różnice między hybrydą a aplikacją natywną

Przede wszystkim stworzenie aplikacji hybrydowej jest dużo tańsze, gdyż zabiera o wiele mniej czasu niż w przypadku aplikacji natywnej. Wymaga znajomości tylko jednego narzędzia i technologii internetowej (HTML, CSS, JavaScript), po czym działa od razu na 3 systemach operacyjnych.

W przypadku aplikacji natywnych, musimy wziąć pod uwagę, że każdy system operacyjny jak IOS, Android, WindowsPhone, wymaga napisania osobnej aplikacji w innym języku, co sprawia że rozwój jest dużo dłuższy i bardziej kosztowny, a i utrzymanie wymaga więcej pracy.

Minusem hybrydy jest ograniczony dostęp do skomplikowanych funkcji telefonu. Mimo iż programista ma możliwość swobodnego dopisywania wtyczek, mogących obsłużyć określone funkcje, jakie dostarczają aplikacje natywne, to domyślny zasób możliwości jest mocno ograniczony.

Kolejny minus aplikacji hybrydowej to szybkość działania i wygląd dopasowany do systemu operacyjnego. Ponieważ aplikacja uruchamia się poprzez przeglądarkę, automatycznie staje się jej poddana i zarządzana przez nią. Powoduje to mniejszą wydajność (pamięć, procesor, wątki), gdyż nie przekroczymy zasobów, narzuconych przez system na przeglądarkę i jej zaprogramowanych możliwości. Podobnie dzieje się z wyglądem. Aplikacja natywna korzysta z interfejsu systemu operacyjnego, przyjmując jego wizualne efekty, animacje czy kolorystykę. Tego brakuje hybrydzie korzystającej z przeglądarki internetowej. Twórcy frameworków dla hybryd pracują i rozwijają swoje programy aby zbliżyć ich możliwości do aplikacji natywnych. Zawsze będą jednak nieco w tyle, choćby ze względu na aktualizacje systemu, które muszą wprowadzić we frameworku, żebyśmy my następnie mogli zaktualizować aplikację hybrydową. Problem wydajności poprawił się znacząco dla smartfonów z Androidem 4.4 i stoi już na bardzo wysokim poziomie. Napisanie wydajnej i rozbudowanej aplikacji hybrydowej, to w dużej mierze teraz kwestia zdolności programisty a nie samej platformy. Dodatkowo, firma Apple kładzie spory nacisk na poprawę obsługi aplikacji tego typu, poprzez wspieranie najnowszych wersji technologii internetowych oraz graficznie WebGL.

Porównanie: PhoneGap i aplikacje natywne

Dzięki PhoneGap mamy możliwość stworzyć własną aplikację gotową do zainstalowania na dowolnym systemie operacyjnym urządzeń mobilnych. Dzięki bibliotekom JavaScript mamy wsparcie i dostęp do natywnych funkcji urządzenia. Poniżej pełniejsze zestawienie plusów i minusów.

PhoneGap i aplikacje natywne
Warto tutaj dodać, iż coraz więcej dużych firm (w tym w Polsce) lobbuje za używaniem PhoneGap, gdyż możliwości pokrywają często 100% zapotrzebowania. Bardzo duże i rozbudowane aplikacje jednak z niego nie skorzystają.

Obsługiwane funkcje Phonegap

Aktualne możliwości i ograniczenia dostępu do podzespołów urządzeń przez aplikację Phonegap można zobaczyć na oficjalnej stronie http://phonegap.com/about/feature/

Phonegap

Dlaczego warto skorzystać PhoneGap

Zarządzanie jednym kodem źródłowym:

Gdy mamy aplikacje natywne, musimy wprowadzać zmiany dla każdego systemu operacyjnego. W PhoneGap mamy jedną aplikacją którą rozwijamy.

Technologia internetowa jest łatwiejsza:

Prosta aplikacja JavaScript działa o wiele łatwiej i szybciej niż Java, a zwłaszcza Objective-C. Większość aplikacji nie prowadzi obliczeń w czasie rzeczywistym i służy głównie do wyświetlania zawartości pobranej z serwera. Czas poświęcony na napisanie prostej aplikacji JavaScript jest dużo mniejszy niż w innym języku dedykowanym dla systemu operacyjnego.

Gotowe biblioteki tworzące wygląd:

To trochę odmienne od wcześniej zaprezentowanego podejścia. Technologia internetowa ma to do siebie, że w sieci znajdziemy mnóstwo dodatków, dzięki którym niewiele musimy zastanawiać się nad wyglądem. Wystarczy dołączyć arkusz styli z fontami i cała aplikacja właśnie została upiększona. Podobnie rzecz ma się z pluginami JavaScript, które możemy wykorzystać w dowolny sposób.

Koszty:

Nie tylko czas realizacji i aktualizacji aplikacji jest krótszy, ale również koszt pracy samych programistów. Technologie internetowe są dużo bardziej popularne, a w tej samej cenie można zdobyć o wiele silniejszego developera JavaScript niż Java czy Objective-Club takiego samego za znacznie niższą cenę. Aby dostosować aplikację do kilku systemów operacyjnych, wystarczy jeden programista JavaScript. Przy aplikacjach natywnych, jeden na jeden system.

Podsumowanie

Wybór rozwiązania czasem może być łatwiejszy niż się wydawało na początku. Chcąc stworzyć nową aplikację, wiemy z dużą dokładnością jaki ma cel, do kogo jest kierowana i jak ma działać. Do tego wystarczy dodać kilka dodatkowych kryteriów: to na co kładziemy największy nacisk i co ma się dziać z naszą aplikacją w przyszłości. Ta nieskomplikowana analiza wystarczy do podjęcia decyzji czy tworzyć aplikację natywną czy hybrydową.

Poniżej znajduje się kilka pomocnych zagadnień ułatwiających wybór.

Wybierz aplikację PhoneGap, jeśli:

  • potrzebujesz niezbyt skomplikowanej aplikacji mobilnej, z prostymi funkcjami, bez fajerwerków,
  • chcesz ją zrobić tańszym kosztem i w krótszym czasie,
  • zależy Ci na stworzeniu prototypu aplikacji, do prezentacji potencjalnym klientom, rozpoczęcia startapu lub szybkim zaistnieniu na rynku.

Zdecyduj się na aplikację natywną, jeśli:

  • posiadasz aplikację mobilną i potrzebujesz ją rozbudować,
  • potrzebujesz stworzyć zaawansowaną grę, wymagający program robiący obliczenia w czasie rzeczywistym i animacjami
  • zależy Ci na wysokiej jakości, wydajności, oraz zaufaniu klientów
  • budżet i czas nie są wyznacznikiem realizacji.

 


AUTOR: Sebastian Maścibroda

Pasjonat najnowszych technologii frontowych, frameworków JavaScript i CSS. Od studenckich lat zajmuje się front-endem, od 2012 pracuje jako programista interfejsu użytkownika w Grupie Unity. Przez ten czas tworzył i rozwijał wiele witryn. Brał udział w realizacji stron internetowych dla firm 4F, SimplePublishing, Tubes oraz aplikacji LeroyMerlin.

Comments are closed.