Aplikacje mobilne a aplikacje internetowe czym się różnią?

Z aplikacjami do czynienia mam od młodości. Jak każdy, kto miał do dyspozycji komputer za młodu, gdzie można było odpalić grę w 8 bitach, aby zostać porażonym jakością pixelowej grafiki. Włączyć edytor treści napisać parę bzdur a następnie wrócić do ustawiania głowicy czytnika kasety magnetofonowej śrubokrętem, aby można było włączyć kolejną grę.
Oh ten high tech lat `90. Ale co by nie mówić, grywalność była świetna (coś na temat kreatywności przy ograniczeniach). Nostalgia o starych lepszych czasach, kiedy joysticki latały po pokoju, bo po raz kolejny nie udało się wygrać rozgrywki i trzeba je było naprawiać sprawnymi dziecięcymi dłońmi jest nie do porównania.
Wzdychając na poprzedni wiek, gdzie wszystko wydawało się prostsze, coraz częściej korzystamy z komputera w celach kreatywnych, nie tylko rozrywkowych, wykorzystując zainstalowane programy do edycji zdjęć, projektowania czy grafiki 3d. Programy stacjonarne, które przypominają te mobilne (wspaniałe przejście co nie?).
Czy jednak zastanawiałeś się nad tym dlaczego właściwie istnieją różne rodzaje aplikacji i które powinno się wybrać do odpowiednich zadań? Jaką przewagę mają jedne nad drugimi?
Rodzaje aplikacji.
Generalnie można wydzielić dwa rodzaje aplikacji. Pierwsze to aplikacje natywne(np. programy komputerowe, aplikacje mobilne), gdzie wykorzystywane są zasoby takie jak procesor, pamięć etc., która jest do dyspozycji na danym sprzęcie. Po drugiej stronie są aplikacje internetowe, które wykorzystują zasoby “wspólne”.
Aplikacje webowe są uruchamiane na serwerach i dostępne są przez przeglądarkę internetową (np. Allegro, OLX, Gmail czy YouTube). Część zasobów przechowywanych jest i odpalanych w przeglądarkach, a część działa na serwerach, gdzie wykonywany jest kod, a my dostajemy wynik w postaci strony. Nie trzeba ich instalować co oszczędza miejsce na komputerze.
Aplikacje mobilne są aplikacjami takimi jak te na komputery, a różnią się sposobem dystrybucji, ponieważ zazwyczaj są scentralizowane do jednego sklepu, w którym są zarządzane, weryfikowane itd.
Aplikacje mobilne, są odpowiednikiem aplikacji na komputer ale dla telefonów. Charakteryzuje je (zazwyczaj) lepsza wydajność i dostęp do większych możliwości sprzętu, na jakich są uruchamiane.
Zalety i wady aplikacji natywnych (mobilne, komputerowe).
Wydajność, to jedna z najważniejszych zalet aplikacji. Możliwości, jakie dają w kwestii integracji sprzętowej czyli wykorzystania podłączonych urządzeń bądź wbudowanych komponentów. W przypadku aplikacji mobilnej mogą to być elementy jak czytniki NFC, lokalizacji, dostęp do czytnika linii papilarnych. W skrócie jeśli telefon (w przypadku aplikacji mobilnej) posiada jakąś funkcjonalność, to mamy do niej dostęp także podczas używania aplikacji.
Wady aplikacji to sposób dystrybucji oraz to, że dla każdej platformy aplikację musimy napisać tak jakby od zera, jeszcze raz. Często trzeba powielać kod w innym środowisku dla programistów, a koszty dodatkowo zwiększają się przez testowane na różnych systemach operacyjnych (ios, Android). Choć wydaje się, że nie ma ich dużo, to różnice potrafią wykładniczo zwiększyć cenę tych dwóch elementów, a do tego znacznie wydłużyć czas wdrożenia.
Zalety i wady aplikacji internetowych.
Największą zaletą aplikacji internetowej jest jej łatwość aktualizacji ponieważ kod jest częściowo lub całkowicie wykonywany na serwerze, a reszta w przeglądarce, na której jest uruchomiona część kodu klienta czyli front end (HTML,CSS, JavaScript).
Daje to znaczne oszczędności odnośnie utrzymania kodu. Znaczy to tyle, że nie musimy się przejmować na jakim sprzęcie uruchamiana jest aplikacja (czasami trzeba wziąć pod uwagę różnice w tym, jak przeglądarki interpretują kod, ale to historia na inny raz).
Kod ten nie jest kompilowany, a interpretowany, przez co jego wydajność jest mniejsza niż programu natywnego.
Aplikacje internetowe mają ograniczone możliwości korzystania z zasobów, jakie daje sprzęt, na którym są uruchamiane. Polegają one na tym co udostępnia im przeglądarka, której zaś możliwości udostępnia system, na jakim się znajduje.
Kiedy wybrać aplikację mobilną a kiedy internetową?
Odpowiedź na to pytanie jest złożona, i ponownie jak w przypadku każdej decyzji odpowiedź brzmi "to zależy". Zacznij jednak od pytania co ta aplikacja właściwie ma robić?
Czy wykonuje złożone, wymagające wyższej mocy obliczeniowej czynności (np. edycja grafiki). Czy potrzebny jest jej stały dostęp do internetu, aby działała? W jakim stopniu będzie korzystać z urządzeń zewnętrznych, ale weź też pod uwagę kwestie logistyczne, na jaką platformę ma być wykonana i w jaki sposób będzie rozpowszechniana.
Druga kwestia to bezpieczeństwo. Generalnie aplikacje zainstalowane na sprzęcie są trudniejsze do włamania się, czy przejścia do ataków phishingowych. Czy rozwiązanie, które chcesz przygotować powinno wykorzystywać szyfrowania, zatem czy w aplikacja bezpieczeństwo będzie kluczowym składnikiem (np. aplikacje bankowe, finansowe)?
Kolejne pytanie: jaki masz budżet? No i dochodzimy do tego czego nie można powiedzieć na głos (pamiętaj budżet to tajemnica ;). Oprogramowanie dedykowane będzie droższe, zdecydowanie droższe. Musisz też wziąć pod uwagę, że jeśli chcesz zrobić ten sam program na kilka systemów, to koszty mogą się mnożyć.
PWA połączenie dwóch światów.
W tym momencie jeśli zastanawiasz się - “a czy nie można by tego jakoś połączyć?“ to znaczy, że jeśli nie jesteś inżynierem, to może powinieneś nim być.
Progresywne aplikacje internetowe (progressive web apps) to właśnie próba połączenia dwóch światów. Aplikacje te są uruchamiane w przeglądarce, ale można je opublikować w app, czy play store. Mają one też dostęp do funkcji takich jak - działanie offline oraz sprzętowych możliwości telefonu (żyroskop, lokalizacja, Bluetooth i wiele innych).
Inne zalety progresywnych aplikacji webowych to możliwość tworzenia skrótów na ikonach, dostępu do plików oraz kontaktów na telefonie. Dodatkowo wiele innych opcji np. dostęp do portów, połączeń z zewnętrznym sprzętem (smartwatch), możliwość podzielenia się plikiem i inne, ale do tego jednak wrócę w osobnym artykule.
Na koniec porównanie w przystępnej formie:
Ta tabelka może pomóc w wybraniu odpowiedniego rozwiązania jeśli nie wiesz jeszcze które:
czynnik | Aplikacja internetowa | Aplikacja mobilna (natywna) | PWA |
---|---|---|---|
Koszt | Najniższy, pojedyncza baza kodu, brak opłat za aplikacje | Najwyższe, oddzielna dla iOS/Android | Średni, pojedyncza baza kodu, niewielki dodatek za funkcje |
Wydajność | Niska, uruchamiana w przeglądarce, tylko online | Wysoka, zoptymalizowana pod sprzęt, działa offline | Średnia do wysokiej, szybciej z buforowaniem, niektóre opcje dostępne offline |
Bezpieczeństwo | Średni, wymaga HTTPS, bezpieczeństwo zależne od przeglądarki | Wysoki poziom, recenzje w sklepie z aplikacjami, uprawnienia | Średni do wysokiego, sandboxing, mniej gromadzenia danych |
Kiedy wybrać | Niski budżet, wieloplatformowość, aktualizacje | Wysoka wydajność, działanie offline, sprzęt | Zrównoważony koszt/funkcje, mobile-first, niektóre funkcja dostępne offline |