Z czego składają się aplikacje
Każdą aplikację w szerokim tego słowa znaczeniu: od Messengera, przez MS Office a na Wikipedii kończąc, można podzielić na 2 części: Frontend i Backend. Są aplikacje, które mają tylko jedną z tych części, ale jest to dosyć rzadkie.
Słowa frontend i backend są używane przez różnych ludzi w różnym znaczeniu, więc musisz wziąć to pod uwagę, gdy koś używa tego słowa, ale ja tutaj używam najszerszego znaczenia. Frontend to wszystko to, co dzieje się na urządzeniu użytkownika. Backend to to, co dzieje się na serwerach.
Weźmy jako przykład aplikację Facebook Messenger. Możemy ją uruchomić wchodząc na facebook.com/messenger.com. Możemy też ściągnąć aplikację z Google Play, App Store, a nawet z Microsoft Store. Ta część to frontend. Ale bez dostępu do internetu Messenger jest bezużyteczny. I to, co jest na serwerach, z czym łączymy się przez internet, to backend.
Backend
Jest to ta część, która znajduje się na serwerze, której użytkownik bezpośrednio nie dotyka, dlatego dla osób nietechnicznych jest mało interesująca.
To co jest interesujące, to że potrzebny jest serwer, który kosztuje. Takie firmy jak Google wydają kosmiczne pieniądze na swoje serwerownie. Jednak jeśli ty myślisz o zrobieniu swojej aplikacji, to z doświadczenia powiem, że najprawdopodobniej wystarczy ci najtańszy dostępny na rynku serwer typu VPS, który będzie cię kosztować kilkanaście zł miesięcznie.
Tutaj też pojawia się takie pojęcie jak chmura. Przy czym jest to słowo używane bardzo często w marketingu, tak że zatraciło ono swoje znaczenie.
Frontend
Są 2 podstawowe podejścia do frontendu: aplikacja natywna i webowa (plus różne kombinacje mieszania tych podejść).
Aplikacja natywna
Aplikacja natywna to podejście bardziej klasyczne. Taką aplikację najpierw trzeba zainstalować. Na PCtach kiedyś instalowało się z płyt, teraz raczej się po prostu ściąga. Na urządzeniach mobilnych mamy sklepy jak Google Play.
Takie aplikacje tworzone są pod konkretny system. Z jednej strony daje to duże możliwości. Z drugiej jednak jest to uzależnienie od danego systemu (tzw. vendor lock). Adobe Photoshop powstał na Windowsa oraz na Mac OSX. Żeby uruchomić go na tablecie z Androidem, twórcy musieli by stworzyć go jeszcze raz od początku. Oczywiście są technologie, dzięki którym można tworzyć program raz i uruchamiać na kilku platformach, ale kilka to nie znaczy wszystkie.
Aplikacja webowa
W 1990 roku powstała koncepcja stron WWW. W założeniu miały służyć do czytania tekstów, które inni ludzie publikowali. Jednak przez te 30 lat przeglądarki internetowe rozwinęły się z narzędzia do czytania tekstu w platformy uruchamiające rozbudowane programy.
Tak więc aplikacja webowa to bardzo rozbudowana strona internetowa. Takimi aplikacjami są Gmail, Google Docs czy Facebook (choć wszystkie one mają też aplikacje Androidową i iOSową).
Zaletą takiej aplikacji jest po pierwsze, że nie musimy jej instalować. Po prostu wpisujemy adres lub klikamy w link. Druga sprawa to wieloplatformowość. Webową aplikację można otworzyć na czymkolwiek. I mówię nie tylko o Windowsie, Androidzie i iOSie. Przeglądarka jest chyba w każdym smart TV, jest w XBoxie, PS5 i Nintendo Switch (choć trochę ukryta). Tworząc aplikację webową jesteśmy też gotowi na te platformy, które dopiero powstaną w przyszłości.
Oczywiście są pewne ograniczenia. Np. możliwości integrowania się z tym co daje system są dość ograniczone. Możemy korzystać np. z kamery, GPS, ale obsługa NFC jest ciągle w fazie beta, a push notyfikacji ciągle nie ma na iPhone.
Podejście mieszane
Te dwa podejścia można mieszać. Można stworzyć aplikację natywną, która w środku uruchamia przeglądarkę internetową. Przykładem jest np. Slack, który możemy uruchomić w przeglądarce, ale możemy też zainstalować aplikację PCtową, która jest tak naprawdę tym samym co wersja webowa.
Oczywiście możemy mieszać te podejścia dowolnie. Możemy mieć część aplikacji zrobioną całkowicie natywnie, a część właśnie w formie webowej.
PWA
Progressive Web Application - jest to również podejście mieszane, ale od drugiej strony. Tworzymy aplikację, która z założenia jest webowa, ale aspiruje do bycia jak natywne. Np. możemy dodać sobie jej ikonę na ekran główny/pulpit i uruchamiać bez widoku paska przeglądarki (działa to zarówno na PCtach z Windowsem, jak i na Androidzie, ale Apple ma do tego ambiwalentny stosunek).