Come funziona Kotlin? Vi siete mai soffermati su questo specifico linguaggio? In realtà non è da molto che se ne parla con frequenza, e anzi, Kotlin è un linguaggio di programmazione diventato famoso in tempi relativamente recenti: secondo Google Trends, è solo dal 2017 che ha acquisito una certa rilevanza nelle ricerche degli utenti.
Eppure, non è affatto così nuovo: il primo annuncio da parte di Jetbrains risale al 2010. Cos’è successo, allora, nel 2017 o poco prima, che ne ha sancito la popolarità?
Kotlin come funziona il linguaggio di Android e non solo
Un evento che, a oggi, di Kotlin è anche la causa di una delle principali incomprensioni legate al linguaggio: il supporto di Google e la scelta di considerarlo la prima scelta per lo sviluppo Android, a scapito di Java.
Da allora, Kotlin ha visto un’impennata nella popolarità, ovviamente nell’ecosistema Android, ma è anche stato un po’ incasellato come “il linguaggio di Android”: chi vi scrive ha lavorato in Kotlin per anni ed è il maintainer del framework open source di mocking più adottato in Kotlin (https://github.com/mockk/mockk/), e solo per aver scritto “Kotlin” sul CV è stato contattato diverse volte per posizioni da sviluppatore Android, pur non conoscendo assolutamente niente di questo ecosistema.
Chiariamo subito questa cosa una volta per tutte, allora: Kotlin è la prima e, di fatto, l’unica opzione per lo sviluppo Android, ma non è un linguaggio che serve solo per Android, anzi.
Ma quindi, Kotlin come funziona? Ebbene, questo è, più di molti altri, un linguaggio general purpose: non solo è utilizzabile in tutti i contesti in cui si può usare Java, su tutti quindi la programmazione backend, ma si presta anche molto bene per lo sviluppo nativo interamente multipiattaforma, in modo simile a strumenti come Flutter, che permettono di scrivere il codice una volta e compilarlo per piattaforme diverse come Android, iOS e applicazioni Desktop.
Ma non solo: è un eccellente linguaggio per fare data science, che permette un passaggio dallo sviluppo al rilascio in produzione più semplice di Python o R, e permette di compilare il codice anche verso target come WASM e Javascript per lo sviluppo web.
Le principali caratteristiche di Kotlin
Ma quali sono le caratteristiche principali del linguaggio Kotlin, come funziona? È un linguaggio da esperti o è adatto anche agli sviluppatori alle prime armi?
Anzitutto, per via della sua natura JVM-oriented e della sua storia, è un linguaggio che gli sviluppatori Java troveranno molto semplice da imparare: se avete un po’ di esperienza con Java, potete aspettarvi di diventare perfettamente produttivi lavorativamente in Kotlin nel giro di un paio di settimane.
E sinceramente non avete motivi per non farlo, visto che Java e Kotlin sono perfettamente interoperabili: il codice Java può invocare codice Kotlin e viceversa senza alcun problema, e codebase esistenti Java possono integrare parti scritte in Kotlin senza fatica, tanto che è una prassi abbastanza comune in diverse aziende scrivere direttamente in Kotlin le parti nuove di applicazioni Java.
Chi glielo fa fare? Perché non continuare a usare Java che, tutto sommato, fa il suo sporco lavoro da anni?
Kotlin in realtà ha molte feature che ogni sviluppatore Java avrebbe sempre voluto avere, su tutte quella che risolve il famoso “billion dollar mistake”: in Kotlin, infatti, tutte le variabili sono non-nullable di default, e i rischi della temutissima NullPointerException sono enormemente ridotti a compile time, poiché un pezzo di codice che accede a una variabile null viene immediatamente individuato dal compilatore e non durante l’esecuzione.
Ma non è tutto, perché Kotlin ha anche molte caratteristiche, come le data classes, le extension functions e le lambda expressions, che lo rendono fino al 40% più conciso, e quindi più leggibile, di Java: una delle critiche più famose a Java è la sua prolissità e il quantitativo enorme di righe di codice che richiede per i compiti più banali, Kotlin fa l’esatto opposto e permette agli sviluppatori di scrivere solo il codice effettivamente necessario per risolvere i problemi, non il boilerplate.
E non è finita: se avete sviluppato in Java delle applicazioni non banali, saprete sicuramente quanto sia complicato gestire la programmazione asincrona e il multithreading; e se questo è il vostro caso, adorerete le coroutines e gli strumenti che Kotlin offre per la programmazione asincrona, dalle suspend functions a oggetti evoluti come flow e channel.
Perché e quando scegliere Kotlin
Tutto qui? (Si fa per dire) Perché scegliere Kotlin e non uno degli altri linguaggi interoperabili con Java, allora?
Abbiamo già detto di alcuni ambiti di utilizzo, come la data science e la programmazione multipiattaforma, in cui Kotlin è un’opzione nettamente migliore di altri linguaggi basati sulla JVM come Scala, Groovy o Clojure, ma c’è un altro dettaglio che lo rende superiore a questi ultimi: l’adozione.
Quando si parla di uno strumento come un linguaggio di programmazione, avere una massa critica di utenti che lo usino è fondamentale, ma la quantità non è sufficiente: è importante anche avere il supporto di player importanti che facciano in qualche modo da garante della qualità dello strumento – dopotutto, cosa sarebbe un framework come React senza il supporto di Meta?
Bene, in questo senso Kotlin può contare su almeno due autorità di tutto rispetto: anzitutto, come abbiamo già accennato, Google punta fortissimo su Kotlin, ma non dobbiamo dimenticare anche che si tratta di un linguaggio nato in seno a un’azienda, Jetbrains, che come core business produce IDE, per cui il supporto al tooling di Kotlin è assolutamente eccellente e IntelliJ offre un aiuto davvero grosso agli sviluppatori, rendendo l’esperienza di sviluppo estremamente ergonomica e semplice.
Kotlin è un linguaggio di programmazione moderno, conciso e sicuro, sviluppato da JetBrains. È un linguaggio orientato agli oggetti e a tipizzazione statica, e può essere compilato per la macchina virtuale Java (JVM), per il JavaScript e per il Native.
Quindi: Kotlin è un linguaggio estremamente efficiente, in uso in molte aziende, anche piuttosto importanti e che garantisce possibilità di impiego in molti ambiti diversi, da quelli che erano appannaggio di Java e derivati, alle applicazioni mobile alla data science, ma è un linguaggio semplice da imparare? È una buona scelta come primo linguaggio di programmazione, o è meglio orientarsi su scelte apparentemente più semplici, come PHP o Javascript?
La risposta, come a tutte le domande importanti, è ovviamente “dipende”, ma ci sentiamo di consigliarlo anche come primo linguaggio da imparare, per diversi motivi.
In primis, è un linguaggio fortemente tipizzato, e come tale “costringe” a imparare a pensare ai dati che le nostre funzioni e le nostre classi si scambiano e riduce di molto la possibilità di bug; poi, come abbiamo già detto, è un linguaggio molto conciso, per cui permette di concentrarsi sui concetti davvero importanti del codice che stiamo scrivendo anziché perdere tempo con del boilerplate; infine, ha una libreria standard molto ben progettata, coerente e completa, che dà modo a sviluppatori non molto esperti di entrare in contatto con software scritto molto bene.
Insomma, qualunque tipo di esperienza abbiate e qualunque ambito dello sviluppo software vi interessi, Kotlin merita assolutamente che gli dedichiate un po’ di tempo: se poi voleste contribuire a MockK, il framework di mocking open source di cui sono il maintainer, di certo fareste cosa buona.