Możliwe sposoby projektowania aplikacji mobilnych
Możliwe sposoby projektowania aplikacji mobilnych
Niniejszy artykuł porusza temat dostępnych metod projektowania aplikacji mobilnych. Na czas obecny istnieją dwie najbardziej rozpowszechnione platformy: iOS i Android. Niestety, popularność Windowsa waha się na granicy błędu.
8 list 2017
2612
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
Niniejszy artykuł porusza temat dostępnych metod projektowania aplikacji mobilnych. Na czas obecny istnieją dwie najbardziej rozpowszechnione platformy: iOS i Android. Niestety, popularność Windowsa waha się na granicy błędu.
Zarówno dla Androida, jak i dla iOS istnieją:
Tym niemniej, czasem pojawiają się pytania:
Obecnie, należy wyróżnić następujące możliwe rozwiązania dla cross-platformy:
1) Xamarin
Platforma ta nie tak dawno została wykupiona przez firmę Microsoft. Wcześniej była płatna - obecnie jest całkowicie bezpłatna. Jej cechy szczególne:
Jako IDE można użyć zarówno Xamarin Studio, jak i Visual Studio, być może jednego z lepszych framework'ów dla realizacji obciążonych funkcjonalnością projektów. Należy jednak pamiętać, że możesz poczuć dyskomfort przy programowaniu aplikacji mobilnych z punktu widzenia narzędzi: Android Studio i Xcode oferują znacznie więcej funkcjonalności.
2) React Native
Rozwiązanie proponowane przez Facebook z dostatecznie interesującym podejściem. Dany framework:
Interfejs użytkownika dzieli się na odrębne komponenty dla zapewnienia procesu renderowania. Ważne jest, aby prawidłowo zorganizować przepływ danych i nawiązać interakcję między komponentami. Jest to niezbędne dla właściwej organizacji struktury kodu. Zdecydowanie polecam zwrócenie uwagi na Redux.
Podoba mi się idea React. Gdy raz nauczysz się pisać kod dla web, możesz z łatwością zacząć używać tego samego podejścia wyłącznie dla urządzeń mobilnych. Jako że UI jest izolowane, można ponownie wykorzystać ten sam kod między mobilnymi i webowymi rozwiązaniami.
3) NativeScript
4) Ionic
Oparty na frameworku Angular
Rendering w WebView
Zorientowany na urządzenia mobilne z dużą ilością controls
Przy konieczności użycia API platformy należy użyć dodatkowych pluginów
Wyraźnie niższa wydajność w porównaniu z React Native i NativeScript
5) Appcelerator
Wnioski
W niniejszym artykule powinienem także opisać Qt i inne narzędzia do wieloplatformowego tworzenia aplikacji. Jak pokazuje praktyka, w większości przypadków:
Wieloplatformowe rozwiązania JavaScript są najefektywniej wykorzystane:
Złożone wieloplatformowe rozwiązania mają swoje długoterminowe zastosowanie w:
Przyszłość należy do rozwiązań hybrydowych: gdy niemożliwe jest zrezygnowanie z natywnych komponentów interfejsu użytkownika, można przenieść logikę biznesową do wieloplatformowych bibliotek C/C++. Być może zajdzie potrzeba stworzenia okna pop-up lub ekranu ustawień, który może być z łatwością zrealizowany przy pomocy JavaScript. Na szczęście, nie istnieje całkowicie uniwersalnych rozwiązań. Dlaczego na szczęście? Ponieważ, dzięki różnorodności świata można spróbować swych sił w rozmaitych technologiach i znajdować najbardziej odpowiednie rozwiązania, a także wnosić do opracowywanych rozwiązań proste i eleganckie podejścia z sąsiednich technologii.
P.S. Na początku artykułu napisałem: "Kiedyś dostałem zadanie, by zrealizować proof of koncept pracujący na tabletach iOS, Android i Windows7 (tak, dokładnie Windows 7)." Zdołałem rozwiązać to zadanie za pomocą React + Redux + Material UI, a także Cordova i Electron dla upakowania aplikacji dla iOS, Androida i Windows 7.
Ivan Alyakskin
Software Consultant
Zarówno dla Androida, jak i dla iOS istnieją:
- Znakomite narzędzia rozwoju;
- Bardzo dobre communities, blogi, podkasty, specjalistyczne zasoby internetowe;
- Ogromna ilość rozbudowanych bibliotek open source.
Tym niemniej, czasem pojawiają się pytania:
- Czy można wykonać wszystko wspólnymi siłami jednego zespołu?
- W jaki sposób można ponownie zastosować kod w innej platformie?
- Czy rozwiązanie może być wdrożone siłami istniejącego zespołu?
- Jak stworzyć aplikację mobilną dla Androida i iOS w jak najkrótszym czasie?
- I czy możliwe jest stworzenie prototypu, który będzie pracował na wszystkich platformach?
Obecnie, należy wyróżnić następujące możliwe rozwiązania dla cross-platformy:
- Xamarin
- ReactNative
- NativeScript
- Ionic
- Appcelerator
1) Xamarin
Platforma ta nie tak dawno została wykupiona przez firmę Microsoft. Wcześniej była płatna - obecnie jest całkowicie bezpłatna. Jej cechy szczególne:
- Programiści mogą używać języka C# jako języka programowania;
- Rozwiązanie jest oparte na platformie Mono;
- Wszystkie API na platformie są zapewnione przez klasy-powłoki C#;
- Istnieje możliwość ponownego użycia komponentów UI na Androidzie i iOS - Xamarin.Forms;
- W razie potrzeby użycia kontroli rodzimych dla systemu kontroli, można użyć Xamarin.Android i Xamarin.iOS.
Jako IDE można użyć zarówno Xamarin Studio, jak i Visual Studio, być może jednego z lepszych framework'ów dla realizacji obciążonych funkcjonalnością projektów. Należy jednak pamiętać, że możesz poczuć dyskomfort przy programowaniu aplikacji mobilnych z punktu widzenia narzędzi: Android Studio i Xcode oferują znacznie więcej funkcjonalności.
2) React Native
Rozwiązanie proponowane przez Facebook z dostatecznie interesującym podejściem. Dany framework:
- jest logiczną kontynuacją React, jedynie dla środowisk mobilnych;
- jako języka programowania używa JavaScript;
- UI natywne dla każdej platformy;
- UI jako funkcja bieżącego stanu;
- Jest oparty na wzorcu FLUX.

