Uvod u Kotlin — Koje su prednosti novog zvaničnog jezika za razvoj Android aplikacija?

Marko Arsić nam objašnjava šta se krije iza relativno novog programskog jezika, koji je Google nedavno proglasio zvaničnim jezikom Android platforme.

Marko Arsić - 16. Jun, 2017.

Po definiciji Kotlin je statički tipiziran programski jezik za razvoj multiplatformskih aplikacija. Kotlin je koncizan, interoperabilan, bezbedan, sa odličnim razvojnim alatima i okruženjem. Radi na Java virtuelnoj masini (JVM), može se kompajlirati u JavaScript kôd ili koristiti LLVM kompajler. Razvijen je od strane programera kompanije JetBrains, sa sedištem u Sankt Petersburgu u Rusiji. Iako sintaksa ovog jezika nije kompatibilna sa Java jezikom, Kotlin je dizajniran za potpunu interoperabilnost sa Java kodom. Ovaj jezik je ime dobio po ostrvu Kotlin u blizini Sankt Petersburga.

Tim lider projekta Andrej Breslav kaže da je Kotlin dizajniran tako da odgovori na zahteve industrije za novim programskim jezikom, “boljim” od Jave, ali opet potpuno interoperabilnim sa Java kodom. Na ovaj način se ostavlja mogućnost kompanijama da postepeno migriraju kôd sa Jave na Kotlin.

Istorija

Iako uglavnom govorimo da je Kotlin nov jezik, on je javnosti poznat već više od pet godina. Sam projekat je objavljen 2011. godine, a prva verzija dostupna javnosti, tzv. “preview”, objavljena je 2012. godine. Prva stabilna verzija Kotlin 1.0 je zvanično objavljena u februaru 2016. godine i u tom trenutku razvojni tim koji stoji iza Kotlina je obećao da će jezik održati kompatibilnost sa starijim verzijama jezika za sve verzije nakon verzije 1.0. Najnovija vest o Kotlinu je stara samo nekoliko nedelja — reč je o tome da je na godišnjoj Google I/O konferenciji Google Android tim zvanično podržao Kotlin kao “first-class” jezik za razvoj aplikacija na Android platformi.

Posmatrali smo kako usvajanje Kotlina stabilno raste tokom godina, a uporedno je raslo i uzbuđenje kod developera. Kotlin je ekspresivan, koncizan, moćan i lep za čitanje i pisanje. Ima divne bezbednosne funkcionalnosti u smislu nullability-a i imutabilnosti, što se poklapa sa našim namerama da Android aplikacije učinimo zdravim i performativnim po defaultu. Najbolje od svega je to što je Kotlin interoperabilan sa našim postojećim Android jezicima i izvršavanjima. Tako da smo vrlo uzbuđeni da učinimo Kotlin zvaničnim jezikom Androida. — Google

Da biste saznali više o Kotlinu, njegovi kreatori su se pobrinuli da vam pruže i više nego korisne materijale i reference na zvaničnoj strani kotlinlang.org. Posebnu pažnju treba obratiti na Kotlin Koans seriju vežbi koje vas na brz i lak način upoznaju sa ovim programskim jezikom. Nakon zvanične podrške i Google je objavio posebnu Kotlin sekciju u okviru Android dokumentacije kako da koristite Kotlin u Android razvoju aplikacija, najčešće postavljanja pitanja za Kotlin na Android platformi kao i njihovu listu resursa gde naučiti Kotlin.

Primer

Kotlin će biti poznat svima koji su bar jednom koristili Java programski jezik.

package helloWorld

Screen Shot 2017-06-16 at 14.20.30

Kao i kod skoro svakog programskog jezika videćete dobro poznate elemente, kao što su vitičaste zagrade, klase, paketi, funkcije i metode. Kako budete upoznavali ovaj jezik, otkrićete da je Kotlin, iako baziran na poznatim konceptima, jedinstven, moderan, elegantan i pragmatičan miks poznatih modela. U praksi, Kotlin je dosta ekspresivan, sa minimumom sintaksne frikcije između misli i onoga što treba da  iskucate kako biste iskazali te misli.

Kotlin sa sobom donosi dosta novih funkcionalnosti i unapređenja, a kako kažu njegovi kreatori pokupio je najbolje osobine nekih već zrelih jezika. Detaljnije funkcionalnosti će biti predstavljene u nekom od narednih članaka dok ovde navodimo samo jedan najočigledniji primer kako Kotlin može poboljšati i unaprediti vaš kod.

Verovatno ste se bar nekad zapitali zašto svaki put morate da iskucate ili generišete “brdo” generičkog koda (eng. boilerplate), raznih getera i setera, kao i da konstantno reimplementirate (na primer) equals(), hashCode() i toString() metode, samo da biste implementirali jednostavnu domensku klasu. Evo tipičnog primera implementacije domenske klase u Java programskom jeziku:

Screen Shot 2017-06-16 at 14.13.18

U Kotlinu nije potrebno da kucate ili generišete ništa od ovoga. U Kotlinu to izgleda ovako:

Screen Shot 2017-06-16 at 14.14.19

Ova jedna linija je ekvivalenta celokpunom gore navedenom kodu. Dakle, potrebno je da vašu klasu označite kao domensku navođenjem ključne reči data ispred definicije klase i samim tim sve gore navedeno će vam biti dostupno bez dodatnog suvišnog koda. Ovo takođe uključuje i imutabilnost.

Zašto Kotlin

Iako je Kotlin u upotrebi već neko vreme, naročito u razvoju Android aplikacija, možda se pitate zašto su Google i Android tim baš sada, prvi put u istoriji, odlučili da podrže novi programski jezik za neki svoj proizvod? Kako kažu, pre svega, jer smatraju da je Kotlin odličan programski jezik koji će razvoj Android aplikacija učiniti lakšim i interesantnijim za programere.

Takođe,  Kotlin je i odličan dodatak za već postojeći Android ekosistem. S obzirom na to da se kompajlira u “bytecode” i radi na Java virtuelnoj mašini ovaj jezik je 100% interoperabilan sa Java programskim jezikom.

Ovo vam omogućava da dodate Kotlin kôd u vaš postojeći projekat i da kombinujete sa već postojećim Java kodom. Pozivanje Kotlin kôda iz postojećeg Java koda jednostavno funkcioniše bez greške. Takođe, pozivanje Java koda iz Kotlin koda takođe funkcioniše bez bilo kakve intervencije vas kao programera pomoću automatski primenjenih translacija (npr. stvari kao geteri i seteri promenljivih automatski su kreirani za vas).

Nikako ne treba prevideti činjenicu da je najveći uticaj na odluku Googla da podrži Kotlin imao ogroman broj programera koji su jednostavno probali i zavoleli Kotlin (uključujući i programere iz Google Android tima). Postoji već priličan broj zajednica i Kotlin korisničkih grupa širom sveta, a od nedavno postoji i Kotlin korisnička grupa u Srbiji. Android zajednica je skoro jednoglasno progovorila, a Google je to poslušao i rezultat svega ovoga jeste da je Kotlin sada zvaničan jezik za Android platformu. Ovo praktično znači da ćemo od sada u Google dokumentaciji imati primere kôda koji prikazuju kako nešto uraditi na Java i Kotlin način kao što već imamo i za iOS gde postoje primeri u Objective-C i Swift kôdu.

Kotlin je već u velikoj meri prihvaćen među programerima i činjenica je da se pridružio programskim jezicima kao što su Swift, Go, Scala, Rust. Svideo se on nama ili ne, Kotlin je tu da ostane, a podrška od strane Googla je samo dodatni vetar u leđa razvoju ovog jezika.