Aki Kotlinhoz nyúl, már nem akar Javához visszatérni
A hatékony, tömör kódot produkáló nyelv népszerűsége rohamosan növekszik – többek között a Telekom backend fejlesztői körében is, ahol a Kotlin bevezetése az elmúlt három év egyik sikersztorijának bizonyult.
Az agilis, microservice-ekre épülő alkalmazások, szolgáltatások létrehozásához a megfelelő építőelemek kiválasztása is elengedhetetlen - ez a Telekom backend fejlesztői berkeiben is gyorsan egyértelművé vált, és megfogalmazódott az igény egy olyan technológia iránt, amely nem csak innovatív, de sok szoftvermérnök is elérhető vele. Ehhez kiemelten fontos szempont volt, hogy gyorsan használatba vehető legyen, ne kelljen fél évet rászánni a megfelelő szintű kitanulásra, illetve nem utolsó sorban a nagyvállalati környezettel is kompatibilis tudjon maradni. Így esett a választás a Kotlin nyelvre, amellyel a vállalat több mint három éve kezdett komolyabban foglalkozni.
A Kotlin backend felhasználásával kapcsolatos tapasztalatokról Major Balázs, a HWSW free! 2021. június 9-én megrendezett Java/Kotlin online meetupon tartott előadásában számolt be. Balázs 15 éves fejlesztői múltjából az utóbbi két évet a Telekomnál chapter leadként töltötte, ahol egységes megoldásokkal igyekeznek standardizálni a fejlesztési folyamatokat - ennek megfelelően a Kotlin nyelvet is standard opcióként kínálták már az első perctől a fejlesztőcsapatnak.
KIPRÓBÁLNI ÉS MEGSZERETNI
A Kotlin használatának bevezetése a backend fejlesztésben tehát bő három éve kezdődött a Telekomnál, ekkor lehetőség nyílt egy alkalmazás teljes újraírására, Kotlinra támaszkodva. A szóban forgó szoftvert a csapat már microservice alapon kezdte felépíteni, ehhez pedig a Kotlin ideális választásnak bizonyult, miután az kompaktabb, tisztább kód írását tette lehetővé. A fejlesztők nagyon gyorsan átálltak a Kotlin fejlesztésre - az általános vélemény alapján a váltás semmiféle nehézséget nem jelentett. Olyannyira nem, hogy a Kotlin alap nyelvi elemeit megtanulni egy-két hét elegendő volt, ezzel a tudással pedig már biztonsággal neki lehetett állni a backend fejlesztésnek - persze ez az alapvető megértést jelenti, egy magasabb fejlesztési szint eléréséhez itt is több időre van szükség. A tapasztalatok szerint a fejlesztők olvashatóbb, kifejezőbb kódot tudtak írni Kotlinban, problémás területnek talán csak a Spring, illetve a reaktív integráció volt mondható - a csapat első kotlinos szárnypróbálgatásai során ez a terület még nem volt kiforrott.
A vállalatnak nem sokkal később a Kotlin és a Java közvetlen összehasonlítására is lehetősége adódott, mikor a Telekom egy másik fejlesztőcsapata két évvel ezelőtt, a webshop mögötti backend logikát kezdte fejleszteni. Miután nagy volt a hajtás, ehhez Javát kezdtek használni, hiszen abban már kényelmesen mozogtak, kiterjedt tapasztalatuk volt a nyelvvel - akkor a projekten dolgozó fejlesztők úgy vélték, túl sok idő menne el, mire a Kotlinnal megfelelően meg tudnának ismerkedni és hatékonyan tudnának vele dolgozni. A fejlesztést így akkor Javával is vitték végig, egy évvel ezelőtt azonban a csapat már kényelmesebb keretek között írhatta újra az alkalmazást, ekkor pedig már ők is a Kotlinhoz nyúltak. A visszajelzések itt is rendkívül pozitívak voltak, a fejlesztők nagyon megszerették a nyelvet, dicsérték annak jó formázottságát. Ezt követően több másik csapat is zökkenőmentesen át tudott állni a nyelvre, amelyben hatékony tömör kódot tudtak készíteni - Balázsék chapter leadként már az új fejlesztőcsapatoknak is a Kotlin nyelvet javasolják számos projekthez.
A nagy Kotlin sztori avagy hogyan lehet a Kotlin nyelvet backend fejlesztésben hatékonyan alkalmazni
Még több videóDe a Javát nem is kell feltétlenül teljesen elereszteni a Kotlin felé történő nyitáshoz: a vállalatnál olyan projekt is volt, ahol az erős Java kompetenciával rendelkező csapat egyik fele nem akart megválni a jól bevált nyelvtől. Itt végül azokat a kisebb microservice-eket, amelyeket egy-egy Kotlinkedvelő fejlesztő el tudott vinni, utóbbi nyelven írták meg, míg a közös, nagyobb megoldásokat Javában - ez a vegyes modell is működőképesnek bizonyult. A Kotlin bevezetését a Telekom sikertörténetként könyvelte el, a nyelv számos erősséget fel tudott vonultatni, amelyeknek hála teljes mértékben alkalmasnak bizonyult a hatékony backend fejlesztésekhez.
Az egyik ilyen a teljes JVM kompatibilitás, remek átjárhatóság a Java felé, amelyet az IDE is támogat. Egy másik komoly erősség az Extensions , amelyek elősegíti a kód tömörségét azzal, hogy bonyolult örökléseket tudunk megspórolni, illetve az üzleti logikák egyszerű kifejezésének is teret enged. Ugyanígy a String Templates is komoly könnyebbséget jelentenek az átlátható kód írásában, továbbá az Smart cast is ott van a fegyvertárban, amivel a típus inteligens meghatározására is lehetőség van a feltételekben.
MÉG NINCS KOLBÁSZBÓL A KERÍTÉS
Persze még akadnak leküzdésre váró akadályok is a nyelv háza táján, ilyen a Gradle és a Kotlin nehézkes használata - a problémákra pedig a jól bevált Stack Overflow böngészése sem jelent garantált megoldást, a Kotlin nyelv köré épülő fejlesztői közösség még nem olyan kiterjedt és aktív, mint a Java esetében, ugyanakkor ez a terület is folyamatos javulást mutat a Telekom fejlesztőinek tapasztalatai szerint. A kódgenerátorok kapcsán is van tér a fejlődésre, a Kotlinnal használható megoldások zöme - például Swaggerből történő kódgenerálásra - még nem mondható százszázalékosnak, itt jellemző, hogy hibák bukkannak fel. Jelenleg a Data Class-ok öröklődésére sincs mód a Kotlinban, ami miatt szükség lehet bizonyos osztálystruktúrák újragondolására.
A felmerülő gyengeségekkel együtt a Kotlin népszerűsége a Telekom zászlaja alatt töretlen, amit jól mutat, hogy a fejlesztők nem csak magára a nyelvre, de annak holdudvarára is kitekintettek, és a Java mellől ismert megoldások helyett (például a nehézkes, de mára nagyrészt kisimított Spring kompatibilitás) natív, kotlinos frameworköket kezdtek használni. Ezek sok esetben jó alternatívák lehetnek, még ha nem is lehet egyelőre teljesen kiforrott megoldásokról beszélni - ugyanakkor komoly előny, hogy ha egy projektben valamiért egy-egy keretrendszer mélyére kell ásni, ott is ugyanúgy Kotlin dolgozik, mint az adott fejlesztés többi részén. Ilyen például unit teszteléshez használt Kotest vagy épp a kotlinban megírt, MockK névre hallgató mockolási keretrendszer. Szintén említést érdemel a Ktor, amely bizonyos esetekben a Spring Boot kiváltására is alkalmas lehet, pehelysúlyú, kotlin-natív alternatívaként.
A Telekomnál tehát a Kotlin backend fejlesztésben való bevetése komoly sikert aratott a fejlesztők körében, mára amire csak lehet, beleértve egy sor nagy kaliberű projektet, Kotlint használnak a csapatok. A cégnél a bevezetés fő tanulsága: aki egyszer elkezd Kotlinban fejleszteni, nem akar már Javára visszatérni.
A Telekom jelenleg is keres Java/Kotlin fejlesztőket, a Java kompetenciával érkezőknek pedig minden támogatást megad a Kotlin nyelv elsajátításához.
[A MagyarTelekom megbízásából készített, fizetett anyag.]