5 gode grunner for backend-utviklere
Java har vært et av de største språkene i backend-utvikling i nærmere 25 år. Stabilt, modent og med et enormt økosystem, men med det kommer det kanskje mindre innovasjon. Kotlin er et moderne alternativ på JVM-plattformen som har vokst raskt frem og nå foretrekkes av mange. Språket kombinerer Java-kompatibilitet med nye funksjoner som kan øke lesbarheten og feilsikkerheten. Her er fem enkle grunner til hvorfor du bør velge Kotlin fremfor Java – uten at du trenger å gjøre drastiske omskrivinger.
- Null-sikkerhet
En feil mange utviklere er godt kjent med er «NullPointerExceptions». Dette er feil som forekommer når et objekts verdi ikke har blitt satt og håndteringen av dette ikke blir tatt høyde for. Alle verdier i Java tillater som standard en null-verdi, som betyr at det er lovlig med fravær av verdi.
Kotlin derimot skiller eksplisitt mellom nullable- og non-nullable-typer. Alt er non-null som standard, og ønsker du å tillate null, må du deklarere variabelen med ? (f.eks. String?). Kompilatoren tvinger deg til å håndtere alle null-tilfeller med safe calls (?.), Elvis-operatorer (?:) eller eksplisitte sjekker. Mange “NullPointerExceptions” fanges allerede ved kompilering, ikke i produksjon.
Dette gjør også koden lettere å lese, da man eksplisitt vet at en verdi er tillatt å inneholde null i Kotlin, hvor det i Java kan være usikkerhet rundt om dette er tiltenkt eller ikke. I Java er det ikke uvanlig at man bruker kommentarer eller annotasjoner (som @NotNull) for å markere at en funksjon eller et objekt ikke skal kunne returnere null, men dette har ingen praktisk effekt.
- Konsis syntaks, mindre boilerplate, string-templates
Kotlin fjerner mye av den gjentakende “seremonikoden” (boilerplate) som Java krever. Semikolon er valgfrie, typeinferens gjør at du sjelden skriver f.eks String flere ganger, og standardgettere/settere genereres automatisk. Dette fører til at du sparer linjer på klassedefinisjoner, konstruktører og enkle funksjoner. Smart casting og inline-funksjoner bidrar også til konsis kode.
Kotlins data-klasser gir også mye gratis kode. Med kun én linje;

får du automatisk toString(), equals(), hashCode() og copy(), uten at det tar visuelt plass eller tid å manuelt kode disse. Det finnes selvsagt biblioteker som tar dette inn for Java, men å slippe enda en avhengighet er også et pluss i boka.
String-templates i Kotlin er også merkbart bedre støttet, enklere å bruke og enklere å lese enn alternativene i Java. Hvor man i Java må bruke formatteringsfunksjoner eller +-operasjoner er det i Kotlin enkelt å skrive en full flerlinjet tekst uten kunstige stopp. Det er også en smal sak å bruke variabler i teksten med interpolasjonsuttrykk ($variabel). Dette er spesielt nyttig i loggmeldinger og feilmeldinger.
Resultatet er kortere, mer lesbar kode som er enklere å vedlikeholde.
- Extension-funksjoner
Kotlin lar deg “utvide” eksisterende klasser med egne metoder uten arv eller statiske hjelpeklasser. I Java må du for eksempel lage en egen statisk metode.
Hvis du vil lage en funksjon som for eksempel gir stor forbokstav i alle ord i en String vil du i Java være nødt til å lage en enkeltstående metode du kaller på.
Du vil også gjerne legge hjelpefunksjonen i sin egen klasse, noe jeg ikke har gjort i eksempelet nedenfor, som vil gjøre kallet lenger. (Typ StringFunksjoner.storForbokstav)

I Kotlin derimot vil du kunne utvide selve String-klassen og bruke denne hvor du vil, gitt at definisjonen ligger i samme pakke eller er importert:

Dette gir en mer objektorientert og lesbart API. Personlig har jeg hatt god nytte av dette for validering med utvidelsesfunksjoner som erGyldigEpostAdresse, erGyldigFødselsnummer, eller lignende.
4. Uttømmende when
When-uttrykket er en personlig favoritt. Dette er et godt alternativ til Java sin switch. Det kan matche på verdi, type, tilstand og brukes som uttrykk som returnerer verdier. I skjermbildet nedenfor ser dere et eksempel på dette:

Her ville man i Java kanskje brukt en lengre else-if som er langt mindre konsist og effektivt.
En annen fordel er hvordan when brukes med enums eller sealed classes (som heller ikke finnes i Java). I disse tilfellene tvinges man til å dekke alle tilfeller før kompilering. Det hindrer glemte verdier, tvinger oppdatering av when når enumen utvides i fremtiden og hindrer at feil verdi forsvinner i en generisk «else». Ikke minst gir det god lesbarhet, da du vet at alle alternativer er dekket når det finnes en when uten else.
- Java-kompatibel
Sitter du med følelsen av at du har lyst til å prøve Kotlin, men ikke har tid til å skrive om hele kodebasen som allerede er i Java så har jeg en god nyhet til deg. Kotlin er 100 % kompatibelt med Java. Du kan kalle Java-biblioteker rett fra Kotlin-kode og omvendt. Klasser kan skrives om hverandre, og det er ikke noe i veien for at neste klasse du lager er skrevet i Kotlin. Dette gjør det mulig å migrere én modul av gangen, skrive ny funksjonalitet i Kotlin og la resten av applikasjonen forbli Java. Om du skulle ønske å konvertere kode så har IDE-ene, i hvert fall IntelliJ innebygd verktøy som automatisk kan konvertere Java-filer til Kotlin. Oversettelsen blir ikke perfekt, men det gir et godt utgangspunkt. For team som allerede bruker Spring eller andre JVM-rammeverk, er det ingen hinder for å gradvis innføre Kotlin.
Hvis IntelliJ er din foretrukne IDE er det et pluss i boka, da det er JetBrains som står bak IntelliJ IDEA og Kotlin, noe som sørger for meget god verktøystøtte.
Konklusjon
Det er flere grunner til å velge Kotlin utenom de fem jeg har nevnt i dette blogginnlegget. Mange langt mer tekniske, for eksempel asynkrone korutiner. Dette var ment som en fordøyelig smakebit, og dersom du ble interessert anbefaler jeg deg å sjekke hvilke andre fordeler du kan få av å bytte til Kotlin.
Kotlin kombinerer null-sikkerhet, konsis syntaks, kraftige språkfunksjoner med full Java-kompatibilitet og god verktøystøtte. For backend-utviklere betyr dette økt produktivitet, færre runtime-feil og mer lesbar kode – uten at du trenger å kaste ut hele den eksisterende Java-kodebasen. Vil du redusere bug-raten, skrive renere kode og ha det litt mer moro som utvikler? Prøv Kotlin i ditt neste prosjekt, eller bare din neste klasse. Du vil raskt se hvorfor så mange har byttet fra Java!