Cum dezvoltam aplicatii mobile - instrumente de dezvoltare

Cum dezvoltam aplicatii mobile - instrumente de dezvoltare

In acest articol vom aborda diferite moduri prin care putem sa dezvoltam aplicatii mobile. In acest moment in piata avem doua platforme populare: iOS si Android. Popularitatea Windows, din pacate, este in continuare foarte scazuta.
19 Dec 2016 7762
In acest articol vom aborda diferite moduri prin care putem sa dezvoltam aplicatii mobile. In acest moment in piata avem doua platforme populare: iOS si Android. Popularitatea Windows, din pacate, este in continuare foarte scazuta.

Atat pentru Android cat si pentru iOS, avem:

  • Instrumente excelente de dezvoltare
  • Comunitati de programatori foarte bune, bloguri, podcasturi si alte resurse
  • Un numar mare de librarii open source foarte mature
Folosind instrumentele native pentru fiecare platforma putem dezvolta nenumarate aplicatii. Insa pot aparea intrebari precum:

  • Putem sa facem asta cu o singura echipa?
  • Putem sa refolosim codul pe mai multe platforme?
  • Putem sa implementam o solutie folosind echipa pe care o avem acum?
  • Cum putem dezvolta o aplicatie mobila atat pentru Android cat si pentru iOS in cea mai scurta perioada de timp?
  • Cat de repede putem dezvolta un prototip care sa mearga pe toate platformele?
La un anumit moment in viata mea profesionala a trebuit sa dezvolt un proof of concept care sa ruleze pe iOS, Android si Windows 7. Intr-o situatie ca asta, cele mai utile abbordari sunt cele care se bazeaza pe solutii cross-platform.

Mai jos sunt cateva dintre solutiile cross-platform care mi se par cele mai utile:

  1. Xamarin
  2. ReactNative
  3. NativeScript
  4. Ionic
  5. Appcelerator
Fiecare din ele poate sa fie acoperita intr-o serie de articole separate, dar voi oferi o scurta trecere in revista a fiecarei solutii unde voi evidentia cateva din trasaturile importante.

1) Xamarin

Aceasta platforma pentru care trebuia initial sa platesti a fost achizitonata de Microsoft acum ceva timp, si in acest moment este gratuita. Caracteristicile ei importante sunt:

  • Programatorii pot sa foloseasca C# ca limbaj de programare
  • Solutia se bazeaza pe platforma Mono
  • Toate API-urile platformei sunt oferite printr-un layer classes C# (interceptor)
  • Exista posibilitatea de a folosi componente UI Android si iOS – Xamarin.Forms
  • Daca trebuie sa folositi native control, puteti sa folositi Xamarin.Android si Xamarin.iOS

Aceasta solutie este potrivita daca avem o echipa de programatori in C# care trebuie sa treaca pe dezvoltarea de aplicatii mobile.

De asemenea este important de evidentiat faptul ca folosind platforma Mono, performanta nu va scadea la fel de mult ca in cazul in care folosim JavaScript frameworks.

Putem sa folosim atat Xamarin Studio sau Visual Studio ca IDE, poate una dintre cele mai bune framework-uri de implementare a proiectelor functionally loaded.

S-ar putea insa sa nu fie foarte confortabil in termeni de instrumente pe care le avem la dispozitie atunci cand dezvoltam aplicatii: Android Studio sau Xcode ofera mult mai multe functionalitati.

2) React Native

Solutia este oferita de Facebook si foloseste o abordare interesanta.
  • Este o evolutie logica de la React, doar pentru dezvoltarea de aplicatii mobile
  • Foloseste JavaScript ca limbaj de programare
  • Are UI nativ pentru fiecare platforma
  • Ofera UI ca functie
  • Este bazata pe FLUX pattern
mobile apps.jpgUI este izolat in componente separate pentru a oferi state rendering. Este foarte important sa organizam flow-ul de date in mod corect si sa setam interactiunile intre componente. Acest lucru este necesar pentru organizarea corecta a structurii codului. Va recomand sa fiti foarte atenti la Redux.

Imi place foarte mult idea din spatele React. In momentul in care ai invatat sa scrii cod pentru web, poti sa folosesti cu usurinta aceeasi abordare pentru dispozitivele mobile. Din moment ce UI este izolat, poti sa folosesti codul mult mai bine pe diferite platforme mobile si solutii web.

3) NativeScript

  • NativeScript foloseste native rendering, nu WebView
  • Foloseste Angular 2
  • Two-way binding standard
  • Spre deosebire de Phonegap, nu trebuie sa instalezi plugin-uri pentru a folosi API native; primesti o solutie out of the box.
In comparatie cu React Native, NativeScript este foarte asemanator cu exceptia faptului ca foloseste framework-ul Angular 2.

4) Ionic

  • Platforma bazata pe Angular
  • Randare in WebView
  • Focus pe mobile cu controale multiple
  • Sunt necesare plug-inuri suplimentare daca vrem sa folosim API-urile platformei
  • Aparent performanta este mai scazuta spre deosebire de React Native si NativeScript
5) Appcelerator

  • Framework Alloy MVC
  • Controale native UI
  • Componenta mare de marketplace
  • Folosirea native controls in combinatie cu JavaScript
  • Putem folosi PHP, Ruby, Python
Concluzii

In acest articol puteam sa abordez si Qt sau alte instrumente cross-platform pentru dezvoltarea aplicatiilor. O regula simpla in majoritatea cazurilor este:

Solutiile cross-platform JavaScript sunt cele mai eficiente:

  • Ca parte a functionalitatii dedicate a aplicatiilor ce folosesc componente native
  • Pentru testarea ipotezelor atunci cand lucram cu aplicatii mobile
Solutiile complexe cross-platform sunt folosite pe termen lung pentru:

  • Dezvoltarea componentelor ca SIP-stock
  • Calcule matematice
  • Librarii grafice si altele
Cea mai utila solutie cross-platform este Xamarin.

Viitorul apartine solutiilor hibrid: uneori cand nu poti lucra fara componente native UI, poti sa mergi catre librariile C/C++. Sau poate ai nevoie sa dezvolti un pop-up window, sau un ecran pentru setari, lucru care poate sa fie facut cu usurinta cu JavaScript. Din fericire, nu exista solutii universale. De ce din fericire? Deoarece, prin aceasta varietate de solutii, putem sa testam mai multe si sa descoperim cele mai potrivite solutii si sa introducem abordari elegante dezvoltate cu solutii adiacente in aplicatiile pe care le dezvoltam.

PS: La inceputul articolului vorbeam despre situatia cu care m-am confruntat legat de proof of concept pentru iOS, Android si Windows 7. Am reusit sa rezolv aceasta sarcina folosind React + Redux + Material UI, precum si Cordova si Electron pentru a impacheta aplicatia pentru iOS, Android si Windows 7.

Ivan Alyakskin 
Software Consultant

Share the knowledge

Mai ai intrebari?
Contacteaza-ne.
Thank you!
The form has been submitted successfully.