Il mondo dello sviluppo software sta puntando con sempre maggiori energie sulle applicazioni Web e sul Cloud, soprattutto per il settore consumer. Inoltre progetti come Docker hanno rivoluzione le modalità per la distribuzione delle applicazioni native, rendendole disponibili per tutti gli ambienti compatibili con esso o con altri sistemi di container. Ma quali sono i vantaggi delle applicazioni native rispetto alle Web App?
Il concetto di Web App si è evoluto notevolmente portando alla definizione delle Progressive Web App. Buona parte delle applicazioni che usiamo quotidianamente sono Web Application, programmi e servizi che usiamo direttamente via browser.
Grazie a tecnologie come HTML5, CSS3 e JavaScript, tali applicazioni sono eseguibili su qualsiasi device. Non è però detto che esse vengano sempre integrate alla perfezione con il sistema in cui vengono utilizzate. Le Progressive Web App si pongono proprio tale obbiettivo: adattarsi al meglio con la piattaforma corrente, in modo da garantire una user experience simile a quella delle applicazioni native.
Le Progressive Web App sono una sorta di ibrido tra le normali pagine Web e le applicazioni mobili, combinano le feature presenti nei moderni browser con i vantaggi dell’utilizzo in mobilità. Appena avviate si comportano come dei normali siti Web e, progressivamente, assumono le caratteristiche di un’applicazione nativa, integrandosi col sistema.
Le Progressive Web App hanno la caratteristica di essere molto affidabili visto che vengono caricate velocemente e sono meno soggette alle connessioni instabili. Sviluppare una Progressive Web App porta dunque diversi benefici che una normale applicazione Web, di base, non garantirebbe.
Negli anni sono nati diversi framework dedicati proprio alla creazione delle Progressive Web App, come ad esempio AMP (Accelerated Mobile Pages), Angular, React e Polymer. Tali applicazioni presentano però alcuni svantaggi rispetto ai software nativi, infatti tendono a consumare più energia, offrono in certi casi uno scarso supporto alle funzionalità hardware dei device e spesso necessitano di una connessione ad un server per sfruttare al 100% le loro funzionalità.
Inoltre, non tutti i sistemi supportano alla perfezione le Progressive Web App, ad esempio le notifiche push delle PWA sono supportate da Android ma non ancora da iOS.
Le applicazioni native invece non sfruttano standard Web ma sono realizzate tramite i linguaggi di riferimento delle piattaforme su cui vengono sviluppate come Java, C, Python, .Net e Go.
Solitamente le applicazioni native vengono pensante appositamente per una piattaforma o per una specifica configurazione hardware. Si adattano perfettamente con il sistema per cui vengono create ma, spesso, una volta ultimate sono difficili da portare su altre piattaforme e rimangono ancorate al loro ecosistema.
Tuttavia, potendo contare su un'integrazione molto profonda, possono sfruttare le risorse hardware potendo garantire performance migliori e consumi ottimizzati. Inoltre, non essendo dipendenti da servizi Web, funzionano perfettamente anche senza una connessione alla Rete. Di riflesso però richiedono più spazio per essere eseguite e spesso devono essere configurate ed installate manualmente.
Scegliere tra applicazioni native e Progressive Web App può essere difficile ma di base dipende molto dall'obiettivo del progetto.
Se il team non è interessato ad una distribuzione del proprio prodotto su più sistemi e vuole sfruttare al massimo le risorse di una specifica piattaforma, allora è necessario puntare verso un'applicazione nativa. Se invece si cerca di raggiungere una vasta platea di utenti sparsi su più piattaforme ed ecosistemi, allora le Web App sono l'ideale.
In linea di massima bisogna considerare che le Progressive Web App sono:
- facilmente distribuibili;
- il loro sviluppo richiede un budget più basso rispetto alla controparte nativa;
- il tempo di build dell'applicazione è quasi zero;
- possono sfruttare il Search engine indexing dei motori di ricerca;
- nascono multipiattaforma.
Mentre le applicazioni native:
- necessitano di essere pubblicate su un app store per essere distribuite facilmente;
- offrono performance migliori se ben ottimizzate;
- dipendono quasi completamente dal device o dalla piattaforma di riferimento;
- necessitano di un lavoro dedicato per essere integrate con servizi e applicazioni di terze parti.
Via Hackernoon