a

Help your business grow by creating your next online presentation with Cevian, a business virtuoso.

Recent Posts

Quick business execution 00 875 665 874 88 cevian@select.com
Back to top

Kotlin Multiplatform Mobile – Cos’è e perchè

  /  Mobile   /  Kotlin Multiplatform Mobile – Cos’è e perchè

Il vantaggio di usare
Kotlin Multiplatform Mobile.

header_blog_kotlin

Kotlin Multiplatform Mobile – Cos’è e perchè

Se stai leggendo questo articolo è perché probabilmente conosci o sei interessato almeno ad una delle parole chiave presenti nel titolo. Per spiegare cos’è Kotlin Multiplatform Mobile (KMM), basta guardare al significato ogni parola che ne compone il nome:

  • Kotlin (da wikipedia): è un linguaggio di programmazione sviluppato da JetBrains, strutturato per interoperare con Java Runtime Environment come target principale, il che garantisce il funzionamento delle applicazioni in ogni ambiente che accetti la JVM, ivi compreso Android, ma il compilatore è in grado anche di emettere codice JavaScript. È inoltre presente la possibilità di compilare Kotlin direttamente in linguaggio macchina tramite il compilatore Kotlin per l’ambiente di riferimento.
  • Multiplatform: in sé significa supportare più piattaforme. In questo caso è strettamente legato alla parola successiva.
  • Mobile: i sistemi operativi nativi principali in ambito App per smartphone. Nello specifico quindi Android e iOS

Unendo i concetti la definizione ora è intuitiva: Kotlin Multiplatform Mobile è un SDK creato per semplificare lo sviluppo multipiattaforma di App mobile, utilizzando Kotlin come linguaggio di riferimento.

Perché Kotlin Multiplatform Mobile?

Ok, ma che differenza c’è allora rispetto ai già esistenti Flutter, React Native, etc., perché dovrei imparare Kotlin e KMM? Guardiamo meglio:

“Il leader del progetto, lo sviluppatore russo Andrey Breslav, ha affermato che Kotlin è stato progettato per essere pienamente operativo con l’ambiente Java e tutto il suo enorme ecosistema, superando però le limitazioni e le criticità del linguaggio Java stesso. In questo modo non si sarebbe perso il background culturale esistente favorendo la migrazione al nuovo strumento. Tra le caratteristiche distintive ricercate, la capacità di evitare alcune classi di errore, come gli accessi a puntatori nulli.”

“Il linguaggio Kotlin è stato adottato e integrato nell’ambiente di sviluppo Android Studio a partire dalla versione 3.0. Kotlin introduce tutti i vantaggi di un moderno linguaggio di programmazione senza introdurre nessuna nuova restrizione. È totalmente compatibile con JDK 6, fornendo delle prestazioni pari, e in alcuni casi superiori a Java. Viene garantita l’interoperabilità con Java al 100%. Il passaggio da Java a Kotlin per un programmatore è reso molto semplice per l’affinità dei due linguaggi e degli strumenti di conversione resi disponibili.”

“Dal 7 maggio 2019, Kotlin è il linguaggio consigliato da Google per lo sviluppo di applicazioni Android. Appare infatti come prima opzione nell’IDE Android Studio.”

Wikipedia

E questa è una gran bella differenza rispetto a tutti gli altri sdk di sviluppo multipiattaforma: non c’è un nuovo linguaggio on-top a quelli nativi da imparare per sviluppare codice condiviso tra Android e iOS, bensì si tratta di estendere l’uso di Kotlin che gli sviluppatori Android conoscono già molto bene anche ad iOS.

La cosa si fa interessante, ma cos’ha di veramente unico rispetto agli altri SDK?

KMM a confronto

Di seguito, direttamente da kotlinlang.org, una tabella riassuntiva che confronta Kotlin Multiplatform Mobile agli altri framework multipiattaforma:

KMM comparison

KMM è quello che combina meglio i benefici offerti dalla condivisione del codice cross-platform: consente l’uso di tutte le peculiarità native di Android e iOS a differenza degli altri dove le limitazioni sono più o meno stringenti, ma comunque ci sono. Gli utenti Android e iOS avranno esattamente l’esperienza che desiderano dai corrispettivi sistemi operativi, come se l’app fosse sviluppata nativamente.

Si può facilmente convertire un app Android già esistente e farla funzionare su iOS. Inoltre, la sintassi di Kotlin segue gli stessi concetti usati già da sviluppatori iOS, mantenendo bassa la curva di apprendimento anche per loro.

Cosa offre realmente?

Il vantaggio di usare Kotlin non è la mera sintassi evoluta ma mette a disposizione tool e peculiarità già offerte in Android, estese anche ad iOS. Vediamone alcune:

  • Coroutines: per semplicità, possiamo definirle come dei thread in versione “light” che semplificano di molto la scrittura di codice asincrono, scenario molto comune in ambito mobile dove spesso c’è la necessità di eseguire operazioni in background senza bloccare la UI, in modo che l’utente possa continuare tranquillamente ad utilizzare l’app senza interruzioni.
  • Flows: Un flow è uno stream di più valori, restituiti asincronicamente. Strettamente legati alle coroutines, un flow consiste in un produttore e un consumatore dove, come suggerito dal nome, il produttore emette valori mentre il consumatore li riceve. In altre parole, se avete già sentito parlare di observable, Flow è l’observable principale di Kotlin, con i propri operatori e strettamente legato e interoperabile con le coroutines.
  • Ktor: un framework per implementare comunicazioni network client-server. Scritto in kotlin, sfrutta le coroutines e permette appunto di essere utilizzato su più piattaforme, senza nessun vincolo. Nel caso di Kotlin Multiplatform Mobile, si può utilizzare la sua componente client: Ktor Http Client
  • SQLDelight: Come suggerito dal nome, è utilizzato come storage database sulle varie piattaforme, ognuna tramite il driver specifico disponibile in base al sistema operativo target.

È bene precisare che ad oggi Kotlin Multiplatform Mobile è ancora in versione Alpha, ma come suggerito sul sito ufficiale sono già molte le big che utilizzano le soluzioni proposte da questo sdk. A mio avviso il grado di maturità dell’sdk è tale da poterne già valutare l’utilizzo, sebbene a volte ci si imbatte in strani comportamenti in alcuni scenari particolari che capita di incontrare durante gli sviluppi.

Ad ogni modo, l’unico modo per rendersi conto di quanto effettivamente sia il livello di maturità di questa tecnologia, è sporcarcisi le mani. Basta chiacchiere quindi, il prossimo articolo mostrerà tutte le peculiarità di Kotlin e di KMM in veste pratica. Stay tuned!