App Native vs app web. La vittoria degli ibridi.

Possiamo smettere di lottare in questa tremenda battaglia tra le App Native e le App Web? Anche molte app per dispositivi mobili sono ibridi. Andiamo oltre!

James Long, uno sviluppatore per Mozilla (ed un proponente del web) insiste nell’affermare che le app web non potranno mai competere con lo sviluppo delle app native. Mai. E anche se Long in questa affermazione vuole essere intenzionalmente provocativo, tuttavia potrebbe anche essere nel giusto.
Ed allo stesso tempo è sempre più chiaro ed evidente che questo dibattito non interessa a nessuno.

Forrester insiste che si tratterà di un ritorno al futuro, in cui le app native dominavano nei client server ma le app web sono e restano quelle predominanti. E la storia si ripeterà per la telefonia mobile. Probabilmente.

Ma se la ReactJS di Facebook può fornire una qualsiasi indicazione, allora il futuro non sarà né nativo né web, ma soprattutto ibrido. Ed in realtà questo futuro è già esistente qui ed ora.

Il Web è ‘troppo lento’

Il problema con le app web, come viene sottolineato da Long, è che il il DOM è troppo lento. Il DOM (Document Object Model) è l’API che descrive come programmare l’accesso ad un documento, a una pagina web o ad una app: Long considera che la velocità dei DOM non solo è bassa, ma non sarà mai più veloce. E per quanti invece sostengono che in futuro vi sarà una velocizzazione, Long afferma che queste affermazioni sono basate sul nulla. Non ci sono indicazioni che il DOM sarà mai abbastanza veloce ma se anche lo diventasse, sarebbe comunque anni luce lontano dalla velocità delle piattaforme mobili. Tuttavia, non sono state viste in giro descrizioni tecniche di un plausibile progetto per velocizzare i DOM. E’ come cercare di ottimizzare l’esecuzione di una loop per permettere l’esecuzione di un modello con milioni di poligoni quando invece quello che è realmente necessario è di ridurre il numero di poligoni del modello. Che è quello che fa praticamente React Native, andando completamente oltre i DOM.

Flipboard, ad esempio, sta seguendo questa direzione, come spiegato recentemente in un post di questo blog. La ragione per cui ha dirottato in questa direzione, come spiega l’azienda stessa, è che non si può costruire un scrolling list da 60 frame al secondo utilizzando DOM. Sfacciato, ma probabilmente vero.
John Gruber, invece ha notato che Flipboard più o meno ha costruito le proprie specifiche web app basandosi sugli elementi <canvas> dell’HTML5, rifuggendo completamente sia il DOM che i tradizionali CSS, che si può tradurre in un’aspra critica agli standard DOM/CSS.

L’approccio ibrido

Non stiamo parlando di qualche grande dichiarazione politica che Flipboard o altri stanno facendo. Stiamo parlando semplicemente del realizzare le cose. Ne deriva che l’approccio ibrido allo sviluppo di applicazione risulta il migliore modo per ottenere lo scopo.
Perché la verità è che quando parliamo di app native, stiamo in realtà già parlando di ibride, visto che la maggior parte delle app include almeno qualche codice HTML. Non perché in qualche modo è la cosa più giusta da fare, in senso morale, ma perché rappresenta il modo più corretto in cui lavorano i migliori sviluppatori di app.

Prendiamo Instagram ad esempio.

Instagram non ha fatto nessun rumore sul fatto che la sua cronologia sia visibile sul web: e perché avrebbe dovuto? Gli sviluppatori di Instagram non hanno cercato di combattere una battaglia politica, hanno solo cercato di realizzare una app altamente funzionale. E l’approccio ibrido generalmente aiuta gli sviluppatori.

Mentre l’amministratore delegato di Facebook, Mark Zuckerberg, una volta diventato famoso ha affermato, sbagliando, che l’HTML5 è stato il più grande errore di Facebook, è stato chiaro che per Instagram, che è comunque di proprietà di Facebook, questa notizia non sia arrivata.

Tutto ibrido, tutto il tempo.

La chiave di tutta questa discussione sta nello smettere di fissarsi su come una ap viene sviluppata e focalizzarsi solo su come fare a realizzare ottime app.

Da qui, mentre Nic Raboy canta le lodi e le virtù delle app ibride, si avvicina molto alla verità quando decide di dedicarsi a come le app vengono realizzate al posto di focalizzarsi sul come dello sviluppo. Egli afferma infatti che tutte le sue applicazioni, sia native che ibride, hanno molte recensioni positive e soprattutto, quando qualcuno visita e guarda le diverse app su Google Play, non trova da nessuna parte menzioni circa il come le app sono state realizzate. Si tratta di un elemento molto importante da notare perché molti attaccano gli sviluppatori con l’idea che le applicazioni ibride non funzionano né hanno l’aspetto elegante delle native. Questo semplicemente non è vero. Native o ibride, se lo sviluppatore o il designer non sono all’altezza, la app ne soffrirà in ogni caso.

Quindi, ha ragione ad affermare che le tecnologie web sono semplici da apprendere e che le app ibride hanno costi e tempi maggiori e che è impossibile realizzare delle app ibride altamente performanti: tutte queste cose sono vere. E tuttavia non sono importanti.

Perché quello che cercano gli sviluppatori di app è costruire la migliore app nel minore tempo possibile. E questo, quasi sempre, significa una app ibrida.

Come ha evidenziato Vision Mobile in un recente comunicato, Facebook ha annunciato la sua novità, React Native, che rappresenta uno sguardo su un possibile futuro dove tutte le app native potranno ottenere grandi performances mentre le UI saranno definite più come web app in cui i codici saranno scritti in JavaScript. E tuttavia, ancora, queste app, per quanto tecnicamente avanzate, saranno sempre e comunque sempre delle ibride. Perché è così che le moderne app per dispositivi mobili sono realizzate, anche quando vengono definite native.

Probabilmente React Native cambierà le modalità in cui le app per il mobile web sono realizzate, ma non potrà cambiare il modo in cui vengono sviluppate le app ibride.

Ma questo è fondamentalmente un problema del mercato degli sviluppatori.

Leave a Reply

Your email address will not be published. Required fields are marked *