'Y'

Możliwe sposoby tworzenia aplikacji mobilnych

W tym artykule zabieram się do możliwych metod tworzenia aplikacji mobilnych. Dziś są dwie bardzo popularne platformy: iOS i Android. Niestety, popularność Windows pozostaje wewnątrz marginesu błędu.

Nov 21, 2017 2992
W tym artykule zabieram się do możliwych metod tworzenia aplikacji mobilnych. Dziś są dwie bardzo popularne platformy: iOS i Android. Niestety, popularność Windows pozostaje wewnątrz marginesu błędu.

Zarówno dla Androida, jak i dla iOS istnieją:

  • Znakomite narzędzia programistyczne
  • Świetne community, blogi, podcasty, specjalistyczne zasoby
  • Ogromna liczba rozwiniętych bibliotek open-source
Używając rodzimych narzędzi dla każdej platformy można utworzyć mnóstwo aplikacji.

Tym niemniej, mogą powstać niektóre pytania:

  • Czy może to zrobić jeden zespół?
  • Jak można wielokrotnie używać kodu na różnych platformach?
  • Czy może rozwiązanie być realizowane przez aktualny zespół?
  • Jak napisać mobilną aplikację dla Androida i iOS jednocześnie w możliwie najkrótszym czasie?
  • I czy możecie jak najszybciej zrobić prototyp, żeby działał na wszystkich platformach?
Pewnego razu miałem zadanie zrealizować proof of concept działający na iOS, Android i tabletach Windows 7 (tak, to był Windows 7). W podobnej sytuacji najbardziej użyteczne podejścia to te, co bazują na rozwiązaniach wieloplatformowych.

Dziś warto zwrócić uwagę na następujące rozwiązania wieloplatformowe:

  1. Xamarin
  2. ReactNative
  3. NativeScript
  4. Ionic
  5. Appcelerator
Każde z nich jest warte osobnego artykułu, ale zrobię krótki przegląd każdego i zwrócę uwagę na niektóre istotne cechy. Jeżeli poprosicie o odrębny przegląd którejkolwiek platformy, chętnie to zrobię w jednym ze swoich następnych artykułów.

1) Xamarin

Ta początkowo płatna platforma nie tak dawno została wykupiona przez Microsoft i teraz jest zupełnie darmowa. Jej cechy charakterystyczne:

  • Deweloperzy mogą używać języka C#
  • Rozwiązanie jest oparte o platformę Mono
  • Wszystkie API (interfejsy programistyczne) platformy są udostępnione poprzez klasy warstw C#
  • Istnieje możliwość wielokrotnego użycia komponentów UI (interfejsu iżytkownika) na Androidzie i iOS - Xamarin.Forms
  • Jeżeli jest potrzeba użycia rodzimej kontrolki systemu, można używać Xamarin.Android i Xamarin.iOS.
Dane rozwiązanie jest właściwe gdy ma się aktualny zespół programistów języka C#, których trzeba przełączyć na tworzenie aplikacji mobilnej.

Co ważne, dzięki użyciu platformy Mono wydajność nie spadnie w takim stopniu jak przy użyciu frameworków JavaScript.

Jako IDE (zintegrowane środowisko programistyczne) może być używany Xamarin Studio albo Visual Studio, chyba jeden z najlepszych frameworków dla wdrażania obciążonych funkcjonalnie projektów.

Może jednak pojawić się pewien dyskomfort podczas pisania aplikacji mobilnych pod względem narzędzi: Android Studio i Xcode oferują znacznie szerszą funkcjonalność.

2) React Native

Rozwiązanie, które oferuje Facebook, używa bardzo ciekawego podejścia. Ten framework:

  • stanowi logiczną ewolucję Reactu, tylko do programowania mobilnego;
  • używa języka JavaScript;
  • posiada rodzimy dla każdej platformy UI;
  • oferuje UI jako funkcję stanu aktualnego;
  • bazuje na wzorcu FLUX.
mobile apps.jpgInterfejs użytkownika izoluje się w odrębne komponenty w celu zapewnienia renderowania stanu. Istotna jest organizacja przepływu danych we właściwy sposób i układ interakcji między komponentami. To jest niezbędne do właściwego zorganizowania struktury kodu. Zdecydowanie zalecam zwrócić uwagę na Redux.

Bardzo lubię koncepcję React. Kiedy się już umie pisać kod dla WWW, można z łatwością zacząć użycie tego samego podejścia dla urządzeń mobilnych. Skoro UI jest izolowany, można osiągnąć lepsze wielokrotne użycie kodu między rozwiązaniami mobilnymi i webowymi.

3) NativeScript

  • NativeScript używa rodzimego renderowania, żadnego WebView
  • Używa Angular 2
  • Standardowy dwukierunkowy binding
  • W odróżnieniu od Phonegap, nie trzeba instalować żadnych wtyczek, aby używać rodzimych API; dostajesz gotowe rozwiązanie.
NativeScript w porównaniu do React Native niczym szczególnie się nie wyróżnia, chyba że bazuje na Angular2.

4) Ionic

  • Framework, bazujący na Angular
  • Renderowanie w WebView
  • Zorientowany na urządzenia mobilne posiadające wiele kontrolek
  • Jeżeli chcesz korzystać z API platformy, potrzebne są dodatkowe wtyczki
  • Widocznie niższa wydajność w porównaniu do React Native i NativeScript
5) Appcelerator

  • Framework Alloy MVC
  • Rodzime kontrolki UI
  • Znaczny komponent marketplace
  • Pionier w użyciu rodzimych kontrolek w połączeniu z JavaScript
  • Możliwe jest użycie PHP, Ruby, Python
Wnioski

W danym artykule także można byłoby poruszyć temat Qt i innych narzędzi do programowania aplikacji wieloplatformowych. Dobrą zasadą jest to, że w większości przypadków:

Wieloplatformowe rozwiązania JavaScript są najbardziej efektywne:

  • jako część wydzielonych funkcjonalności aplikacji używająca komponentów rodzimych
  • do testowania hipotez związanych z mobilnymi aplikacjami
Złożone wieloplatformowe rozwiązania są używane w długoterminowej perspektywie do:

  • tworzenia takich komponentów jak SIP-stock
  • obliczeń matematycznych
  • bibliotek graficznych itp.
Najbardziej praktycznym wieloplatformowym rozwiązaniem jest Xamarin.

Przyszłość należy do rozwiązań hybrydowych: czasem, gdy nie da się obejść bez rodzimych komponentów UI, można przenieść logikę biznesową do wieloplatformowych bibliotek C/C++. W innym przypadku trzeba zrobić jakieś okno dialogowe czy ekran ustawień, a to łatwo się robi za pomocą JavaScript. Na szczęście nie ma całkowicie uniwersalnych rozwiązań. Dlaczego na szczęście? Bo dzięki różnorodności światu możesz spróbować swoich sił z różnymi technologiami i znaleźć najbardziej właściwe rozwiązania, a także wprowadzić eleganckie podejścia z sąsiadujących technologii do rozwiązań, nad którymi pracujesz.

P.S. Na początku artykułu pisałem: "Pewnego razu miałem zadanie zrealizować proof of concept działający na iOS, Android i tabletach Windows 7 (tak, to był Windows 7)." Udało mi się rozwiązać to zadanie za pomocą React + Redux + Material UI, a także Cordova i Electron do opakowania aplikacji dla iOS, Android i Windows 7.

Ivan Alyakskin
Software Consultant

Udostępnij


Masz jeszcze jakieś pytania?
Skontaktuj się z nami
Thank you.
Your request has been received.