Le tecnologie per le Mobile App

Le app per telefono, cosiddette app mobile, sono ormai diventate parte integrante della nostra vita, sia professionale che personale. Ma quante tecnologie esistono per realizzarle e quali sono vantaggi e svantaggi dell’una e dell’altra?

Nativa

E’ la prima tecnologia utilizzata per creare app mobile.Le app native sono applicazioni software progettate e sviluppate per funzionare su un sistema operativo specifico, come iOS o Android. La principale caratteristica distintiva delle app native è la loro adattabilità e ottimizzazione per sfruttare appieno le funzionalità e le risorse della piattaforma di destinazione.

Le app native sono costruite utilizzando linguaggi di programmazione e framework dedicati a ciascuna piattaforma. Ad esempio, per lo sviluppo di app native iOS si utilizza principalmente Swift o Objective-C, mentre per le app native Android si utilizza Java o il suo fratellino minore Kotlin.

Vantaggi

prestazioni ottimizzate, un’esperienza utente più fluida e l’accesso completo alle funzionalità hardware e software specifiche del dispositivo, quali la fotocamera o la rubrica dei contatti. Le app native possono sfruttare al meglio le ultime innovazioni delle piattaforme, ovvero le SDK (Software Developmet Kit) offrendo agli utenti un’interazione più intuitiva e reattiva e agli sviluppatori strumenti sempre più raffinati ed aggiornati.

Svantaggi

Le app native scomodando linguaggi come Java o Swift sono decisamente più complesse da scrivere e realizzare, in ordine di tempo necessario allo sviluppo, di competenze richieste. Questo si traduce in costo decisamente elevato per la realizzazione di queste app.

Le app native sono realizzate esplicitamente solo per la piattaforma scelta. Se scrivo Java/Android sarà ottimizzata e girerà solo su Android. Su Apple dovrei riscrivere da capo in Swift o Object C. Situazione spiacevole se la app deve raggiungere un mercato ampio di piattaforme.

Qualche piccolo passo in avanti è stato fatto da JetBrains, la casa dell’omonimo IDE IntelliJ, che ha sviluppato Kotlin con compatibilità a Java, per rendere più semplice la scrittura di software Java e rendere persino cross-platform le applicazioni. Kotlin è interessante come linguaggio con un approccio moderno e simile al Python ma, nonostante questo, non ha trovato il successo sperato vista la diffusione e la storia di Java che lo fa rimanere linguaggio legacy per le applicazioni in circolazione.

Ibrida

Le app mobile ibride sono applicazioni che combinano elementi delle app native e delle app web. Sono sviluppate utilizzando tecnologie web standard come HTML, CSS e JavaScript, qualcuna anche JQuery, ma vengono impacchettate e distribuite come app native per sfruttare le funzionalità specifiche delle piattaforme mobili.

Ci sono diverse approcci per sviluppare app ibride, e uno degli strumenti più noti per questo scopo è Apache Cordova (noto anche come PhoneGap, progetto ora defunto). Esistono anche librerie realizzate su misura con widget pensati per il mobile: vedi Onsen UI e Ionic e il defunto JQuery Mobile. tutti da riconvertire poi con il solito Cordova. Questi framework consentono agli sviluppatori di utilizzare le loro competenze nel web development per creare app che possono essere eseguite su diverse piattaforme, come iOS e Android.

Vantaggi

Le app ibride hanno dalla loro parte la facilità di sviluppo e la possibilità di gestire il codice sorgente su piattaforme multiple con tecnologie e linguaggi semplici e che richiedono relative competenze. Queste app sono quindi veloci e relativamente economiche da sviluppare.

Svantaggi

HTML e CSS, seppur supportate da JavaScript non possono ritenersi linguaggi di programmazione backend e non riescono ad accedere alle risorse hardware del telefono come fanno le app native. Dovrebbero essere supportate in modo un po’ artificioso da librerie esterne che integrano tale capacità. Scomodo e pur sempre non performante come l’accesso delle SDK delle app native. Le prestazioni di queste app, in generale, saranno scadenti almeno rispetto alle soluzioni native.

Ibrida / Nativa

Gli dedichiamo un capoverso a parte ma vengono annoverate tra le app Ibride. Sono le app basate su framework più elaborati del semplice html/css ma con linguaggi più snelli del Java o Swift. Parliamo di due framework in particolare che hanno assorbito gran parte del mercato Flutter e React Native. Il primo è scritto in Dart ed è sponsorizzato da Google, il secondo in JavaScript e alle sue spalle c’è Facebook, promotore del cross-platform per le sue note app dei social Facebook appunto e Meta. Una menzione anche NativeScript sempre in JavaScript.

Ad aprire a questo mondo è stato React Native che sembrava avesse le carte in regola per dominare la scena ma Flutter è rapidamente asceso nei consensi del mercato/sviluppatori rosicchiando importanti quote di mercato. La stessa Google e comunità ha decisamente accelerato sugli aggiornamenti sia del Framework Flutter sia del linguaggio Dart.

Vantaggi

La facilità di sviluppo, la possibilità di accedere alle funzionalità hardware dei dispositivi, la riutilizzabilità del codice sotto forma di componenti hanno reso questa tecnologia la leader del mercato. Questo approccio è vincente in molti aspetti: costi e tempi di sviluppo buoni, curva di apprendimento relativamente semplice, accesso nativo, portabilità cross-platform, personalizzazioni anche spettacolari ed accattivanti.

Svantaggi

Non ce ne sono molti in realtà. L’unico sono le performance che sono ancora a vantaggio delle app native ma non sono così indietro da far gridare la resa.

Code Less

La traduzione è semplice “senza codice”. Non sono framework o librerie ma veri e propri tool online che permettono la creazione di app con pochi click su interfacce grafiche preconfezionate per assemblare il tuo software con semplici copia ed incolla. Verrebbe da gridare al miracolo. Non è così semplice. Se prendiamo come esempio Mit App Inventor, primo e più famoso tool in questo senso ci renderemo conto di come le funzionalità non siano tantissime, la possibilità di personalizzazione scarsa. Il tool è decisamente interessante a livello didattico o per creare dei bozzetti magari di app ma scadente dal punto di vista professionale.

La vera svolta sembrerebbe essere il recente FlutterFlow. Tool che combina le potenzialità in ascesa di Flutter ma con un tool punta e clicca semplice e versatile. Con i diversi piani di abbonamento Pro ed Educational è possibile scaricare il codice sorgente Flutter per chi volesse personalizzarlo, il file APK ed ottenere numerose personalizzazioni con una quantità di widget ed elementi UI/UX di assoluta qualità e versatilità, possibilità di intgrare un database FireBase e altre API. FlutterFLow rappresenta un ottimo tool non solo per avere dei software bozza in pochi minuti, ma anche per creare dei software professionali a tutti gli effetti a patto di non avere richieste dei clienti che non possono essere realizzate con i click del tool. Probabilmente per app vetrina è uno strumento indovinato.

C’è un tool analogo a Flutteflow ma libero e del tutto gratuito: FlutterStudio ma è embrionale e con poche funzionalità. Alternative note sono AppyPye, Bubble, Adalo tutte con interessanti quote di mercato.

Ultima modifica 22 Febbraio 2024