Podoba mi się idea React. Gdy raz nauczysz się pisać kod dla web, możesz z łatwością zacząć używać tego samego podejścia wyłącznie dla urządzeń mobilnych. Jako że UI jest izolowane, można ponownie wykorzystać ten sam kod między mobilnymi i webowymi rozwiązaniami.
3) NativeScript
- NativeScript używa renderingu natywnego, żadnych WebView
- Używa Angular 2
- Standardowe dwukierunkowe wiązanie danych
- W odróżnieniu od Phonegap, nie trzeba instalować żadnych pluginów dla użycia natywnych API; otrzymuje się rozwiązanie out-of-the-box.
4) Ionic
Oparty na frameworku Angular
Rendering w WebView
Zorientowany na urządzenia mobilne z dużą ilością controls
Przy konieczności użycia API platformy należy użyć dodatkowych pluginów
Wyraźnie niższa wydajność w porównaniu z React Native i NativeScript
5) Appcelerator
- Framework Alloy MVC
- Natywne UI-controls
- Duży komponent marketplace
- Prekursor w użyciu native controls w połączeniu z JavaScript
- Możliwość użycia PHP, Ruby, Python
Wnioski
W niniejszym artykule powinienem także opisać Qt i inne narzędzia do wieloplatformowego tworzenia aplikacji. Jak pokazuje praktyka, w większości przypadków:
Wieloplatformowe rozwiązania JavaScript są najefektywniej wykorzystane:
- jako część dedykowanej funkcjonalności aplikacji, używającej natywne komponenty;
- dla zweryfikowania postawionych hipotez, związanych z aplikacjami mobilnymi.
Złożone wieloplatformowe rozwiązania mają swoje długoterminowe zastosowanie w:
- budowaniu komponentów typu SIP-stock
- matematycznych obliczeniach
- bibliotekach graficznych, itd.
Przyszłość należy do rozwiązań hybrydowych: gdy niemożliwe jest zrezygnowanie z natywnych komponentów interfejsu użytkownika, można przenieść logikę biznesową do wieloplatformowych bibliotek C/C++. Być może zajdzie potrzeba stworzenia okna pop-up lub ekranu ustawień, który może być z łatwością zrealizowany przy pomocy JavaScript. Na szczęście, nie istnieje całkowicie uniwersalnych rozwiązań. Dlaczego na szczęście? Ponieważ, dzięki różnorodności świata można spróbować swych sił w rozmaitych technologiach i znajdować najbardziej odpowiednie rozwiązania, a także wnosić do opracowywanych rozwiązań proste i eleganckie podejścia z sąsiednich technologii.
P.S. Na początku artykułu napisałem: "Kiedyś dostałem zadanie, by zrealizować proof of koncept pracujący na tabletach iOS, Android i Windows7 (tak, dokładnie Windows 7)." Zdołałem rozwiązać to zadanie za pomocą React + Redux + Material UI, a także Cordova i Electron dla upakowania aplikacji dla iOS, Androida i Windows 7.
Ivan Alyakskin
Software Consultant