Quando si pensa allo sviluppo di Android, è probabile che venga immediatamente in mente un linguaggio di programmazione: Java.
Mentre è vero che la maggior parte delle app Android sono scritte in Java, quando si tratta di sviluppo Android, Java non è il tuo solo opzione.
Puoi scrivere app Android in qualsiasi linguaggio che possa essere compilato ed eseguito su Java Virtual Machine (JVM), e gli utenti finali non ne saranno più saggi. E un linguaggio di programmazione compatibile con JVM che ha catturato l'attenzione della comunità Android è Kotlin, un linguaggio di programmazione tipizzato staticamente da JetBrains.
Se hai sentito cose positive su Kotlin e sei interessato a provarlo tu stesso, allora sei nel posto giusto. In questa serie in tre parti, condividerò tutto ciò che devi sapere per iniziare a utilizzare Kotlin per lo sviluppo Android.
In questa prima puntata, vedrò perché tu, come sviluppatore Android, potresti voler prendere in considerazione l'idea di passare da Java in primo luogo, quindi esaminerò i pro e i contro della selezione di Kotlin come sostituto Java. Alla fine di questo articolo, avrai una solida conoscenza di esattamente ciò che Kotlin ha da offrire e saprai se è giusto per te.
Nella seconda parte, vedremo come configurare l'installazione di Android Studio per supportare Kotlin e creare una semplice app Android interamente scritta in Kotlin. Con queste basi in atto, nella terza puntata vedremo come potenziare lo sviluppo di Android, utilizzando alcune funzionalità più avanzate del linguaggio Kotlin.
Mentre Java è uno dei linguaggi di programmazione più diffusi al mondo ed è praticamente la lingua ufficiale dello sviluppo di Android, ci sono molte ragioni per cui Java potrebbe non sempre essere l'opzione migliore per i tuoi progetti Android.
Il problema principale è che Java non è un linguaggio moderno e sebbene Java 8 sia stato un enorme passo avanti per la piattaforma, introducendo molte funzionalità che gli sviluppatori stavano aspettando (comprese le funzioni lambda), al momento della stesura di Android supporta solo un sottoinsieme di funzionalità di Java 8. Sembra improbabile che gli sviluppatori Android possano sfruttare appieno i vantaggi di Java 8 in qualsiasi momento, quindi per il prossimo futuro se si desidera utilizzare Java nei propri progetti Android, allora si è praticamente bloccati con Java 7.
Java nel suo complesso ha anche alcuni problemi linguistici abbastanza ben documentati, tra cui interminabili provare
-catturare
blocchi, mancanza di estensibilità, null-non sicurezza (e così via infame NullPointerException
), per non parlare della mancanza di supporto per le funzionalità di programmazione funzionale. Sebbene Java stia iniziando ad aggiungere alcuni elementi di programmazione funzionale, come espressioni lambda e interfacce funzionali, Java è ancora un linguaggio procedurale. La sintassi di Java è anche piuttosto prolissa, in particolare se confrontata con molti linguaggi di programmazione moderni.
Quindi potresti prendere in considerazione la possibilità di passare a uno dei tanti linguaggi di programmazione moderni progettati per funzionare sulla JVM. Sebbene non vi sia carenza di lingue che si adattano al bytecode Java, ci sono alcuni fattori che fanno di Kotlin distinguersi dalla massa:
Uno dei maggiori punti di forza di Kotlin come potenziale alternativa a Java è il livello di interoperabilità tra Java e Kotlin: è possibile avere anche codice Java e Kotlin affiancati nello stesso progetto, e tutto continuerà a funzionare perfettamente. Di seguito, puoi vedere un esempio di un progetto che consiste in un Java Attività
e un'attività Kotlin.
Infatti, una volta compilato il progetto misto Kotlin e Java, gli utenti non saranno in grado di dire quali parti del progetto sono scritte in Java e quali parti sono scritte in Kotlin.
Poiché le classi Kotlin e Java possono coesistere nello stesso progetto, puoi iniziare a utilizzare Kotlin senza dover fare nulla di drastico come convertire un intero progetto in Kotlin o avviare un nuovo progetto in modo specifico per poter provare a Kotlin.
Grazie a questo livello di interoperabilità, se hai un progetto su cui stai già lavorando, puoi provare Kotlin in una piccola parte di quel progetto senza influenzare il resto della tua base di codice. Inoltre, se decidi di voler continuare a utilizzare Kotlin, puoi migrare il codice Java esistente del progetto a Kotlin un file alla volta, o lasciare intatto il codice Java precedente del progetto e utilizzare Kotlin solo per le nuove classi e funzionalità.
Dal momento che Kotlin è completamente interoperabile con Java, sarai anche in grado di utilizzare la maggior parte delle librerie e dei framework Java nei tuoi progetti Kotlin, persino i framework avanzati basati sull'elaborazione delle annotazioni.
Kotlin mira ad essere un miglioramento di Java, piuttosto che una completa riscrittura, quindi molte delle abilità che hai acquisito e perfezionato durante la tua carriera Java dovrebbero essere ancora applicabili ai tuoi progetti Kotlin.
Kotlin è inoltre progettato per avere una curva di apprendimento delicata per gli sviluppatori Java. Gli sviluppatori Java dovrebbero scoprire che la maggior parte della sintassi di Kotlin è familiare; ad esempio, il codice utilizzato per creare una nuova classe in Kotlin è molto simile a Java:
class MainActivity: AppCompatActivity ()
Kotlin è anche progettato per essere intuitivo e facile da leggere, quindi anche se tu fare incontrare un codice che è drasticamente diverso, dovresti comunque essere in grado di ottenere il succo di ciò che sta facendo questo codice.
Esistono attualmente numerosi paradigmi di programmazione che sono ampiamente utilizzati, ma quando si tratta della domanda "quale approccio è il migliore", non c'è una risposta facile. Ogni paradigma di programmazione ha il proprio insieme di punti di forza e di debolezza, quindi mentre non c'è carenza di scenari in cui la programmazione funzionale ha un vantaggio, ci sono anche molti problemi dove un approccio procedurale è più efficace.
Quindi, perché dovresti scegliere tra funzionale e procedurale? Come molti altri linguaggi di programmazione moderni, Kotlin mira a offrirti il meglio di entrambi i mondi combinando concetti ed elementi della programmazione sia procedurale che funzionale.
Kotlin è sviluppato da JetBrains, la società dietro IntelliJ-l'IDE su cui è basato Android Studio. Non sorprende, quindi, che Android Studio abbia un eccellente supporto per Kotlin. Una volta installato il plugin Kotlin, Android Studio semplifica la configurazione di Kotlin nel tuo progetto come l'apertura di alcuni menu.
Una volta impostato il plug-in di Kotlin per Android Studio, l'IDE non avrà problemi a comprendere, compilare ed eseguire il codice Kotlin. Android Studio fornisce anche il debug, il completamento automatico, la navigazione del codice, il test delle unità e il supporto completo del refactoring per Kotlin.
Una volta che il tuo progetto Android Studio è configurato per supportare Kotlin, sarai persino in grado di convertire un intero file sorgente Java in un file Kotlin, con pochi clic del mouse.
Se confronti una classe Java e una classe Kotlin che producono gli stessi risultati, quella scritta in Kotlin sarà in genere molto più succinta e compatta di quella scritta in Java. E come ogni sviluppatore sa, meno codice significa meno bug!
Ad esempio, il seguente codice Java crea un'attività composta da un pulsante di azione mobile (FAB) che, quando viene toccato, visualizza una barra di snack contenente il messaggio utile Questo è uno snack bar.
public class MainActivity estende AppCompatActivity @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); Barra degli strumenti della barra degli strumenti = (barra degli strumenti) findViewById (R.id.toolbar); setSupportActionBar (barra degli strumenti); FloatingActionButton myfab = (FloatingActionButton) findViewById (R.id.myfab); myfab.setOnClickListener (new View.OnClickListener () @Override public void onClick (Visualizza vista) Snackbar.make (view, "Questa è una barra di snack", Snackbar.LENGTH_LONG) .setAction ("Action", null) .show ( ););
L'equivalente Kotlin realizza questo stesso lavoro con meno codice, in particolare quando si tratta di creare il FAB e di impostare il onClickListener
:
class MainActivity: AppCompatActivity () override fun onCreate (savedInstanceState: Bundle?) super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) val toolbar = findViewById (R.id.toolbar) come barra degli strumenti setSupportActionBar (barra degli strumenti) val myfab = findViewById (R.id.myfab) come FloatingActionButton myfab.setOnClickListener view -> Snackbar.make (visualizza, "Questa è una barra di snack", Snackbar.LENGTH_LONG) .setAction ("Azione", null) .show ()
Entrambi gli snippet di codice hanno esattamente lo stesso risultato:
Kotlin è particolarmente bravo a ridurre la quantità di codice boilerplate che è necessario scrivere, il che dovrebbe rendere la codifica in Kotlin un'esperienza molto più piacevole, rispetto alla codifica in linguaggi più prolissi come Java.
In particolare, le estensioni di Kotlin per Android (che esploreremo nella seconda parte) consentono di importare il riferimento a una vista in un file di attività, quindi puoi lavorare con la vista come se fosse parte di tale attività. Ciò significa che non è più necessario identificare ciascuna vista utilizzando findViewById
, che può trasformare un codice come:
TextView text = (TextView) findViewById (R.id.myTextView); text.setText ("Hello World");
Nel molto più succinto:
myTextView.setText ("Hello World")
Nessun linguaggio di programmazione è perfetto, quindi sebbene Kotlin abbia molto da offrire agli sviluppatori Android, ci sono alcuni svantaggi che devi tenere a mente:
La libreria standard di Kotlin e il runtime aumenteranno le dimensioni del tuo .apk. Anche se ciò equivale a circa 800KB, se la tua applicazione è già ampia, allora 800KB in più potrebbero rovesciarti oltre il bordo e far riflettere gli utenti due volte prima di scaricare la tua app.
Sebbene la sintassi concisa di Kotlin sia uno dei maggiori punti di forza del linguaggio, all'inizio potresti trovare alcuni Kotlin difficili da decifrare, semplicemente perché c'è così tanto da fare in una quantità così piccola di codice. Java può essere più prolisso, ma il lato positivo è che tutto è chiaramente enunciato, il che significa che il codice Java non familiare tende ad essere più facile da decifrare rispetto a Kotlin non familiare.
Inoltre, se usato in modo errato, il sovraccarico dell'operatore di Kotlin può risultare in un codice difficile da leggere.
Kotlin può avere un eccellente supporto in Android Studio, ma vale la pena ricordare che Kotlin non è ufficialmente approvato da Google.
Inoltre, il completamento automatico e la compilazione di Android Studio tendono a rallentare leggermente quando si lavora con Kotlin, rispetto a un progetto Java puro.
Dato che Kotlin è una lingua relativamente nuova, la comunità di Kotlin è ancora abbastanza piccola, in particolare rispetto alla comunità che circonda i linguaggi più consolidati come Java. Se tu fare fai il passaggio a Kotlin, quindi potresti non avere accesso allo stesso numero di esercitazioni, post di blog e documentazione degli utenti e potresti incontrare meno supporto della community in posti come forum e Stack Overflow. Al momento della scrittura, cercando Kotlin su Stack Overflow restituisce appena oltre 4.600 post con tag Kotlin-rispetto agli oltre 1.000.000 di post che contengono il Giava etichetta.
Nel primo post di questa serie in tre parti, abbiamo esaminato il motivo per cui potresti voler considerare di passare la parte Java del tuo sviluppo Android a uno dei linguaggi più moderni e compatibili con JVM. Abbiamo anche esaminato da vicino gli esclusivi vantaggi e svantaggi di Kotlin come potenziale sostituzione di Java.
Se hai valutato i pro e i contro e hai deciso di portare Kotlin a fare un giro, nella seconda parte di questa serie ti mostrerò come utilizzare Android Studio per creare una semplice app Android, interamente scritta in Kotlin . Vedremo anche come puoi usare Kotlin per assicurarti di non doverne mai scrivere un altro findViewById
ancora!
Nel frattempo, dai uno sguardo agli altri tutorial su sviluppo Android qui su Envato Tuts+!