L'approccio alla programmazione Android appare del tutto agevole soprattutto grazie a due aspetti fondamentali già evidenziati: strumenti del tutto gratuiti e semplicità nell'apprestamento dell'ambiente di sviluppo. Ed in effetti è così. A volte però l'appassionato di tecnologia che si avvicina a questo mondo rischia di scoraggiarsi facilmente.
Ammesso che si posseggano le skill necessarie del linguaggio Java o
Kotlin, ci si accorge presto che un'infarinatura di sintassi spesso non è sufficiente. Per sfruttare degnamente le possibilità offerte dal framework è necessario essere dei buoni programmatori, consci delle principali problematiche da tenere sott'occhio in uno sviluppo professionale: ottimizzazione delle prestazioni, salvaguardia delle risorse a disposizione e via dicendo.
Inoltre, questo tipo di approccio alla programmaazione (detto nativo) è dipendente dal
sistema operativo specifico. Pertanto le app sviluppate in questo modo non sono né distribuibili su
sistemi Apple o alternativi, né il loro codice può essere riutilizzato su altre piattaforme. Ciò può rappresentare un
limite sia per i singoli professionisti sia per le aziende che finanziano i progetti.
Le alternative più in voga al momento sono le tecnologie cross-platform con
cui si possono realizzare applicazioni per diversi sistemi operativi, partendo da un'unica base di codice.
Flutter è una piattaforma che
risponde bene a tali esigenze permettendo di creare app per Android e iOS, con un
singolo progetto in linguaggio Dart, riuscendo
a garantire prestazioni abbastanza paragonabili ai progetti nativi. Altra alternativa
molto interessante è React Native, framework di Facebook basato su React anch'esso dedicato alla programmazione mobile multipiattaforma.
Tutte queste soluzioni cross-platform non sono che il culmine (attuale) dell'evoluzione di un lungo percorso che negli ultimi anni ha
cercato di offrire metodologie alternative alla programmazione puramente nativa. Ne sono apparse molte, con approcci del tutto differenti
tra loro. Ecco alcune delle più significative e tuttora diffuse:
- un'intera generazione di soluzioni scaturisce dal know-how nello sviluppo per Internet: pensiamo ad Apache Cordova, Steroids e Ionic, solo per citare alcune delle numerose possibilità basate sui nuovi standard. In effetti: se CSS ha reso il Web elegante, Javascript gli ha dato vitalità e HTML5 l'ha rivoluzionato, perché non riproporre questi strumenti nello sviluppo mobile? Cordova è la versione open source del progetto PhoneGap e serve a realizzare le cosiddette app ibride con un'interfaccia realizzata in modalità web ma in grado di interfacciarsi con il sistema operativo mobile mediante un vasto numero di API. Steroids nasce per superare alcuni limiti riscontrati in PhoneGap ma senza “reinventare la ruota”, si basa infatti su Cordova ma approfondisce il legame con lo strato nativo. Ionic ha proposto invece un'innovativa architettura basata su AngularJS;
- Corona SDK è un ambiente particolarmente versato alla gestione dell'interazione come per i videogiochi. Creato dai Corona Labs non necessità di alcuna conoscenza del linguaggio Java e propone come alternativa lo scripting in LUA, un formalismo dall'approccio molto semplice che permette di personalizzare maggiormente le proprie applicazioni;
- Unity è il più diffuso motore per videogiochi del mondo. Il primato che gli spetta è pienamente meritato in quanto combina editor visuale di altissimo livello ma anche programmazione in tecnologie ad oggetti avanzate come C# oltre che gestione di altri aspetti fondamentali per i videogiochi come grafica, animazione e fisica;
- AppInventor è probabilmente la possibilità più abbordabile per l'appassionato di tecnologia a digiuno di programmazione e che desidera qualche risultato piuttosto rapido. E' stato creato dai Google Labs come strumento per la rapida modellazione di app Android ed è stato successivamente ceduto al prestigioso M.I.T.. Intuitività e semplicità le sue chiavi di lettura principali;
- esistono poi molte altre soluzioni multi-piattaforma, e tra queste Xamarin ha calamitato l'attenzione di tanti professionisti per il forte legame con il mondo Microsoft.
Nativo sì, nativo no. Qual è l'approccio migliore? Sicuramente entrambi hanno i loro pro e contro. Mentre da un lato il nativo offre la possibilità di una gestione totale del dispositivo senza la paura di trovare limiti, d'altra parte richiede spesso una programmazione molto professionale e si concentra esclusivamente su una piattaforma impedendo un'agile riciclo dei propri sforzi su altri mercati del mobile.
Il non-nativo – anche se è impossibile generalizzare data la diversità degli ambienti appena citati – offre vantaggi vari, ascrivibili a volte ad una minore necessità di programmare e molto spesso alla possibilità di creare applicazioni cross-platform distribuibili su sistemi operativi diversi.