Możliwe sposoby tworzenia aplikacji mobilnych
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.
21 list 2017
4476
Other articles
Testowanie aplikacji za pomocą JUnit5 i JMock. Część 2
Jak przygotować się do certyfikacji IIBA. Wyzwania i hacki
Testowanie aplikacji za pomocą JUnit5 i Mockito. Część 2
Testowanie aplikacji za pomocą JUnit5 i Mockito. Część 1
Testowanie aplikacji za pomocą JUnit5 i EasyMock. Część 2
Testowanie aplikacji za pomocą JUnit5 i EasyMock. Część 1
Test Driven Development z użyciem JUnit 5. Część 6
Test Driven Development z użyciem JUnit 5. Część 5
Test Driven Development z użyciem JUnit 5. Część 4
Test Driven Development z uzyciem JUnit 5. Czesc 3
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ą:
Tym niemniej, mogą powstać niektóre pytania:
Dziś warto zwrócić uwagę na następujące rozwiązania wieloplatformowe:
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:
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:
Interfejs 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
4) Ionic
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:
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
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
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?
Dziś warto zwrócić uwagę na następujące rozwiązania wieloplatformowe:
- Xamarin
- ReactNative
- NativeScript
- Ionic
- Appcelerator
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.
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.

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.
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
- 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
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
- tworzenia takich komponentów jak SIP-stock
- obliczeń matematycznych
- bibliotek graficznych itp.
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