Java vs Kotlin Ska du använda Kotlin för Android utveckling?

När du tänker på Android-utveckling är chansen att ett programmeringsspråk omedelbart kommer i åtanke: Java.

Medan det är sant att majoriteten av Android-appar skrivs i Java, när det gäller Android-utveckling, är Java inte ditt endast alternativ.

Du kan skriva Android-appar på något språk som kan kompilera och köras på Java Virtual Machine (JVM), och dina slutanvändare kommer inte att vara några klokare. Och ett JVM-kompatibelt programmeringsspråk som verkligen har tagit uppmärksamheten hos Android-gemenskapen är Kotlin, ett statiskt skrivet programmeringsspråk från JetBrains.

Om du har hört bra saker om Kotlin och är intresserade av att prova det själv, så är du på rätt ställe. I denna serie med tre delar ska jag dela allt du behöver veta för att du ska kunna börja använda Kotlin för Android-utveckling.

I den här första delen tittar jag på varför du som Android-utvecklare kanske vill överväga att göra omkopplaren från Java i första hand, och sedan ska jag undersöka för-och nackdelarna med att välja Kotlin som din Java-ersättning. I slutet av den här artikeln får du en klar förståelse av exakt vad Kotlin har att erbjuda och vet om det är rätt för dig. 

I del två tittar vi på hur du installerar din Android Studio-installation för att stödja Kotlin och skapa en enkel Android-app som helt skrivs i Kotlin. Med dessa funderingar på plats, i den tredje delen kommer vi att titta på hur du supercharge din Android utveckling, med hjälp av några mer avancerade funktioner i Kotlin-språket.

Varför ska jag göra omkopplaren från Java?

Medan Java är ett av världens mest använda programmeringsspråk och är ganska mycket det officiella språket i Android-utveckling, finns det många anledningar till att Java kanske inte alltid vara det bästa alternativet för dina Android-projekt.

Den största frågan är att Java inte är ett modernt språk, och även om Java 8 var ett stort steg framåt för plattformen, introducerade många funktioner som utvecklare hade väntat på (inklusive lambda-funktioner), medan Android endast stödde skrivandet en delmängd av Java 8-funktioner. Det verkar osannolikt att Android-utvecklare kommer att skörda alla fördelar med Java 8 när som helst snart, så under överskådlig framtid om du vill använda Java i dina Android-projekt så är du ganska fast med Java 7.

Java som helhet har också några ganska väl dokumenterade språkproblem, inklusive oändliga Prova-fånga block, brist på förlängbarhet, null-osäkerhet (och det ökänd NullPointerException), för att inte tala om brist på stöd för funktionella programmeringsfunktioner. Även om Java börjar lägga till några funktionella programmeringselement, som lambda-uttryck och funktionella gränssnitt, är Java fortfarande ett processuellt språk. Java syntax är också ganska verbos, särskilt jämfört med många moderna programmeringsspråk.

Fördelar med Kotlin

Så du kanske vill överväga att byta till ett av de många moderna programmeringsspråk som är utformade för att köras på JVM. Det finns ingen brist på språk som kompilerar till Java bytecode, men det finns några faktorer som gör att Kotlin sticker ut från publiken:

Utbytbarhet med Java

En av Kotlins största styrkor som ett potentiellt alternativ till Java är den rena interoperabilitetsnivån mellan Java och Kotlin. Du kan till och med ha Java- och Kotlin-kod som finns sida vid sida i samma projekt, och allt kommer fortfarande att kompilera perfekt. Nedan kan du se ett exempel på ett projekt som består av en Java Aktivitet och en Kotlin-aktivitet.


Faktum är att när ditt blandade Kotlin- och Java-projekt sammanställs kan användarna inte berätta vilka delar av ditt projekt som är skrivna i Java, och vilka delar skrivs i Kotlin.

Eftersom Kotlin och Java-klasserna kan existera sida vid sida i samma projekt kan du börja använda Kotlin utan att behöva göra något drastiskt som att konvertera ett helt projekt till Kotlin eller starta ett nytt projekt specifikt så att du kan prova din hand på Kotlin. 

Tack vare denna nivå av driftskompatibilitet, om du har ett projekt som du redan arbetar på, kan du prova Kotlin i en liten del av det projektet utan att påverka resten av kodbasen. Och om du bestämmer dig för att du vill fortsätta använda Kotlin, kan du antingen migrera ditt projekt befintliga Java-kod till Kotlin en fil åt gången, eller lämna projektets äldre Java-kod orörd och använd endast Kotlin för de nya klasserna och funktionerna.

