TSM - Dezvoltarea aplicațiilor mobile: Între nativ și hibrid

Cătălin Prata - Mobile Software Developer

În ziua de astăzi utilizarea dispozitivelor mobile inteligente din categoria tabletelor și telefoanelor este într-o creștere permanentă. Din această cauză producătorii de dispozitive mobile sunt forțați să își îmbunătățească produsele hardware și să vină cu tehnologii îmbunătățite sau parcă rupte din filmele SF. Nu este o noutate nici faptul că volumul vânzărilor de produse hardware de la companii gigant precum Apple, Samsung, BlackBerry sau Nokia este dat în bună parte, de numărul și calitatea aplicațiilor software pe care fiecare platformă îl pune la dispoziție utilizatorilor ei.

Platforme mobile precum iOS, Android, BlackBerry și Windows Phone luptă acum și pentru câștigarea atenției din partea dezvoltatorilor software care până la urmă au potențialul de a atrage sau chiar respinge utilizatori.

Dezvoltatorii de aplicații software la rândul lor caută să își facă loc în piețele de aplicații software mobile, un loc care să le asigure stabilitate pe termen lung. Pentru aceasta, dezvoltatorii sun puși la încercarea de a alege între dezvoltarea aplicațiilor mobile utilizând cod nativ sau opțiunea de a dezvolta aplicații hibride.

Aplicații native

Aplicațiile native sunt aplicații scrise în limbajul de programare specific platformei pentru care se dezvoltă. În tabelul 1.0 puteți observa câteva din sistemele de operare mobile împreună cu limbajul de programare specific, platformele pentru dezvoltare precum și cu medii de dezvoltare folosite de către programatorii de aplicații mobile.

Sistem de operare Limbaj de programare Platformă IDE
Android Java, C++< Android SDK/NDK Android Studio
iOS Objective-C Cocoa Touch Xcode
Windows Phone C#, Visual Basic .NET (Windows Phone 8), C++ .NET, Windows Phone Runtime API Windows Phone Software Development Kit
BlackBerry OS Java BlackBerry Java SDK BlackBerry JDE / Eclipse folosind BlackBerry Plug-in
Firefox OS JavaScript WebAPI Orice IDE HTML, JavaScript și CSS  (NetBeans, Eclipse, etc.)
Symbian C++ Qt Qt Creator

Caracteristici

Un utilizator de dispozitive mobile fidel poate face diferența foarte ușor între aplicațiile mobile native sau cele hibrid. Datorită timpului de răspuns superior și faptului că acesta are acces la diferite componente hardware ale dispozitivului (bluetooth, camera foto sau cea frontală, ledurile de notificare (Android) și altele), aplicațiile native pot fi destul de atractive pentru oricine .

Giganții piețelor de aplicații mobile sunt tot mai puși pe îmbunătățirea mediilor de dezvoltare și a șabloanelor de lucru, totul pentru a atrage de partea lor cât mai mulți dezvoltatori de aplicații mobile. Acesta este un lucru cât se poate de bun pentru un dezvoltator care poate profita de unelte gratuite menite să facă implementarea aplicației cât mai rapidă, câștigând mai mult timp pentru investirea în idei noi sau finisarea produsului.

O aplicație nativă care respectă regulile de dezvoltare specifice platformei pentru care este destinată, nu va folosi niciodată aceleași resurse grafice: butoane, icoane, fundaluri pentru liste, etc. pentru mai mult de o platformă. Aceasta din cauză că aplicațiile native trebuie să păstreze din comportamentul și designul sistemului de operare pe care rulează. Acestea trebuie să se integreze în platforma aleasă de utilizatorul final.

Aplicațiile native sunt foarte pretențioase când vine vorba de cunoștiințele de dezvoltare a programatorului. Aceasta deoarece fiecare platformă cere cunoașterea a cel puțin unui limbaj de programare diferit față de alta platformă iar la rândul lui și limbajul de programare vine cu un șablon de lucru care de obicei este destul de stufos. Pentru ca un produs "nativ" să poată fi rulat pe mai multe sisteme de operare, de obicei este nevoie de câte un programator pentru fiecare platformă în funcție de volumul de muncă, termene limită și alți factori.

Din punct de vedere al creativității, dezvoltatorul are frâu liber fiind limitat doar de resursele dispozitivului pe care aplicația va ruleze.

Mai jos puteți observa câteva elemente ale aplicațiilor native găsite pe cele mai folosite sisteme de operare mobile.

Figura - 1.0 Android Action Bar cu listă de selecție activă
Figura - 1.1 iOS 7 Selector pentru dată

Părți pozitive

Dezvoltarea aplicațiilor native poate aduce următoarele beneficii celor care le dezvoltă:

Aplicațiile native pot aduce utilizatori noi în timp ce-i păstrează pe cei care deja le folosesc. Majoritatea brand-urilor mari din lumea aplicațiilor sociale (facebook, twitter, linkedin, etc.) și-au dat seama de puterea aplicațiilor native de a atrage utilizatori și au ales să meargă pe această nișă.

Părți negative

Ca orice lucru, aplicațiile native au și părți negative care pot pune pe gânduri un starter. Părțile negative sunt următoarele:

Aplicații hibride

