În Inspirație

Aplicații mobile native vs aplicații compilate

timo_dev

Prima prezentare din cadrul ediției #14 a întâlnirilor TiMo a fost susținută de către Ionuț Ion, reprezentant Three Pillar Global România. Acesta a adus în discuție tematica evenimentului din perspectiva companiei care dorește să îi ofere clientului o  prezentare cât mai cuprinzătoare a diverselor abordări tehnologice posibile, pentru ca împreună să poată decide care este soluția optimă, cea care satisface cel mai bine necesitățile funcționale și de business.

Prezentarea s-a desfășurat după următoarea structură:

  • Așteptările clienților
  • Așteptările programatorilor
  • Abordări posibile
  • Avantaje şi dezavantaje pentru fiecare dintre abordări
  • Principalii jucători de pe piață
  • Concluzii

1. Așteptările clienților

Necesitățile după care se ghidează clienții atunci când trebuie să ia o decizie legată de natura aplicației dorite sunt strâns legate de următoarele noţiuni:

  • Costuri reduse
  • Flexibilitate
  • Mentenanță ușoară
  • Dezvoltare rapidă

2. Aşteptările programatorilor

În schimb, cei responsabili de dezvoltarea aplicaţiilor sunt interesaţi de factori precum:

  • Control complet asupra codului
  • Dezvoltare uşoară
  • Creștere profesională

3. Abordări: Codul nativ și codul hibrid

3.1. Codul nativ

Platforme, limbaje și cadre de lucru:

  • Apple iOS – Objective C, Cocoa Touch
  • Android- Java, Android SDK/ NDK
  • Windows Phone C# – .NET Framework
  • Blackberry-  J2ME/ BB Java NDK

Avantaje:

Există o serie de argumente în favoarea utilizării codului nativ în dezvoltarea de aplicaţii precum:

  • Nivel înalt de performanță
  • Cadru de dezvoltare construit de autorul platformei
  • Debugging “direct”
  • Acces complet la API nativ
  • Reacție rapidă în caz de probleme ce țin de OS/API
  • Comunitate mare de dezvoltatori

Dezavantaje:

Pentru ca balanţa să fie echilibrată, au fost evidenţiate şi o serie de dezavantaje pe care le presupune codul nativ:

  • Efort sporit de implementare a acelorași funcționalități pe platforme diferite
  • Nevoia de a avea developeri specializați pentru fiecare platformă în parte
  • Costuri mai mari
  • Dificultăți de întreţinere a unor versiuni diferite
  • Efort sporit de coordonare a noilor caracteristici
  • Fiecare platformă nouă necesită dezvoltare de la zero

3.2.  Codul hibrid

3.2.1. Codul portabil interpretat

Limbaje și tool-uri:

  • PhoneGap – HTML /JS – iOS, Android, WP7, BB, Bada, Symbian, WebOS
  • Adobe AIR – HTML /JS/Action Script – iOS, Android, BB
  • WebWorks – HTML /JS – Blackberry

Avantaje:

  • Un singur cod de bază pentru toate platformele
  • Costuri scăzute de dezvoltare și întreţinere
  • Focusat pe implementarea logicii de afaceri
  • Gamă largă de framework-uri Javascript
  • Se folosesc abilități și competenţe existente de web development

Dezavantaje:

  • Performanță slabă
  • Acces limitat la caracteristicile și funcționalitățile platformei
  • Proces de debugging mai complex
  • Depinde de o terţă parte
  • Este mereu în urmă cu noile apariţii
  • Lipsesc unele controale UI predefinite, nu e ușor să simulezi controalele pentru fiecare platformă în parte
3.2.2. Codul portabil compilat

Cea de-a  treia abordare presupune folosirea unui cod comun, portabil, dar și a unui compilator, care să știe să interpreteze acest cod comun și care îl poate compila pentru fiecare platformă în parte.

Unelte:

  • Corona – LUA → iOS, Android, Windows Phone
  • Marmelade – C++ → iOS, Android, Bada, Symbian
  • MonoTouch – C#, .NET → iOS, Android
  • MoSync – JavaScript, HTML5 → C++ iOS, Android
  • Verivo (ex-Pyxis Mobile) – iOS, Android, Blackberry
  • Titanium – JavaScript, HTML5 → iOS, Android, Blackberry

Avantaje:

  • Nivel înalt de performanţă
  • Un singur cod de bază pentru toate platformele
  • Procesul de instalare decurge la fel ca şi în cazul aplicaţiilor native

Dezavantaje:

  • Dificultăţi în identificarea originii unui bug
  • Imposibilitatea developerilor de a avea acces la codul nativ generat
  • Depinde de o terţă parte
  • Este mereu în urmă cu noile apariţii
  • Bug-urile care apar în platforma SDK influenţează procesul de dezvoltare

Criterii de evaluare

Când se alege codul nativ?

  • Când aplicația este destul de complexă și necesită acces la resursele sistemului de operare (exemplu: citirea, deschiderea unui fișier, procesarea de imagini etc).
  • Când contează foarte mult performanța.
  • Când un client își dorește ca, de exemplu, aplicația de iPhone să arate ca o aplicație de iPhone iar cea de Android să arate ca una de Android, codul nativ este cea mai bună alegere.

Când se alege codul portabil interpretat?

  • Când vorbim despre o aplicație relativ simplă.
  • Când aplicația nu accesează mulți dintre senzorii device-ului.
  • Când se așteaptă multe feature-uri în viitorul apropiat, cu răspuns rapid.
  • Când avem la dispoziție un buget redus.

Când se alege codul portabil compilat?

  • Când se dorește lansarea simultană pe toate market-urile.
  • Când timpul dedicat dezvoltării este foarte scurt și deadline-ul este critic.
  • Când nu avem programatori specializaţi pentru fiecare platformă în parte.
Citiți aici care au fost temele celorlalte prezentări susținute în cadrul ediției #14 TiMo.
Pentru mai multe informații privind conținutul detaliat al fiecăreia dintre acestea, fiți cu ochii pe secțiunea Ctrl-D Development, unde vor fi postate articole distincte pentru fiecare.

Poze eveniment:

Sursă imagini