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
Other articles
Object-relational Mapping folosind JPA, Hibernate si Spring Data JPA. Persistence cu JPA
Cum sa interogam Kafka Streaming Data?
Procrastinarea. Care sunt avantajele ei?
Object-relational Mapping folosind JPA, Hibernate si Spring Data JPA
Procrastinarea
Cerinte. De ce avem nevoie de ele?
Dezvolta-ti abilitatile cu training-urile noastre
Programarea reactiva Java. Implementari
Testarea software. Intrebari tipice si raspunsuri. Continuare
Testarea software. Intrebari tipice si raspunsuri
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:
Mai jos sunt cateva dintre solutiile cross-platform care mi se par cele mai utile:
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:
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.
UI 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
4) Ionic
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:
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
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
- 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?
Mai jos sunt cateva dintre solutiile cross-platform care mi se par cele mai utile:
- Xamarin
- ReactNative
- NativeScript
- Ionic
- Appcelerator
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

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.
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
- Framework Alloy MVC
- Controale native UI
- Componenta mare de marketplace
- Folosirea native controls in combinatie cu JavaScript
- Putem folosi PHP, Ruby, Python
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
- Dezvoltarea componentelor ca SIP-stock
- Calcule matematice
- Librarii grafice si altele
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