W poprzedniej części cyklu StormSnapshot zebraliśmy wymagania wobec naszej aplikacji. Dzisiaj chciałbym przedstawić Wam dylematy związane z tworzeniem aplikacji mobilnych. W kolejnych krokach zastanowimy się, na jakich technologiach oprzeć naszą aplikację.
Spis treści
Co to jest aplikacja mobilna?
Zacznijmy od prostej definicji. Aplikacja mobilna to oprogramowanie działające na urządzeniach przenośnych, czyli przede wszystkim na różnych smartfonach, czy tabletach.
Aplikacje mobilne – od czego zacząć?
Decydując się na programowanie aplikacji mobilnych, musisz dokonać wielu wyborów. Jedną z najważniejszych decyzji, jest wybranie obsługiwanych platform oraz język programowania i konkretne frameworki, przy pomocy których powstanie aplikacja.
W tekście zebrałem niezbędne informacje tak, by podjęta decyzja była bardziej świadoma.
Jak wygląda rynek aplikacji mobilnych?
Rynek aplikacji mobilnych, delikatnie mówiąc, jest skomplikowany. Jest to niestety przeciwieństwo zwykłych aplikacji webowych, gdzie raz napisana aplikacja z wykorzystaniem HTMLa i JavaScriptu, może zostać uruchomiona na praktycznie dowolnej przeglądarce internetowej.
W przypadku programowania aplikacji mobilnych musimy brać pod uwagę nie tylko możliwości samego urządzenia, na którym będzie działała nasza aplikacja, ale również jego system operacyjny.
Na początek 2017 roku w Polsce mamy 3 głównych graczy, jeżeli chodzi o mobilne systemy operacyjne:
- Android – niekwestionowany lider, prawie 90% rynku!
- Windows Phone – około 5%;
- iOS – około 2%;
Wyraźnie widać, że Polska została całkowicie zdominowana przez system operacyjny od Google. Jednak jeżeli spojrzymy na statystyki z punktu widzenia całego świata, większego znaczenia nabiera również system od Apple.
Ciekawostką jest to, że Android jest w Polsce najpopularniejszym systemem, nawet jeżeli pod uwagę weźmiemy komputery stacjonarne.
Polska czy świat?
Na podstawie tych statystyk widać, że trzeba sobie zadać pytanie, czy aplikacja ma być przeznaczona tylko dla użytkowników z Polski, czy raczej celujemy w globalny rynek.
Zrozumiałe jest to, że chcielibyśmy dotrzeć do jak największego grona odbiorców. Jeśli jednak aplikacja ma być dostępna tylko w Polsce, sytuacja nie jest już tak oczywista. Warto zastanowić się, czy z punktu widzenia ekonomicznego bardziej opłacalne nie będzie ograniczenie się tylko do Androida. Stracimy co prawda część rynku, ale możemy wtedy skupić się tylko na jednej platformie.
Natywna aplikacja mobilna
Aplikacja natywna, czyli taka, która została od podstaw napisana w języku programowania specyficznym dla danej platformy:
- Android – Java
- iOS – Objective C
- Windows Phone – C#
Jest to standardowe podejście do programowania, mianowicie jeden system operacyjny – jedna aplikacja. Niestety każda platforma to całkowicie inny świat programistyczny. Dlatego pisząc aplikacje natywne, utrzymujemy kilka niezależnych aplikacji, w różnych językach.
Tylko kogo na to stać…
Idziemy na kompromis – aplikacje hybrydowe
Aplikacje hybrydowe są swego rodzaju kompromisem między możliwościami, jakie dają aplikacje natywne a kosztem wytwarzania i utrzymania oprogramowania. Jeżeli nie możemy sobie pozwolić na rozwijanie kilku niezależnych aplikacji i jednocześnie chcemy udostępnić nasze działo szerszemu gronu, powinniśmy zainteresować się właśnie aplikacjami hybrydowymi.
Hybrydy pisane są najczęściej z wykorzystaniem technologii przeznaczonych do budowania aplikacji internetowych (HTML, JavaScript), jednak za pomocą specjalnie spreparowanego API mają również dostęp do natywnych funkcjonalności telefonu, jak kamera, czy odbiornik GPS.
Z czego musimy zrezygnować?
Niestety w życiu nie ma nic za darmo. W tym przypadku też musimy z czegoś zrezygnować, żeby cieszyć się możliwościami aplikacji hybrydowych.
Tego typu aplikacje z racji wprowadzenia dodatkowej warstwy abstrakcji, są zazwyczaj wolniejsze. Jednak dzisiejsze telefony są już na tyle szybkie, że w większości wypadków nie ma to tak dużego znaczenia.
Kolejny minus takich rozwiązań wynika bezpośrednio z ich specyfiki. Ponieważ te aplikacje muszą działać na kilku różnych systemach, funkcjonalności, które oferują, muszą być dostępne na wszystkich platformach. Wszelkie specyficzne rzeczy nie będą zwyczajnie obsługiwane.
To ograniczenie w pewnym stopniu można obejść. Trzeba jednak przygotować specyficzne fragmenty kodu dla różnych systemów, np. w formie pluginów.
Apache Cordova (PhoneGap)
Najbardziej popularny przedstawiciel tej kategorii to Apache Cordova (dawniej PhoneGap). Raz napisana aplikacja przy pomocy HTML i JavaScript jest opakowywana w web view i udostępniana w formie zwykłej aplikacji na daną platformę.
Jaki typ aplikacji wybrać?
Natywne
Brak pośrednich technologii i brak dodatkowych narzutów jest niewątpliwie kuszącą opcją. Dlatego, jeżeli ze względu na koszty możemy pozwolić sobie na utrzymywanie kilku aplikacji lub jeżeli decydujemy się tylko na jedną platformę, warto wybrać aplikacje natywne.
Hybrydowe
Jeżeli jesteśmy w stanie iść na pewne kompromisy, to decydując się na aplikacje hybrydowe, oszczędzimy bardzo dużo czasu i pieniędzy.
StormSnapshot – czas wyboru
Aplikacja StormSnapshot docelowo będzie rozwijana w co najmniej dwóch językach: po polsku i angielsku. Chciałbym również, żeby była dostępna dla użytkowników z całego świata. Z przedstawionych wcześniej statystyk wynika, że powinienem zainteresować się przynajmniej dwiema platformami: Android oraz iOS.
Ponieważ nie chcę przeznaczyć na ten projekt tyle czasu, by rozwijać dwie aplikacje, a dodatkowo nie znam Objective C, najlepszym wyborem wydaje się aplikacja hybrydowa.
W kolejnym tekście zastanowimy się nad możliwościami konkretnych frameworków dla aplikacji hybrydowych i wybierzemy ten spełniający nasze oczekiwania.
20+ BONUSOWYCH materiałów z programowania
e-book – „8 rzeczy, które musisz wiedzieć, żeby dostać pracę jako programista”,
e-book – „Java Cheat Sheet”,
checklista – „Pytania rekrutacyjne”
i wiele, wiele wiecej!
[su_button url="/ebook/?r=1&utm_campaign=w_pt" target="blank" style="soft" size="8" center="yes" icon="icon: download" desc="e-book" title="Pobieram darmowy e-book"]Odbieram Dostęp Do E-Booków![/su_button]