Sunt unele situații în care ai de ales între nebunia de a dezvolta o aplicație de 100mb făcută de un om vs nebunia de a plăti doi-trei programatori pentru a dezvolta două-trei apps de câte 2mb. Și aici excludem partea de mentenanță.
Dacă ai o aplicație utilitară, ce nu folosește efecte grafice, cel mai probabil nu vei simti vreo diferență de performanță între ObjC, Swift sau JS
Am pus un raspuns rapid la https://www.decosoftware.com/ care e facut pe mac os x pentru iOS. Daca ma uit la orice joc, orice aplicatie serioasa pe iOS e vorba de Swift sau Objective-C, pe android C++ la orice legat de jocuri sau unde conteaza eficienta. Swift e comparabil cu C/C++ dar e mai frumusel.
React native e fain pentru user interface, dar e imposibil sa faci ceva serios cu JS pe un procesor ARM fiindca poti praji un ou pe telefon cum folosesti putin procesorul, daca faci client de streaming date intre server si clienti cu react sau o aplicatie noua din api-uri existente E FOARTE BUN. Peste 60% din aplicatii se pot realiza cu react native fara sa fie mari probleme de performanta. E twitter bootstrap pentru mobile/cross platform development.
Pentru restul chiar si cei de la Google/Facebook se gandesc/s-au apucat sa schimbe Java pe Swift in Android. Prima data probabil o sa avem un Swift pe JVM si un cross-compiler nativ pe toate procesoarele suportate de android. Sa nu uitam ca TypeScript a fost adoptat de echipa AngularJS…
Trebui să fii un pic sărit de pe fix să iei în considerare JS pentru a scrie un joc de mobil complex. Un flappy sau un 2048 merg scrise în js. Fruit ninja sau Asphalt… poate că nu. Deci putem să excludem liniștiți genul ăsta de aplicații;
Dacă excludem aplicațiile cu grafică serioasă, rămân restul de aplicații, pentru care nu ai vreun motiv serios să NU îl scrii cu JS;
Google vrea să renunțe la Java din cauza problemelor cu Oracle, nu pentru că ar fi X sau Y mai bun
Acum câțiva ani, Facebook a declarat sus si tare că HTML/JS nu e o idee bună pentru mobil. Doar că, niște băieți mai deștepți decât ei, au făcut asta:
Inclusiv eu, care sunt mare fanboy al limbajelor compilate (ca şi @isti37 probabil), nu pot decât (cu ego rănit) să admit validitatea afirmaţiei de mai sus. deşi - tră’ să recunosc - cu greu m-a răzbit această revelaţie.
Legat de aspectul performanţei, m-a iluminato prezentare pe tema progresului din domeniul process virtual machines-urilor, respectiv a language engine-urilor.
Progresul poate fi remarcat în slide-urile 66-97, în care sunt expuse construcţia şi “fiziologia” (alături de concluzii legate de performanţă) a engine-urilor consacrate: V8, JavaScriptCore etc.
Totuşi cred că mai exisţă un caz suplimentar când nu ai vrea să foloseşti JS şi anume când intenţionezi să faci variante dedicate fiecărui OS şi implicit vei folosi toate facilităţile expuse de acesta.
Deşi există mai multe framework-uri à la Cordova, nu prea îmi vine să cred că-ţi permite vreunul să accesezi toate facilităţile expuse… posibil să se fi schimbat situaţia între timp, iar eu să nu fiu la curent (nu neg).
Eu am făcut câteva apps în Cordova, în care am folosit:
locația
camera
media library (sau cum s-o numi)
giroscopul
butoanele native din android (back, menu);
storage
etc.
Ultima aplicație am dezvoltat-o în browser și, la sfârșit, am compilat-o pentru iOS și Android fără nici un fel de probleme. Am compilat-o de probă pentru Win Phone și în afară de ceva fonturi a mers și acolo făra probleme.
Adevărul e că nu era o aplicație extrem de complexă: un soi de catalog de produse, posibilitatea de a adăuga produse custom, chat real time, sugestii în funcție de locație șamd.
Acum încearcă să justifici plata a doi-trei programatori pentru asta.