Eftersom Kotlin är helt kompatibelt med Java kan du också använda de flesta Java-bibliotek och ramverk i dina Kotlin-projekt - till och med avancerade ramar som bygger på annoteringsbehandling.

Enkel inlärningskurva

Kotlin har som mål att vara en förbättring för Java, snarare än en fullständig omskrivning, så många av de färdigheter du har förvärvat och honed i hela din Java-karriär bör fortfarande gälla dina Kotlin-projekt.

Kotlin är också utformad för att ha en mild inlärningskurva för Java-utvecklare. Java-utvecklare bör upptäcka att det mesta av Kotlin-syntaxen känns bekant. Till exempel är koden som används för att skapa en ny klass i Kotlin mycket liknar Java:

klass MainActivity: AppCompatActivity () 

Kotlin är också utformad för att vara intuitiv och lätt att läsa, så även om du do stöter på någon kod som är drastiskt annorlunda, borde du fortfarande kunna få kärnan av vad den här koden gör.  

Kombinera det bästa av funktionell och processuell programmering

Det finns för närvarande ett antal programmeringsparadigmer som används i stor utsträckning, men när det gäller frågan om "vilken tillvägagångssätt är bäst" finns det inget enkelt svar. Varje programmeringsparadigm har sin egen uppsättning styrkor och svagheter, så det finns ingen brist på scenarier där funktionell programmering har en fördel, det finns också många problem där en procedurinriktning är effektivare.

Så varför ska du välja mellan funktionell och processuell? Liksom många moderna programmeringsspråk syftar Kotlin till att ge dig det bästa av båda världarna genom att kombinera begrepp och element från såväl procedur som funktionell programmering.

Första klassens Android Studio Support

Kotlin är utvecklad av JetBrains, företaget bakom IntelliJ, den IDE som Android Studio bygger på. Det är ingen överraskning då Android Studio har utmärkt stöd för Kotlin. När du har installerat Kotlin-pluginet gör Android Studio att konfigurera Kotlin i ditt projekt så enkelt som att öppna några menyer. 


När du har ställt in Kotlin-plugin för Android Studio kommer ditt IDE inte att ha något problem att förstå, kompilera och köra Kotlin-kod. Android Studio tillhandahåller också felsökning, automatisk slutförande, kodnavigering, enhetstestning och fullständigt refactoring-stöd för Kotlin.

När ditt Android Studio-projekt är konfigurerat för att stödja Kotlin, kommer du även att kunna konvertera en hel Java-källfil till en Kotlin-fil, med några få musklick.

Mer kortfattad kod

Om du jämför en Java-klass och en Kotlin-klass som ger samma resultat, är den som skrivs i Kotlin vanligtvis mycket mer kortfattad och kompakt än den som skrivits i Java. Och som varje utvecklare vet, betyder mindre kod mindre buggar!

Till exempel skapar följande Java-kod en aktivitet som består av en flytande åtgärdsknapp (FAB) som, när den är tagen, visar en snackbar som innehåller det hjälpsamma meddelandet Det här är en snackbar.

public class MainActivity utökar AppCompatActivity @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); Verktygsfält verktygsfält = (Verktygsfält) findViewById (R.id.toolbar); setSupportActionBar (verktygsfältet); FloatingActionButton myfab = (FloatingActionButton) findViewById (R.id.myfab); Myfab.setOnClickListener (new View.OnClickListener () @Override public void onClick (View view) Snackbar.make (visa, "This is a snackbar", Snackbar.LENGTH_LONG) .setAction ("Action", null) .show ););  

Kotlin-ekvivalenten uppnår samma arbete i mindre kod, särskilt när det gäller att skapa FAB och ställa in onClickListener:

klassen MainActivity: AppCompatActivity () override fun onCreate (savedInstanceState: Bundle?) super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) val verktygsfält = findViewById (R.id.toolbar) som verktygsfält setSupportActionBar (verktygsfält) val myfab = findViewById (R.id.myfab) som FloatingActionButton myfab.setOnClickListener view -> Snackbar.make (visa, "This is a snackbar", Snackbar.LENGTH_LONG) .setAction ("Action", null) .show ()  

Båda kodsekvenserna har exakt samma utmatning:


Kotlin är särskilt bra när det gäller att minska mängden kedjekortskod du behöver skriva, vilket skulle göra kodning i Kotlin en mycket trevligare upplevelse jämfört med kodning på mer verbala språk som Java. 