Aplicațiile mobile hibride sunt aplicații care de regulă sunt dezvoltate folosind tehnologii WEB (JavaScript, HTML, CSS). La ora actuală aplicațiile hibride încep să prindă rădăcini tot mai puternice datorită faptului că multe medii de dezvoltare devin tot mai stabile și oferă acces la tot mai multe funcționalități hardware ale dispozitivelor. În Tabelul 2 puteți urmări câteva dintre cele mai folosite medii de dezvoltare ale aplicațiilor hibrid:

Caracteristici

Aplicațiile hibrid de regulă sunt formate dintr-o componentă nativă de tip webbrowser care poate accesa diferite funcționalități ale platformei pe care rulează (ex. camera video, lista de contacte, etc.). De regulă aplicațiile hibrid au același design grafic pe toate platformele pe care au fost publicate fără să țină cont de ghidul de implementare a interfeței cu utilizatorul a fiecărei platforme pe care rulează aplicația.

Denumire Tehnologii de lucru Platforme suportate Suport pentru limbaj nativ
PhoneGap HTML, JavaScript și CSS iOS
Android
BlackBerry
Windows Phone
Symbian
WebOS
Nu
Appcelerator Titanium HTML, JavaScript iOS
Android
BlackBerry
Windows Phone
Da
Adobe AIR ActionScript, HTML, JavaScript iOS
Android
BlackBerry
Nu
Sencha Touch HTML, JavaScript și CSS iOS
Android
BlackBerry
Windows Phone
Nu

Este de ajuns să scri codul de bază pentru o aplicație, pentru ca ulterior, ca prin magie aplicația să funcționeze pe mai multe platforme. Din această cauză dezvoltatorii de aplicații hibrid au mai mult timp pentru idei noi sau dezvoltarea unei noi aplicații.

Datorită faptului că majoritatea uneltelor de dezvoltare folosesc tehnologiile WEB pentru implementarea aplicației, găsirea unui programator pentru a duce la bun sfârșit o aplicație hibridă pentru dispozitive mobile, este un lucru mai puțin stresant. Volumul de lucru pe WEB a făcut ca tot mai mulți programatori să învețe tehnologii precum JavaScript, HTML și CSS. Acest lucru duce la o tranziție relativ ușoară către lumea programării de aplicații hibrid pentru dispozitive mobile.

Părți pozitive

Părți negative

Categorie Nativ Hibrid
Cunoștințe necesare dezvoltării aplicațiilor Objective-C
Cocoa Touch
Java
Android SDK
C
C++
Android NDK
WindowsPhone Runtime
C# / VB.NET
.NET
HTML
CSS
Javascript
Mediul și șablonul de dezvoltare (Phonegap, Titanium, etc.)
Stocare date Da Da
Acces API platformă Da Da prin intermediul șablonului de dezvoltare
Acces componente hardware Da Da prin intermediul șablonului de dezvoltare
Timp de răspuns la animații Foarte bun în funcție de platformă Bun spre slab în funcție de platformă
Potrivit pentru dezvoltarea jocurilor Da Nu
Timp de dezvoltare Foarte mult Mediu
Exemplu în imagini
Linkedin iOS
Linkedin Android

Comparație

În primul rând aș dori să evidențiez faptul că ambele modalități de dezvoltare a aplicațiilor mobile se distribuie prin piețele de aplicații existente pe platformele mobile (AppStore, GooglePlay, Windows Phone Store, etc.). Din această cauză, ambele vor participa și la verificarea de dinaintea lansării propriu zise în magazinul virtual.

După cum am menționat la părțile pozitive a metodei de dezvoltare nativă, branduri puternice care au publicat aplicații mobile, au trecut la dezvoltarea aplicațiilor native în pași grăbiți și aceasta se întâmplă și în ziua de astăzi (vezi aplicația YouTube de pe Windows Phone Store). Această trecere se datorează faptului că prin dezvoltarea nativă pot scoate tot ce se poate din platforma pe care rulează aplicația și totul la performanțe ridicate. Pe de altă parte trebuie să nu uităm că tot acești giganți au făcut primii pași către lumea mobilă cu aplicații web, urmate de aplicații hibride și abia mai la urmă au trecut la metoda nativă.

În Tabelul 3 puteți observa comparația între cele două metode de dezvoltare pe mai multe categorii, am luat în considerare dezvoltarea pentru iOS, Android și Windows Phone doar.

Concluzie

Ambele modalități de dezvoltare sunt importante și trebuie luate în calcul în momentul în care se vrea să se dezvolte o aplicație pentru dispozitivele mobile. Important este să se decidă dacă aplicația trebuie să fie bogată din punct de vedere al animațiilor, dacă se dorește publicarea aplicației pe mai multe platforme sau cât de mare este bugetul alocat dezvoltării aplicației respective.

Alegeți dezvoltarea nativă a aplicației dacă timpul de dezvoltare și implicit bugetul nu este mic. Această opțiune poate aduce utilizatori fideli pe termen lung și review-uri pozitive. În același timp vă ajută să distribuiți clienților versiuni ale aplicației care poate rula pe cele mai noi versiuni ale sistemelor de operare pe care rulează încă de la lansarea acestora.

Alegeți dezvoltarea hibridă a aplicației dacă timpul de dezvoltare a aplicației si bugetul sunt mici. Această opțiune de dezvoltare se potrivește foarte bine și dacă doriți să experimentați o idee nouă de aplicație. Aplicațiile hibrid sunt foarte bune pentru un startup, acestea vă ajută să acaparați atenție pe mai multe platforme cu un minim de efort și la o calitate corectă.