Page tree
Skip to end of metadata
Go to start of metadata
News:

Kotlin umjesto Jave

Kotlin je opći (General purpose) programski jezik koji je osmislio i razvija JetBrains, proizvođač InteliJ IDEA-e, najpopularnije razvojne okoline za Javu. To je programski jezik koji programiranje čini efikasnim i zabavnim, a popularnosti znatno doprinosi puna Java kompatibilnost - tako da će ga, najvjerojatnije, najprije prihvatiti postojeća Java zajednica. 

Od početka razvoja 2011. godine, pa sve do prve finalne verzija objavljene prošle godine, traje intenzivna komunikacija sa zainteresiranim korisnicima. Stav korisnika je izuzetno važan jer je JetBrains kao imperativ u konstrukciji jezika zacrtao punu kompatibilnost s postojećim Java kodom - ciljajući, u prvom redu, na postojeće Java programere.

Java, naime, u prvi plan stavlja “backward” kompatibilnost, što joj omogućuje nasljeđivanje i nadogradnju koda bez obzira na to kad je nastao - ali, istovremeno, predstavlja i kočnicu u moderniziranju jezika, odnosno prepreku napuštanju loših rješenja ili istrošenih koncepata.

Takva situacija - bez obzira na prednosti - uzrokovala je sve veće kritike postojećih Java korisnika, kao i slabiji interes novih programera koji se za programski jezik tek odlučuju. Osim toga, kritikama je doprinijela i sve veća ponuda programskih jezika koji podržavaju dokazano efikasne koncepte poput immutability-a i funkcionalnog programiranja.

Kao rezultat - Java korisnici su se počeli okretati jezicima zasnovanima na Java Virtual Machine-u, pa je rasla popularnost Scale, Clojure-a, Groovy-a i sličnih, koji uz moderniji pristup, omogućuju i korištenje Java biblioteka - a sve kako bi se pomirila potreba za modernim jezikom ali i osigurala kompatibilnosti - pa čak i uz cijenu da ona nije potpuna.

Upravo je tu prednost Kotlina, koji kao jedan od najmlađih JVM zasnovanih jezika, za razliku od ostalih, nudi moderne koncepte i punu kompatibilnost. Osim toga, što kod ozbiljnog razvoja nije zanemarivo, nudi i IntelliJ IDEA-u, izvrsnu razvojnu okolinu te omogućuje jednostavnu primjenu Kotlina u proširenju funkcionalnosti postojećih Java objekata, pa ispreplitanje Java i Kotlin koda čini jednostavnim i prirodnim što omogućuje postupno i jednostavno migriranje, doradu ili proširenje Java koda.

Kotlin nije modernizirana Java, to je novi programski jezik koji se može okarakterizirati kao koncizniji, razumljiviji i kraći.

Prednosti programskog jezika Kotlin na nekoliko primjera...
 Prikaži više...

Ako bi trebalo, primjera radi, istaknuti jednu od prednosti programskog jezika, svakako bi trebalo ukazati na “null safety” karakteristiku, ugrađenu u samu jezgru jezika.

Kotlin, naime, inzistira na eksplicitnom dopuštanju varijablama postojanje null vrijednosti. Za one koje se deklariraju kao takve, prije bilo koje operacije nad njima - potrebno je provesti null provjeru.

Radi jednostavne integracije s Javom, koja nema ugrađenu null safety funkcionalnost, Kotlin je inicijalno tretirao sve vrijednosti koje se preuzimaju iz Jave kao nullable - s dopuštenom null vrijednošću, no tijekom razvoja jezika - u komunikaciji s korisnicima - pokazalo se da Kotlin programeri znaju da u određenim situacijama Java neće prosljeđivati null vrijednosti, pa je Kotlin ponudio programeru mogućnost deklariranja na kojim mjestima će jezik dopustiti null vrijednosti, a na kojima ne.

kao primjer može se navesti Kotlin implementaciju Java interface MouseListener-a koji ima metodu mouseClicked(MouseEvent event), kod kojeg varijabla event nikada neće biti null te u tom slučaju se taj parametar može definirati kao non-null. U drugim slučajevima , kada nije jasno da li Java poziv može proslijediti null ili kada je jasno da može, varijabla se definira kao nullable te će prilikom korištenja biti potrebno provesti provjere.

Kotlin kompajler značajno je napredniji od Javinog. Konstruiran je tako da programera odterećuje od nepotrebnih deklaracija. Sve postavke koje kompajler može iščitati iz koda, konfigurira automatski.

