Home
App cross-platform e prossimi colonizzatori

11 Giugno 2014

App cross-platform e prossimi colonizzatori

di

È stato gettato il ponte tra C/C++ e JavaScript e con esso la possibilità di avere webapp veloci quasi quanto codice nativo.

Hai giocato spesso col LEGO e ne possiedi una bella base color blu. Conosci i manuali e linee guida per costruire il tanto richiesto vascello fantasma dei pirati nei minimi dettagli, con cannoni retrattili, àncora e timone.
Comprendi appieno complessità e criticità del progetto e per questo ti senti confidente nella preparazione dell’opera, quindi ordini i pezzi. Ti consegnano una scatola di meccano e della plastilina.
Una, nessuna e centomila app. Anche loro non si rapportano in modo ordinato con la propria natura. Infatti mentre si generalizza pensando che dietro alla costruzione ci sia un certo tipo specifico di competenze, la realtà ci propone uno scenario completamente diverso.
Abbiamo a che fare con diversi sistemi operativi ovvero diverse aziende (rivali) e relativi meccanismi di distribuzione. E mentre loro si fan la guerra, noi artigiani delle app dobbiamo tenerci aggiornati e valutare la spesa necessaria per sbarcare o meno su una o l’altra isola commerciale.
I punti di contatto tra le diverse realtà devono essere previsti by design per poterci, insomma, risparmiare. Ecco cosa possiamo considerare, con i dovuti accorgimenti, come modulo cross-platform per una applicazione:

  1. servizi cloud propri o terzi, se aperti alla piattaforma;
  2. servizi disponibili localmente su – quasi – tutte le piattaforme, come database e/o storage file;
  3. librerie compatibili in C/C++, inclusi interpreti per linguaggi di scripting;
  4. oggetti OpenGL (ES) e relativo universo;
  5. oggetti HTML5 e relativo universo.

Classificando per tipologia di app possiamo quindi generalizzare in:

  • native: condividono il punto 2, opzionalmente 1,3,5, richiedono logiche ad hoc per piattaforma;
  • giochi: condividono i punti 4,3,2, opzionalmente 1,5, richiedono logiche ad hoc per hardware;
  • webapp: condividono il punto 5 più opzionalmente i punti 1,2,3 e vogliono un browser compatibile.

Mentre dall’esterno le app sembrano distinguersi per la propria natura, sotto il cofano il confine è sfumato a seconda di valvole, pistoni e bulloni.

Cambiamenti in officina

Ma due novità stanno lavorando in piena sinergia per sconquassare dalle fondamenta quanto stabilito finora; emscripten ed asm.js. La prima è un’invenzione nata nel 2012 che si occupa di tradurre in JavaScript – eseguibile dal browser – del bytecode scritto in LLVM. La seconda invenzione è un linguaggio di programmazione che consiste in un subset del JavaScript che lavora per colmare il gap prestazionale tra il codice nativo ed il codice di scripting eseguito nel browser per mezzo di compilazione AOT (ahead-of-time). Vuol dire che teoricamente abbiamo modo di convertire codice C/C++/Objective-C in codice JavaScript e, facendo leva sulle ottimizzazioni consentite da asm.js, eseguirlo nel browser con prestazioni vicine a quelle del codice nativo.

emscripten

Emscripten, anello di congiunzione tra C/C++ e JavaScript.


È solo teoria oppure funziona? Funziona, funziona eccome. Aggiungiamo al calderone WebGL, l’estensione OpenGL per il web, e la Numero Uno è già a portata di mano:ecco una demo dell’Unreal Engine 4 funzionare all’interno di Firefox senza bisogno di alcun plugin. Funziona anche per giochi meno impegnativi graficamente come Me & My Shadow, cui si riferisce l’immagine di apertura.
Questa tecnologia non è ancora dato frutti nel mondo mobile, ma ha assolutamente piantato le proprie radici. Infatti l’ultima versione dei principali browser mobile consente di eseguire applicazioni WebGL. Se avete la fortuna di possedere un dispositivo capace, provate voi stessi.
La galassia delle webapp e quella del gaming triple-A (per il settore) si avvicinano, e le previsioni dal mondo desktop le danno, inevitabilmente, in collisione. Cosa accadrà ai diversi store non appena si avrà modo di bypassare in parte la distribuzione ufficiale?
Considerando che le il gap tra webapp e app native è, per sua natura, meno imponente, potrebbe non essere errato pensare alla webapp come al futuro de facto delle produzioni cross-platform. Ci avreste mai scommesso?

Iscriviti alla newsletter

Novità, promozioni e approfondimenti per imparare sempre qualcosa di nuovo

Gli argomenti che mi interessano:
Iscrivendomi dichiaro di aver preso visione dell’Informativa fornita ai sensi dell'art. 13 e 14 del Regolamento Europeo EU 679/2016.