{"id":3913,"date":"2022-05-18T10:39:02","date_gmt":"2022-05-18T10:39:02","guid":{"rendered":"http:\/\/the-codest.localhost\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway\/"},"modified":"2026-04-28T14:07:11","modified_gmt":"2026-04-28T14:07:11","slug":"miks-kotlin-on-vinge-aga-sa-jaad-ikkagi-java-juurde-1","status":"publish","type":"post","link":"https:\/\/thecodest.co\/et\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/","title":{"rendered":"Miks Kotlin on vinge, aga sa j\u00e4\u00e4d ikkagi Java juurde"},"content":{"rendered":"<p>S\u00f5ltumata sellest, millisesse gruppi te kuulute, on p\u00f5hjus, miks te j\u00e4\u00e4te koos <strong><a href=\"https:\/\/thecodest.co\/et\/blog\/find-the-right-java-developer-now\/\">Java<\/a><\/strong>. Ja ma ei s\u00fc\u00fcdista teid. Sellel on vaieldamatult k\u00f5ige arenenum, universaalsem ja t\u00e4ielikum \u00f6kos\u00fcsteem kogu maailma <a href=\"https:\/\/thecodest.co\/et\/dictionary\/what-is-enterprise-hybrid-cloud\/\">ettev\u00f5te<\/a> maailma. Sellel keelel on kenasti kohandatud v\u00f5imalused, mis on kuskil \u00f5iges vahemikus liiga palju ja liiga v\u00e4he. Ja uusi funktsioone lisatakse aeglaselt, kuid j\u00e4rjekindlalt, hoides seda enamasti kursis uuemate suundumustega programmeerimismaailmas.<\/p>\n\n\n\n<p>Kas te teate <a href=\"https:\/\/projectlombok.org\">Lombok<\/a> aga? Kui te seda ei tee, siis soovitan v\u00e4ga proovida. Kui teile meeldib, siis on mul midagi just teie jaoks, mida proovida. T\u00e4iesti uus keel, mis oma omaduste poolest muudab Lomboki iganenuks. Selle nimi on <b>Kotlin<\/b>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kotlin? Sa m\u00f5tled Androidi keelt?<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/pClXBLD.jpg\" alt=\"Noh jah, aga tegelikult ei\"\/><\/figure>\n\n\n\n<p>Google ise \u00f5nnistas Kotlini Androidi puhul nii palju, et sellest sai platvormi de facto keel. Selles artiklis ei keskendu ma sellele, kuid Android on t\u00f5epoolest koht, kus ma esimest korda Kotliniga kohtusin.<\/p>\n\n\n\n<p>Minu t\u00f6\u00f6kaaslane arendas rakendust, mis oli tollase praeguse <a href=\"https:\/\/thecodest.co\/et\/dictionary\/why-do-projects-fail\/\">projekt<\/a>, omal k\u00e4el. T\u00e4htajad l\u00e4henesid aga kiiresti, nii et mulle anti \u00fclesanne aidata tal neid t\u00e4ita. Lubage mul end n\u00fc\u00fcd ajas tagasi viia sellesse hetke. Aaaa ja... YUCK! Miks ta kasutab mingit imelikku keelt, mis k\u00f5lab nagu <a href=\"https:\/\/www.ketchupy.pl\/images\/3\/c\/9\/4\/5\/3c9453c5b720f810c293211d77449d9395f09944-product-front-1.png\">ket\u0161upi br\u00e4ndi<\/a>!? See n\u00e4eb kohutav v\u00e4lja!<\/p>\n\n\n\n<p>Miks on iga funktsiooni ette kirjutatud \"fun\"? Nagu ma juba ei teaks, mis see on. Samuti on mul juba <em>l\u00f5bus<\/em> koos <strong>Java<\/strong> igatahes. Ja kus on tagastust\u00fc\u00fcp? L\u00f5pus? Oled sa hullu? Mis see on, kas sa m\u00e4\u00e4rad midagi funktsioonile? Sellel pole mingit m\u00f5tet! See k\u00f5ik n\u00e4eb lihtsalt v\u00e4lja nagu <b>Java koos t\u00e4iendavate sammudega!<\/b> Oodake, kuhu see meetod kuulub? Kuhu sa selle peitsid sa ketsupi-h\u00e4\u00e4lne, <strong>Java<\/strong> imiteeriv vabandus programmeerimiskeele kohta? Oh ei. Oh ei, sa ei teinud seda. ON SEE GLOBAALNE FUNKTSIOON? See on k\u00f5ik, ma olen valmis, ma helistan politseisse.<\/p>\n\n\n\n<p>Spoiler hoiatus: ma ei helistanud \u00f5iguskaitseorganitele. Kas see meeldis mulle v\u00f5i mitte, pidin oma Java-keskset m\u00f5tteviisi kohandama, et kohaneda teise keelega. See ei ole siiski nii halb, eks? See on ikkagi JVM keel, kindlasti on see lihtsalt teistsugune <strong>Java<\/strong>. V\u00f5ib-olla isegi m\u00f5ne laheda lisafunktsiooniga? Vastumeelselt hakkasin projekti kallal t\u00f6\u00f6tama.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Java koos t\u00e4iendavate sammudega<\/h2>\n\n\n\n<p><em>Kui Java on nii suurep\u00e4rane, miks ei ole siis Java 2?<\/em> Nalja k\u00f5rvale j\u00e4ttes m\u00f5tlesin ma seda endale. Ma lihtsalt teesklen, et Kotlin on Java 2. Uus s\u00fcntaks ja k\u00f5ik, aga ma pean seda lihtsalt piisavalt \u00e4ra \u00f5ppima, et projekt l\u00f5petada. Boy oh boy oli ma eksinud.<\/p>\n\n\n\n<p>P\u00e4rast paari p\u00e4eva pikkust proovimist sain kiiresti aru, et nii Kotlin kui ka <strong>Java<\/strong> ei ole nii elastsed. Kui p\u00fc\u00fcda neid \u00fcksteise poole painutada, l\u00f5peb see paratamatult sellega, et \u00fcks neist murdub pooleks. Selgus, et Kotlin on omaette asi ja see, et see t\u00f6\u00f6tab JVMil, ei t\u00e4henda programmeerija seisukohast peaaegu t\u00e4pselt midagi. (K\u00f5rvalm\u00e4rkusena v\u00f5ib see ka transpileerida <a href=\"https:\/\/thecodest.co\/et\/blog\/hire-javascript-developer\/\">JavaScript<\/a>, v\u00f5i kompileerida algup\u00e4raseks binaarseks versiooniks).<\/p>\n\n\n\n<p>Plaan B siis. Tegelikult tuleb \u00f5ppida keelt tundma. Dokumendi esmakordne lugemine ajab kogenud Java-programmeerijal k\u00fclmav\u00e4rinaid l\u00e4bi selgroo. N\u00e4iteks:<br>- eelnevalt mainitud \u00fclevalpoolne ehk globaalne kontekst<br>- parameetrite ja funktsioonide tagastamist\u00fc\u00fcbid, mis on m\u00e4\u00e4ratud l\u00f5pus<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>fun sum(a: Int, b: Int): Int {\n   return a + b\n}<\/code><\/code><\/pre>\n\n\n\n<p>funktsiooni keha v\u00f5ib olla v\u00e4ljendus (kasutades v\u00f5rdsuse m\u00e4rki)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code> fun sum(a: Int, b: Int) = a + b<\/code><\/code><\/pre>\n\n\n\n<p>if avaldis v\u00f5ib anda tulemuse<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code> val y = if (x == 1) {\n \"one\"\n } else if (x == 2) {\n \"two\"\n } else {\n \"other\"\n }<\/code><\/code><\/pre>\n\n\n\n<p>Okei, ma pean lihtsalt sellega harjuma. Lihtsalt teistsugune s\u00fcntaks. Mida teil veel pakkuda on, mister Kotlin?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code> value?.method() \/\/ execute if not null<\/code><\/code><\/pre>\n\n\n\n<p>Oh ok, vabanemine <code>if (value == null)<\/code>, punkt teile. Mis sul veel on?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>fun check(list: List, alternative: Boolean) = when {\n list on LinkedList -&gt; print(\"lingitud\")\n alternatiiv -&gt; print(\"alternatiiv\")\n list.size &gt; 50 -&gt; print(\"big\")\n else -&gt; print(\"muu\")\n }<\/code><\/code><\/pre>\n\n\n\n<p>Hmm kena, v\u00f5iks olla mugav v\u00e4ltida, kui teised blokeerivad, tundub siiski nagu trikk.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code> objekt SingularObject: Counter() {\n var a = 14\n fun test() = if (a &gt; 10) \"rohkem\" else \"v\u00e4hem\"\n }<\/code><\/code><\/pre>\n\n\n\n<p>Ok, see tundub tegelikult kasulik, mulle meeldib! Teisest k\u00fcljest, ma v\u00f5in luua singletoni ka Java's. V\u00f5ib-olla ei ole see nii elegantne, aga see ei ole midagi v\u00e4ga uut. On sul mingeid \u00e4ssasid varrukas? Nagu t\u00f5elised heavy hitterid?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code> var s: String = null \/\/ ei kompileeru, mitte-null t\u00fc\u00fcp<\/code><\/code><\/pre>\n\n\n\n<p>Oota... mida?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/Tony_Hoare#Apologies_and_retractions\">Miljardi dollari viga<\/a><\/h2>\n\n\n\n<p>Kujutage ette koodibaasi, kus te ei pea muretsema nullturvalisuse p\u00e4rast. Kujutage ette, et iga viide sisaldab tegelikult midagi m\u00f5ttekat. Kujutage ette, et olete kindel, et iga nulliga seotud probleem on eelnevalt lahendatud.<br>Kujutage ette, et enam ei ole. K\u00f5ik viited Kotlinis ei ole vaikimisi nullitavad. Kui te soovite neid nullitavaks muuta, peate te <u>teadlikult<\/u> teha see otsus ja <u>selges\u00f5naliselt<\/u> m\u00e4rkida see <a href=\"https:\/\/thecodest.co\/et\/dictionary\/what-is-code-refactoring\/\">kood<\/a>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code> var s: String? = null\n<\/code><\/code><\/pre>\n\n\n\n<p>Ma saan aru, et te v\u00f5ite praegu olla skeptiline kogu selle idee suhtes. Te olete harjunud nulliga viidetega. Sa hoiad seda kodeerimise ajal tagantj\u00e4rele meeles. Sa oled \u00f5ppinud, kus sa pead olema ettevaatlik. T\u00e4pselt minu m\u00f5tted. Tulevad <strong>Java<\/strong>, alguses tundus see t\u00f5epoolest imelik. Nagu, mis m\u00f5te on? See ei kaota maagiliselt k\u00f5iki sellega seotud probleeme. Ma pean lihtsalt igal pool lisama \"?\", k\u00f5lab nagu t\u00f6\u00f6.<\/p>\n\n\n\n<p>Aga ma otsustasin ju s\u00fcgavale keelde sukelduda? Olgu see siis sinu moodi, mister <strong>Kotlin<\/strong>. Hakkasin tegema j\u00f5upingutusi, et k\u00f5rvaldada nii palju nullitav muutujaid, v\u00e4lju ja parameetreid kui v\u00f5imalik. Samm-sammult \u00f5ppisin kasutama keele omadusi, mis lihtsustasid nullitavate viidete k\u00f5rvaldamist, nt safe call \"?.\" operaator, elvis \"?:\" operaator, delegeeritud omadused, \"let\" meetod ja palju muud.<\/p>\n\n\n\n<p>Aja m\u00f6\u00f6dudes \u00f5nnestus mul saada m\u00f5ned klassid sisaldama ainult mitte-null v\u00e4lju ja meetodi parameetreid. P\u00f5him\u00f5tteliselt teadsin, et kui klass on edukalt instantseeritud, v\u00f5in peaaegu unustada nullitavuse meetodite kehades. See oli \u00f5ndsus. Aja jooksul hindasin seda \u00fcha enam ja enam. L\u00f5ppkokkuv\u00f5ttes ei pidanud ma seda siiski tapjafunktsiooniks, <strong>Java<\/strong> tundus ikka veel nagu kodus. Kuni...<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tagasitulek<\/h2>\n\n\n\n<p>Projekt l\u00e4henes l\u00f5pule. Ma \u00f5ppisin Kotlini \u00fcha paremini tundma ja nende teadmistega muutus kood \u00fcha korrastatumaks, loetavamaks ja \u00fclevaatlikumaks. Parandusi v\u00f5is palja silmaga n\u00e4ha commit history's. L\u00f5puks j\u00f5udis aga k\u00e4tte see aeg. Ootamatult armsate m\u00e4lestustega uuest keelest oli aeg h\u00fcvasti j\u00e4tta ja minna tagasi magusasse mugavustsooni <strong>Java<\/strong>. V\u00f5i nii ma arvasin.<\/p>\n\n\n\n<p>Kas tunnete seda tunnet, kui hakkate midagi hindama just sel hetkel, kui see on kadunud? Kui sa ei saa aru, kui palju sa millestki s\u00f5ltud, kuni sa ei saa seda enam kasutada? See oli k\u00f5ige parem n\u00e4ide sellest tundest, mida ma ilmselt kunagi elus kogenud olen.<\/p>\n\n\n\n<p>Kui ma sain tagasi koodi kirjutamise juurde <strong>Java<\/strong>, ma olin peaaegu hirmunud m\u00f5nede funktsioonide puudumise p\u00e4rast. See oli nagu mu aju oleks alateadlikult, valesti tagantj\u00e4rele Kotlini funktsioone Java'sse paigaldanud. Ma kogesin olukordi, kus ma tegelikult hakkasin midagi rakendama, ainult selleks, et aru saada, et see ei t\u00f6\u00f6ta selles keeles. Parimal juhul saaksin selle Kotlini moodi kirjutada, kuid see oleks mahukas, loetamatu ja\/v\u00f5i n\u00f5uaks liiga palju boilerplate'i.<\/p>\n\n\n\n<p>Nullturvalisus oli muidugi see funktsioon, mida ma k\u00f5ige rohkem igatsesin. Aga ma olin \u00fcllatunud, kui palju v\u00e4iksemaid asju muutus minu jaoks loomulikuks: nimelised parameetrid, omadused getterite ja setterite asemel, \"==\" kui v\u00f5rdsus ja \"===\" kui referentsiaalne v\u00f5rdsus, kvalifitseeritud \"this\", laiendusfunktsioonid, implicit singulaarsed lambda parameetrid, \"_\" kasutamata lambda parameetrite jaoks, <a href=\"https:\/\/thecodest.co\/et\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">andmed<\/a> klassid, scope-funktsioonid, muud Kotlini stdlib-funktsioonid, operaatorid ja palju muud. Ja kuidas see k\u00f5ik kenasti kokku sobib. V\u00f5rreldes sellega tundus Java... primitiivne.<\/p>\n\n\n\n<p>See tundus tegelikult nii halb, et hakkasin kaaluma Kotlinile \u00fcleminekut \u00fcldse. Teoreetiliselt on see Java'ga t\u00e4ielikult koostalitlusv\u00f5imeline, saab lihtsalt Kotlini toe olemasolevasse projekti lisada ja hakata uusi klasse kirjutama. Kotlini pool oskab Java'ga \"r\u00e4\u00e4kida\" ja Java pool ei tea isegi, et ta \"r\u00e4\u00e4gib\" teise keelega. Ja p\u00e4rast bytecode'iks kompileerimist ei tee see JVMile tegelikult mingit vahet.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/calendly.com\/the-codest-java-consulting\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/meeting_java_expert.png\" alt=\"Tutvuge Java eksperdiga\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Reaalsuse kontroll<\/h2>\n\n\n\n<p>Mida te siis ootate? Kui keel on nii hea, kui te \u00fctlete, siis kasutage seda! V\u00f5ib-olla mitte olemasolevates projektides k\u00fcll, ma tean, et see peaks olema koostalitlusv\u00f5imeline, aga kahe erineva keele segamine niimoodi k\u00f5lab koledal kombel.<\/p>\n\n\n\n<p>Ok, nii et uute moodulite jaoks - Kotlin see on. V\u00f5i on see? Te t\u00f6\u00f6tate <a href=\"https:\/\/thecodest.co\/et\/blog\/how-to-hire-the-best-outsourced-development-team-for-a-scaleup\/\">meeskond<\/a>. Te peate nendega konsulteerima ja neid veenma selle uue keele suursugususes. Mida? See ei meeldi neile? K\u00f5lab nii, et nad lihtsalt ei taha selle \u00f5ppimiseks vaeva n\u00e4ha. Sa ei saa neid k\u00fcll s\u00fc\u00fcdistada, ka sina olid alguses skeptiline.<\/p>\n\n\n\n<p>Projektijuht! Jah! Ta m\u00f5istab kindlasti, kui suurt v\u00e4\u00e4rtust Kotlin meie meeskonnale annab. Oh, milline suursugusus tuleb!<br>-No<br>-Oota, miks?<br>-Meeskond ei tea seda.<br>-Nad \u00f5pivad!<br>-Nad ei taha \u00f5ppida.<br>-Te saate neid teha!<br>-Nad ei pea \u00f5ppima.<br>-See on k\u00fcll t\u00f5si, aga m\u00f5tle v\u00f5imaluste peale!<br>-Ja, mis siis, kui sa m\u00f5tled k\u00f5igepealt probleemidele.<\/p>\n\n\n\n<p>Legend \u00fctleb, et on olemas projekt. Projekt, mis on suur ja keeruline, kuid igas osas kenasti kirjutatud. Projekt, kus k\u00f5ik arendajad on kasutatud lahenduste osas \u00fchel meelel. Kus uued funktsionaalsused lihtsalt voolavad sujuvalt programmeerijate klaviatuurilt. Kus vigu on harva ja neid on lihtne parandada.<\/p>\n\n\n\n<p>Kas olete n\u00e4inud sellist projekti? Ma ei ole. M\u00f5ni oli k\u00fcll l\u00e4hedal, kuid enamik neist on suur p\u00e4randkoodi segadus. Ja kui nad seda ei ole, siis t\u00f5en\u00e4oliselt muutuvad nad selleks mingil hetkel tulevikus. N\u00fc\u00fcd kujutage ette, et visake sinna juurde veel \u00fcks keel. See toob kaasa uusi v\u00f5imalusi vigade tegemiseks. See n\u00f5uab, et arendajad teaksid, mida nad teevad. See on pehmelt \u00f6eldes risk.<\/p>\n\n\n\n<p>N\u00fc\u00fcd kaaluge ka <a href=\"https:\/\/thecodest.co\/et\/blog\/hire-vue-js-developers\/\">arendaja<\/a> rotatsioon. Inimesed tulevad ja l\u00e4hevad. Kas te sunnite iga uut arendajat \u00f5ppima t\u00e4iesti uut keelt? Ei, see on ebaproduktiivne. Kas te v\u00f5tate Kotlini arendajaid \u00fcldse t\u00f6\u00f6le? Edu sellega, hea Java arendaja palkamine on piisavalt raske.<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.allegro.tech\/2018\/05\/From-Java-to-Kotlin-and-Back-Again.html\">Inimesed on proovinud.<\/a> Pean \u00fctlema, et ma ei n\u00f5ustu enamiku selles artiklis esitatud v\u00e4idetega. Seal on m\u00f5ningast p\u00f5hjendatud kriitikat, kuid ma arvan, et nad ei kasutanud Kotlini piisavalt, et tegelikult m\u00f5ista \"Kotlini viisi\". Paljud kommenteerijad selle artikli all n\u00e4ivad arvavat sarnaselt.<\/p>\n\n\n\n<p>See ei ole siiski oluline. Vean kihla, et see juhtuks ka teie projektis. \"Proovitud, ei meeldinud\". Sa ei pane neid rohkem aega kulutama. Sa ei pane neid uuesti proovima. Te ei pane neid andma sellele veel \u00fcht v\u00f5imalust. Ja praktilisest vaatenurgast vaadatuna v\u00f5ib neil olla \u00f5igus. <strong>Java<\/strong> on lihtsalt nii populaarne, et millegi muu kasutamine JVMis tundub \u00fcleliigne.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Miks siis see artikkel?<\/h2>\n\n\n\n<p>Sa kulutasid just m\u00e4rkimisv\u00e4\u00e4rse aja artikli kirjutamisele, millel ei tundu olevat m\u00f5tet. Miks ma peaksin proovima keelt \u00f5ppida, kui te \u00fctlete, et see on niikuinii m\u00f5ttetu?<\/p>\n\n\n\n<p>Noh, ma ei arva, et see on m\u00f5ttetu. Ma arvan endiselt, et Kotlin on suurep\u00e4rane. Ma tahan seda ikka veel tegelikult kasutada (ja ma tegelikult kasutan seda oma eraprojektide jaoks). Kui ma saaksin, siis ma lihtsalt l\u00e4heksin sellele \u00fcle ja unustaksin Java piirangud. Aga praegune reaalsus \u00fctleb, et ma ei saa. Ja ma tahan proovida seda muuta.<\/p>\n\n\n\n<p>Minu kavatsus teile, lugupeetud lugeja, on v\u00e4hemalt kaaluda v\u00f5imalust tulla v\u00e4lja mugavast Java mugavustsoonist. Sest v\u00f5ib-olla, ainult v\u00f5ib-olla, armastad Kotlini sama palju kui mina. Ja kui te armastate, siis on veel \u00fcks Kotlini tundev arendaja rohkem. <a href=\"https:\/\/thecodest.co\/et\/dictionary\/what-is-the-size-of-your-potential-reachable-market\/\">turg<\/a>.<\/p>\n\n\n\n<p><strong>Loe edasi:<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/the-best-type-of-projects-for-java\">Parim projektit\u00fc\u00fcp Java jaoks<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/3-common-challenges-of-software-product-development-for-startups\">3 \u00fchist v\u00e4ljakutset tarkvara tootearenduse alustavatele ettev\u00f5tetele<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/the-right-way-to-find-top-java-developers\">\u00d5ige viis tipp Java arendajate leidmiseks<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Kui te olete Java-arendaja, on teil t\u00f5en\u00e4oliselt v\u00e4hemalt m\u00f5ningane kogemus teiste programmeerimiskeeltega.  M\u00f5ned meist alustasid oma programmeerimisseiklust m\u00f5ne muu keelega, nagu C\/C++, JavaScript, C#, Python v\u00f5i v\u00f5ib-olla isegi midagi sellist nagu Pascal v\u00f5i Basic. M\u00f5ned aga alustasid Java'ga ja lihtsalt ei p\u00f6\u00f6ranud teistele keeltele kunagi liiga palju t\u00e4helepanu, m\u00e4letades ebameeldivalt seda \u00fchte korda, kui neil oli vaja kiiresti midagi frontendipoolselt kodeerida.<\/p>","protected":false},"author":2,"featured_media":3914,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-3913","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Why Kotlin is awesome, but you will stay with Java anyway - The Codest<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/et\/blogi\/miks-kotlin-on-vinge-aga-sa-jaad-ikkagi-java-juurde-1\/\" \/>\n<meta property=\"og:locale\" content=\"et_EE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Why Kotlin is awesome, but you will stay with Java anyway\" \/>\n<meta property=\"og:description\" content=\"If you are a Java developer, chances are you have at least some experience with other programming languages. Some of us started their programming adventure with another language like C\/C++, JavaScript, C#, Python or maybe even something like Pascal or Basic. Some, though, started with Java and just never paid too much attention to other languages, unpleasantly remembering the one time when they needed to quickly code something on the frontend side.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecodest.co\/et\/blogi\/miks-kotlin-on-vinge-aga-sa-jaad-ikkagi-java-juurde-1\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codest\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-18T10:39:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-28T14:07:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"540\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"thecodest\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"thecodest\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minut\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/\"},\"author\":{\"name\":\"thecodest\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"headline\":\"Why Kotlin is awesome, but you will stay with Java anyway\",\"datePublished\":\"2022-05-18T10:39:02+00:00\",\"dateModified\":\"2026-04-28T14:07:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/\"},\"wordCount\":1973,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"et\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/\",\"name\":\"Why Kotlin is awesome, but you will stay with Java anyway - The Codest\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png\",\"datePublished\":\"2022-05-18T10:39:02+00:00\",\"dateModified\":\"2026-04-28T14:07:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/#breadcrumb\"},\"inLanguage\":\"et\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"et\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png\",\"width\":960,\"height\":540},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thecodest.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Why Kotlin is awesome, but you will stay with Java anyway\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"name\":\"The Codest\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thecodest.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"et\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"et\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"width\":144,\"height\":36,\"caption\":\"The Codest\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/pl.linkedin.com\\\/company\\\/codest\",\"https:\\\/\\\/clutch.co\\\/profile\\\/codest\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\",\"name\":\"thecodest\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"et\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"caption\":\"thecodest\"},\"url\":\"https:\\\/\\\/thecodest.co\\\/et\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Miks Kotlin on vinge, aga sa j\u00e4\u00e4d ikkagi Java juurde - The Codest","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thecodest.co\/et\/blogi\/miks-kotlin-on-vinge-aga-sa-jaad-ikkagi-java-juurde-1\/","og_locale":"et_EE","og_type":"article","og_title":"Why Kotlin is awesome, but you will stay with Java anyway","og_description":"If you are a Java developer, chances are you have at least some experience with other programming languages. Some of us started their programming adventure with another language like C\/C++, JavaScript, C#, Python or maybe even something like Pascal or Basic. Some, though, started with Java and just never paid too much attention to other languages, unpleasantly remembering the one time when they needed to quickly code something on the frontend side.","og_url":"https:\/\/thecodest.co\/et\/blogi\/miks-kotlin-on-vinge-aga-sa-jaad-ikkagi-java-juurde-1\/","og_site_name":"The Codest","article_published_time":"2022-05-18T10:39:02+00:00","article_modified_time":"2026-04-28T14:07:11+00:00","og_image":[{"width":960,"height":540,"url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png","type":"image\/png"}],"author":"thecodest","twitter_card":"summary_large_image","twitter_misc":{"Written by":"thecodest","Est. reading time":"1 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/#article","isPartOf":{"@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/"},"author":{"name":"thecodest","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"headline":"Why Kotlin is awesome, but you will stay with Java anyway","datePublished":"2022-05-18T10:39:02+00:00","dateModified":"2026-04-28T14:07:11+00:00","mainEntityOfPage":{"@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/"},"wordCount":1973,"commentCount":0,"publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"image":{"@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png","articleSection":["Software Development"],"inLanguage":"et","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/","url":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/","name":"Miks Kotlin on vinge, aga sa j\u00e4\u00e4d ikkagi Java juurde - The Codest","isPartOf":{"@id":"https:\/\/thecodest.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/#primaryimage"},"image":{"@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png","datePublished":"2022-05-18T10:39:02+00:00","dateModified":"2026-04-28T14:07:11+00:00","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/#breadcrumb"},"inLanguage":"et","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/"]}]},{"@type":"ImageObject","inLanguage":"et","@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/#primaryimage","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png","width":960,"height":540},{"@type":"BreadcrumbList","@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thecodest.co\/"},{"@type":"ListItem","position":2,"name":"Why Kotlin is awesome, but you will stay with Java anyway"}]},{"@type":"WebSite","@id":"https:\/\/thecodest.co\/#website","url":"https:\/\/thecodest.co\/","name":"The Codest","description":"","publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thecodest.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"et"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"et","@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","width":144,"height":36,"caption":"The Codest"},"image":{"@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/pl.linkedin.com\/company\/codest","https:\/\/clutch.co\/profile\/codest"]},{"@type":"Person","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76","name":"thecodest","image":{"@type":"ImageObject","inLanguage":"et","@id":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","caption":"thecodest"},"url":"https:\/\/thecodest.co\/et\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts\/3913","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/comments?post=3913"}],"version-history":[{"count":8,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts\/3913\/revisions"}],"predecessor-version":[{"id":8525,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts\/3913\/revisions\/8525"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/media\/3914"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/media?parent=3913"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/categories?post=3913"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/tags?post=3913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}