Na primjer, ako programer prilikom inicijalizacije varijabli dodjeli int vrijednost, taj tip nije nužno navoditi jer će to Kotlin kompajler prepoznati i sam deklarirati.

Drugi primjer je nužnost provjere unutar if uvjeta je li neki objekt određenog podtipa. Naime, Kotlin kompajler prepoznaje podtip objekta unutar if bloka. S druge strane, kod u slučaju Java koda nužno je eksplicitno pretvarati objekt u podtip (class casting). Dodatno, unutar if bloka Kotlin kompajler tretira testiranu varijablu kako non-null, jer je if provjera tu provjeru već izvršila.

Još jedna velika prednost Kotlina nad Javom je način na koji se tretiraju kolekcije. Primjerice, u Javi se ne može na listi elemenata tipa Fruit dodijeliti lista elementa tipa Orange, iako klasa Orange nasljeđuje klasu Fruit - pa je lista Orange objekata, logički, ujedno i Lista Fruit objekata. Kotlin podržava takvu funkcionalnost - pa se parametrizirani tipovi (generics) prilikom definiranja, a ne instanciranja, mogu označiti kontravarijantnim ili kovarijantim.

Način na koji Kotlin definira članove klase (class properties) rezultira kraćim kodom nego što se to može postići u Javi. Kotlin definira primarni konstruktor koji služi za prihvaćanje varijabli prilikom instanciranja objekta (slično kao i u Javi), ali već na tom mjestu variable se mogu označiti ključnim riječima val ili var, te one odmah postaju i članice klase (vidljive u svim funkcijama klase), s pripadajućim osnovnim (default) getter-ima i setter-ima. Nadalje, dodavanjem ključne riječi data u deklaraciji klase, automatski se implementiraju i osnovne (default) metode equals, hashCode i to String, koje se po potrebi mogu zamijeniti drugom, prilagođenom implementacijom.

Kotlin podržava i "extension functions" čime se u postojeće klase, iz vlastitog Kotlin koda ili vanjske Java biblioteke, mogu dodavati funkcije bez nasljeđivanja. Na primjer, na klasu String moguće je dodati zamišljenu funkciju "removeNumbers" na sljedeći način: String.removeNumbers() { // ovdje ide implementacija//} te je nakon toga na bilo kojem objektu tipa String, bez obzira da li on dolazi iz Kotlin koda ili iz vanjskog poziva, moguće koristiti funkciju: "AG6G8J3".removeNumbers() i kao rezultat dobiti "AGGJ".

Ovim primjerima naveden je ilustrativan, ali mali dio funkcionalnosti koje daju Kotlinu prednost nad Javom.

Što se tiče popularnosti jezika i utjecaja na širenje - važno je napomenuti da ja značajan doprinos Android platforme - najviše zbog ograničenja u verziji 4. Naime, Java 8 streaming API je jedno je od velikih poboljšanja Jave, no za rješenja na Android platformi verzije 4 ili niže, ta verzija Jave nije podržana i potrebno je koristiti Javu verzije 6. Upravo to ograničenje u prvi plan gura Kotlin, koji po funkcionalnostima u velikoj mjeri nadilazi Javu 8, a kompajlira se u Java 6 bytecode, što ga čini primjenjivim na svim verzijama Androida.

Zanimljivo je i to da je Google nedavno Kotlin, uz Javu, proglasio službenim jezikom razvoja na Android platformu i time dao potvrdu kvalitete samog jezika te mu trasirao uspješnu budućnost. Ipak, Kotlin nikako ne treba smatrati jezikom za Android razvoj, on je "general purpose language" i jednako dobro funkcionira na server side aplikacijama kao i na desktop aplikacijama.

Naposljetku, može se zaključiti da se arhitekti Kotlina ne trude biti previše inovativan, već teže pragmatičnosti. Kritičari navode da su mnoge funkcionalnosti već viđene u drugim jezicima. Međutim, upravo činjenica da Kotlin preuzima najbolje iz drugih jezika, te da omogućuje odličnu integraciju s postojećim Java bibliotekama, frameworcima i kodom - čini ga posebnim.

Kotlin Croatia User Group - Osijek

Icon

U Osijeku je 2.6. održan inicijalni sastanak Hrvatske Kotlin korisničke grupe. Sastanak se, uz prisustvo trinaest zainteresiranih programera, bavio organizacijskim temama. Više o grupi, sastancima i temama - može se pronaći na nedavno uspostavljenim web stranicama.

 

Autor: Igor Buzatović

Labels heatmap:

Recently Updated:

 

 

  • No labels