I synnerhet kan Kotlin Android-tillägg (som vi utforskar i del två) tillåta dig att importera referensen till en vy i en aktivitetsfil, så att du sedan kan arbeta med visningen som om den är en del av den aktiviteten. Det innebär att du inte längre behöver identifiera varje visning med findViewById, som kan omvandla kod som:

TextView text = (TextView) findViewById (R.id.myTextView); text.setText ("Hello World"); 

In i den mycket mer kortfattade:

myTextView.setText ("Hello World")

Vad är haken?

Inget programmeringsspråk är perfekt, så även om Kotlin har mycket att erbjuda Android-utvecklare, finns det några nackdelar som du måste tänka på:

Extra Runtime Storlek

Kotlin Standard Library och runtime kommer att öka storleken på din .APK. Även om detta bara motsvarar 800KB, om din ansökan redan finns på den stora sidan så kan den extra 800KB tipa den över kanten och få användarna att tänka två gånger innan du hämtar din app.

Inledande läsbarhet av kod

Även om Kotlins korta syntax är ett av språkets största styrkor, kan du först och främst hitta några Kotlin svåra att dechiffrera, helt enkelt för att det är så mycket som händer i så liten mängd kod. Java kan vara mer verbos, men uppåtsidan är att allt är tydligt stavat ut, vilket betyder att okänd Java-kod tenderar att vara lättare att dechiffrera än kända Kotlin.

Om felaktigt används kan Kotlins operatörsöverbelastning leda till kod som är svår att läsa.

Brist på officiellt stöd 

Kotlin kan ha utmärkt stöd i Android Studio, men det är värt att komma ihåg att Kotlin inte officiellt godkänns av Google.

Även Android Studios autokomplettering och kompilering tenderar att springa lite långsammare när du arbetar med Kotlin, jämfört med ett rent Java-projekt.

Mindre gemenskap och mindre tillgänglig hjälp

Eftersom Kotlin är ett relativt nytt språk är Kotlinsamfundet fortfarande ganska litet, särskilt jämfört med samhället kring mer etablerade språk som Java. Om du do gör omkopplaren till Kotlin, då kanske du inte har tillgång till samma antal handledningar, blogginlägg och användardokumentation och kan stöta på mindre samhällsstöd på platser som forum och Stack Overflow. Vid skrivning, söker efter Kotlin på Stack Overflow returnerar drygt 4 600 inlägg taggade med Kotlin-jämfört med de stora 1.000.000 + inlägg som innehåller java märka.

Slutsats

I det första inlägget i den här tredelade serien tittade vi på varför du kanske vill överväga att byta Java-delen av din Android-utveckling till ett av de modernare, JVM-kompatibla språken. Vi tittade också på Kotlins unika fördelar och nackdelar som en potentiell Java-ersättning. 

Om du har vägt upp för och nackdelar och bestämt dig för att ta Kotlin för en snurr, så kommer du i del två av den här serien att visa dig hur du använder Android Studio för att skapa en enkel Android-app, som helt skrivs i Kotlin . Vi tittar också på hur du kan använda Kotlin så att du aldrig behöver skriva en annan findViewById igen! 

Under tiden, kolla in några av våra andra handledning på Android utveckling här på Envato Tuts+!

  • Förstå samtidighet på Android med hjälp av HaMeR

    I den här handledningen utforskar vi HaMeR (Handler, Message and Runnable) -ramen, en av de mest kraftfulla samtidiga modellerna som finns tillgängliga på Android. Du kommer ...
    Tin Megali
    Android SDK
  • Kom igång med Firebase för Android

    Att skapa en back-end-server kräver en färdighetsuppsättning som de flesta oberoende apputvecklare saknar. Lyckligtvis finns Firebase, en molnbaserad plattform som ...
    Ashraff Hathibelagal
    Android SDK
  • Android från början: Använda REST API

    I den här handledningen kommer jag att visa dig hur du använder de klasser och metoder som finns i Android SDK för att ansluta till fjärranslutna webbservrar och interagera med ...
    Ashraff Hathibelagal
    Android SDK
  • Så här börjar du med en Android App-mall

    CodeCanyon har hundratals Android-appmallar som du kan använda för att hoppa på utvecklingen av din nästa app. I denna handledning hjälper jag dig att komma igång ...
    Ashraff Hathibelagal
    Android
  • Ta bilder med din Android App

    Google Play-butiken har dussintals kameraprogram, var och en möjliggör ett annat sätt att ta foton eller göra något unikt med bilderna från ...
    Ashraff Hathibelagal
    Android SDK