{"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":"miksi-kotlin-on-mahtava-mutta-pysyt-kuitenkin-javan-kanssa-1","status":"publish","type":"post","link":"https:\/\/thecodest.co\/fi\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/","title":{"rendered":"Miksi Kotlin on mahtava, mutta pysyt silti Javassa?"},"content":{"rendered":"<p>Riippumatta siit\u00e4, mihin ryhm\u00e4\u00e4n kuulut, on olemassa syy, miksi pysyt mukana <strong><a href=\"https:\/\/thecodest.co\/fi\/blog\/find-the-right-java-developer-now\/\">Java<\/a><\/strong>. Enk\u00e4 syyt\u00e4 sinua. Se on luultavasti kehittynein, yleisin ja t\u00e4ydellisin ekosysteemi koko maailmassa. <a href=\"https:\/\/thecodest.co\/fi\/dictionary\/what-is-enterprise-hybrid-cloud\/\">yritys<\/a> maailmaan. Kieless\u00e4 on mukavasti r\u00e4\u00e4t\u00e4l\u00f6ityj\u00e4 valmiuksia, jotka ovat jossain oikealla alueella liiallisen ja liian v\u00e4h\u00e4isen v\u00e4lill\u00e4. Uusia ominaisuuksia lis\u00e4t\u00e4\u00e4n hitaasti mutta tasaisesti, jolloin kieli pysyy p\u00e4\u00e4osin ohjelmointimaailman uusien suuntausten tasalla.<\/p>\n\n\n\n<p>Tied\u00e4tk\u00f6 <a href=\"https:\/\/projectlombok.org\">Lombok<\/a> kuitenkin? Jos et tunne, suosittelen kokeilemaan. Jos pid\u00e4t siit\u00e4, minulla on jotain juuri sinulle kokeiltavaa. Kokonaan uusi kieli, joka ominaisuuksiltaan tekee Lombokista tarpeettoman. Sen nimi on <b>Kotlin<\/b>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kotlin? Tarkoitatko Androidin kielt\u00e4?<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/pClXBLD.jpg\" alt=\"No kyll\u00e4, mutta itse asiassa ei\"\/><\/figure>\n\n\n\n<p>Google itse siunasi Kotlinin Androidissa niin, ett\u00e4 siit\u00e4 tuli alustan de facto-kieli. En keskity t\u00e4ss\u00e4 artikkelissa t\u00e4h\u00e4n, mutta Android on todellakin paikka, jossa tapasin Kotlinin ensimm\u00e4ist\u00e4 kertaa.<\/p>\n\n\n\n<p>Ty\u00f6kaverini oli kehitt\u00e4m\u00e4ss\u00e4 sovellusta silloiselle nykyiselle <a href=\"https:\/\/thecodest.co\/fi\/dictionary\/why-do-projects-fail\/\">projekti<\/a>yksin. M\u00e4\u00e4r\u00e4ajat l\u00e4hestyiv\u00e4t kuitenkin nopeasti, joten minut valtuutettiin auttamaan h\u00e4nt\u00e4 niiden t\u00e4ytt\u00e4misess\u00e4. Siirryn nyt ajassa taaksep\u00e4in tuohon hetkeen. Ja... YUCK! Miksi h\u00e4n k\u00e4ytt\u00e4\u00e4 jotain outoa kielt\u00e4, joka kuulostaa kuin <a href=\"https:\/\/www.ketchupy.pl\/images\/3\/c\/9\/4\/5\/3c9453c5b720f810c293211d77449d9395f09944-product-front-1.png\">ketsuppimerkki<\/a>!? Se n\u00e4ytt\u00e4\u00e4 kamalalta!<\/p>\n\n\n\n<p>Miksi ennen jokaista funktiota kirjoitetaan \"fun\"? Ihan kuin en jo tiet\u00e4isi, mik\u00e4 se on. Lis\u00e4ksi minulla on jo <em>hauskaa<\/em> kanssa <strong>Java<\/strong> joka tapauksessa. Ja miss\u00e4 on paluutyyppi? Lopussa? Oletko hullu? Mit\u00e4 tuo on, osoitatko jotain funktiolle? Siin\u00e4 ei ole mit\u00e4\u00e4n j\u00e4rke\u00e4! Kaikki n\u00e4ytt\u00e4\u00e4 vain silt\u00e4, ett\u00e4 <b>Java lis\u00e4vaiheilla!<\/b> Odota, mihin luokkaan t\u00e4m\u00e4 metodi kuuluu? Minne piilotit sen, senkin ketsuppi-\u00e4\u00e4ninen, <strong>Java<\/strong> j\u00e4ljittelev\u00e4 tekosyy ohjelmointikielelle? Voi ei. Voi ei, et tehnyt. ONKO TUO GLOBAALI FUNKTIO? Nyt riitt\u00e4\u00e4, olen valmis, soitan poliisille.<\/p>\n\n\n\n<p>Spoilerivaroitus: en soittanut lainvalvontaviranomaisille. Halusinpa tai en, minun oli mukautettava Java-keskeist\u00e4 ajattelutapaani toisen kielen huomioon ottamiseksi. Eih\u00e4n se kuitenkaan ole niin paha, eik\u00f6 niin? Se on edelleen JVM-kieli, varmasti se on vain eri <strong>Java<\/strong>. Ehk\u00e4 jopa hienoilla lis\u00e4ominaisuuksilla? Vastahakoisesti aloin ty\u00f6st\u00e4\u00e4 projektia.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Java lis\u00e4vaiheiden kanssa<\/h2>\n\n\n\n<p><em>Jos Java on niin loistava, miksi Java 2:ta ei ole olemassa?<\/em> Vitsit sikseen, Niin ajattelin itsekseni. Teeskentelen, ett\u00e4 Kotlin on Java 2. Uusi syntaksi ja kaikki, mutta minun on vain opittava tarpeeksi, jotta saan projektin valmiiksi. Voi pojat, olin v\u00e4\u00e4r\u00e4ss\u00e4.<\/p>\n\n\n\n<p>Kokeiltuani sit\u00e4 vain p\u00e4iv\u00e4n tai kaksi, tajusin nopeasti, ett\u00e4 sek\u00e4 Kotlin ett\u00e4 <strong>Java<\/strong> eiv\u00e4t ole niin joustavia. Jos niit\u00e4 yritt\u00e4\u00e4 taivuttaa toisiaan kohti, toinen niist\u00e4 katkeaa v\u00e4ist\u00e4m\u00e4tt\u00e4 kahtia. Tuli selv\u00e4ksi, ett\u00e4 Kotlin on asia erikseen, ja se, ett\u00e4 se toimii JVM:ll\u00e4, ei merkitse ohjelmoijan n\u00e4k\u00f6kulmasta juuri mit\u00e4\u00e4n. (Sivuhuomautuksena mainittakoon, ett\u00e4 se voi my\u00f6s transpileerata <a href=\"https:\/\/thecodest.co\/fi\/blog\/hire-javascript-developer\/\">JavaScript<\/a>, tai k\u00e4\u00e4nt\u00e4\u00e4 natiiviksi bin\u00e4\u00e4riksi).<\/p>\n\n\n\n<p>Suunnitelma B sitten. Itse asiassa tutustu kieleen. Jos lukee dokumentteja ensimm\u00e4ist\u00e4 kertaa, kokeneen Java-ohjelmoijan selk\u00e4rangan l\u00e4pi tulee v\u00e4ristyksi\u00e4. Esimerkiksi:<br>- aiemmin mainittu yl\u00e4tason eli globaali konteksti<br>- lopussa m\u00e4\u00e4ritetyt parametri- ja palautustyypit<\/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>funktiorunko voi olla lauseke (tasa-arvomerkin avulla).<\/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-lause voi antaa tuloksen<\/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, minun t\u00e4ytyy vain tottua siihen. Vain erilainen syntaksi. Mit\u00e4 muuta sinulla on tarjota, herra 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>Okei, eroon p\u00e4\u00e4seminen <code>if (arvo == null)<\/code>, piste sinulle. Mit\u00e4 muuta sinulla 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(\"linked\")\n vaihtoehto -&gt; print(\"vaihtoehto\")\n list.size &gt; 50 -&gt; print(\"iso\")\n else -&gt; print(\"muu\")\n }<\/code><\/code><\/pre>\n\n\n\n<p>Hmm kiva, voisi olla k\u00e4tev\u00e4\u00e4 v\u00e4ltt\u00e4\u00e4, jos muut blokkaavat, mutta vaikuttaa silti kikkailulta.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code> object SingularObject: Counter() {\n var a = 14\n fun test() = if (a &gt; 10) \"enemm\u00e4n\" else \"v\u00e4hemm\u00e4n\"\n }<\/code><\/code><\/pre>\n\n\n\n<p>Okei, tuo n\u00e4ytt\u00e4\u00e4 todella hy\u00f6dylliselt\u00e4, pid\u00e4n siit\u00e4! Toisaalta voin luoda singletonin my\u00f6s Javassa. Ehk\u00e4 se ei ole n\u00e4in tyylik\u00e4s, mutta se ei ole mit\u00e4\u00e4n uutta. Onko sinulla \u00e4ssi\u00e4 hihassa? Todellisia kovia kamaa?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code> var s: String = null \/\/ ei k\u00e4\u00e4nny, ei-null-tyyppi.<\/code><\/code><\/pre>\n\n\n\n<p>Odota... mit\u00e4?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/Tony_Hoare#Apologies_and_retractions\">Miljardin dollarin virhe<\/a><\/h2>\n\n\n\n<p>Kuvittele koodipohja, jossa sinun ei tarvitse huolehtia nollaturvallisuudesta. Kuvittele, ett\u00e4 pid\u00e4t itsest\u00e4\u00e4nselvyyten\u00e4 sit\u00e4, ett\u00e4 jokainen viittaus todella sis\u00e4lt\u00e4\u00e4 jotain merkityksellist\u00e4. Kuvittele olevasi varma, ett\u00e4 kaikki nollaan liittyv\u00e4t ongelmat on hoidettu etuk\u00e4teen.<br>Kuvittele en\u00e4\u00e4. Kotlinissa kaikki viittaukset eiv\u00e4t ole oletusarvoisesti nollattavissa. Jos haluat tehd\u00e4 siit\u00e4 nollattavissa olevan, sinun t\u00e4ytyy tehd\u00e4 <u>tietoisesti<\/u> tehd\u00e4 t\u00e4m\u00e4 p\u00e4\u00e4t\u00f6s, ja <u>nimenomaisesti<\/u> ilmoittaa sen <a href=\"https:\/\/thecodest.co\/fi\/dictionary\/what-is-code-refactoring\/\">koodi<\/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>Ymm\u00e4rr\u00e4n, ett\u00e4 suhtaudutte ehk\u00e4 ep\u00e4ilev\u00e4sti koko ajatukseen t\u00e4ss\u00e4 vaiheessa. Olet tottunut mit\u00e4t\u00f6it\u00e4viin viittauksiin. Pid\u00e4t sen takaraivossasi koodatessasi. Olet oppinut, miss\u00e4 sinun on oltava varovainen. Ajatukseni ovat t\u00e4sm\u00e4lleen samat. Tulossa <strong>Java<\/strong>, se tuntui aluksi todella oudolta. Kuten, mit\u00e4 j\u00e4rke\u00e4 siin\u00e4 on? Se ei taikomalla saa kaikkia asiaan liittyvi\u00e4 ongelmia katoamaan. Minun t\u00e4ytyy vain lis\u00e4t\u00e4 \"?\" joka paikkaan, kuulostaa ty\u00f6l\u00e4\u00e4lt\u00e4.<\/p>\n\n\n\n<p>Mutta p\u00e4\u00e4tin sukeltaa syv\u00e4lle kieleen. Tehd\u00e4\u00e4n se sinun tavallasi, herra. <strong>Kotlin<\/strong>. Aloin pyrki\u00e4 poistamaan niin monta nollattavaa muuttujaa, kentt\u00e4\u00e4 ja parametria kuin mahdollista. Askel askeleelta opin k\u00e4ytt\u00e4m\u00e4\u00e4n kielen ominaisuuksia, jotka helpottivat nollattavien viittausten poistamista, esimerkiksi safe call \"?.\" -operaattoria, elvis \"?:\" -operaattoria, delegoituja ominaisuuksia, let-metodia ja paljon muuta.<\/p>\n\n\n\n<p>Ajan my\u00f6t\u00e4 sain aikaan sen, ett\u00e4 jotkut luokat sis\u00e4lsiv\u00e4t vain kentti\u00e4 ja metodiparametreja, jotka eiv\u00e4t olleet nollia. Periaatteessa tiesin, ett\u00e4 jos luokka oli onnistuneesti instantioitu, metodien nollattavuus voitiin melkein unohtaa. Se oli autuaaksi tekev\u00e4\u00e4. Ajan my\u00f6t\u00e4 arvostin t\u00e4t\u00e4 yh\u00e4 enemm\u00e4n. Lopulta en kuitenkaan pit\u00e4nyt sit\u00e4 tappavana ominaisuutena, <strong>Java<\/strong> tuntui yh\u00e4 kodilta. Kunnes...<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Paluu<\/h2>\n\n\n\n<p>Hanke l\u00e4hestyi loppuaan. Tutustuin Kotliniin yh\u00e4 paremmin, ja t\u00e4m\u00e4n tiedon my\u00f6t\u00e4 koodista tuli yh\u00e4 siistimp\u00e4\u00e4, luettavampaa ja tiiviimp\u00e4\u00e4. Parannukset saattoi n\u00e4hd\u00e4 paljain silmin commit-historiassa. Aika on kuitenkin vihdoin koittanut. Kun uudesta kielest\u00e4 j\u00e4i yll\u00e4tt\u00e4v\u00e4nkin mukavia muistoja, oli aika sanoa hyv\u00e4stit ja palata takaisin suloiseen mukavuusalueeseen <strong>Java<\/strong>. Tai niin min\u00e4 luulin.<\/p>\n\n\n\n<p>Tied\u00e4tk\u00f6 sen tunteen, kun alat arvostaa jotain juuri sill\u00e4 hetkell\u00e4, kun se on poissa? Kun et tajua, miten paljon luotat johonkin, ennen kuin et voi en\u00e4\u00e4 k\u00e4ytt\u00e4\u00e4 sit\u00e4? Se oli paras esimerkki tuosta tunteesta, jonka olen luultavasti koskaan el\u00e4m\u00e4ss\u00e4ni kokenut.<\/p>\n\n\n\n<p>Kun palasin kirjoittamaan koodia <strong>Java<\/strong>, olin melkein kauhuissani joidenkin ominaisuuksien puuttumisesta. Aivoni ik\u00e4\u00e4n kuin olisivat alitajuisesti ja virheellisesti j\u00e4lkiasentaneet Kotlinin ominaisuuksia Javaan. Koin tilanteita, joissa aloin itse asiassa toteuttaa jotain, mutta tajusin, ettei se toimi t\u00e4ll\u00e4 kielell\u00e4. Parhaassa tapauksessa voisin kirjoittaa sen Kotlinin tapaan, mutta siit\u00e4 tulisi tilaa viev\u00e4, lukukelvoton ja\/tai se vaatisi liikaa boilerplatea.<\/p>\n\n\n\n<p>Nollaturvallisuus oli tietenkin ominaisuus, jota kaipasin eniten. Yll\u00e4tyin kuitenkin siit\u00e4, kuinka monista pienemmist\u00e4 asioista tuli minulle luonnollisia: nimetyt parametrit, ominaisuudet getterien ja setterien sijasta, \"==\" yht\u00e4l\u00e4isyyksin\u00e4 ja \"===\" viittauksellisena yht\u00e4l\u00e4isyyten\u00e4, kvalifioitu \"this\", laajennusfunktiot, implisiittinen singulaarinen lambda-parametri, \"_\" k\u00e4ytt\u00e4m\u00e4tt\u00f6mille lambda-parametreille, <a href=\"https:\/\/thecodest.co\/fi\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">tiedot<\/a> luokat, scope-funktiot, muut Kotlinin stdlib-funktiot, operaattorit ja paljon muuta. Ja se, miten kaikki sopii hienosti yhteen. Vertailun vuoksi Java tuntui... primitiiviselt\u00e4.<\/p>\n\n\n\n<p>Se tuntui itse asiassa niin pahalta, ett\u00e4 aloin harkita Kotliniin siirtymist\u00e4 kokonaan. Teoriassa se on t\u00e4ysin yhteensopiva Javan kanssa, voit vain lis\u00e4t\u00e4 Kotlin-tuen olemassa olevaan projektiin ja alkaa kirjoittaa uusia luokkia. Kotlinin puoli osaa \"puhua\" Javalle, eik\u00e4 Javan puoli edes tied\u00e4, ett\u00e4 se \"puhuu\" toisen kielen kanssa. Ja bytecode-k\u00e4\u00e4nt\u00e4misen j\u00e4lkeen JVM:ll\u00e4 ei ole oikeastaan mit\u00e4\u00e4n merkityst\u00e4.<\/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=\"Tapaa Java-asiantuntija\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Todellisuuden tarkistus<\/h2>\n\n\n\n<p>Joten mit\u00e4 sin\u00e4 odotat? Jos kieli on niin hyv\u00e4 kuin sanot, k\u00e4yt\u00e4 sit\u00e4! Ehk\u00e4 ei kuitenkaan nykyisiss\u00e4 projekteissa, sill\u00e4 tied\u00e4n, ett\u00e4 sen pit\u00e4isi olla yhteentoimiva, mutta kahden eri kielen sekoittaminen t\u00e4ll\u00e4 tavalla kuulostaa rumalta.<\/p>\n\n\n\n<p>Okei, uusia moduuleja varten - Kotlin se on. Vai onko? Ty\u00f6skentelet <a href=\"https:\/\/thecodest.co\/fi\/blog\/how-to-hire-the-best-outsourced-development-team-for-a-scaleup\/\">joukkue<\/a>. Sinun on kuultava heit\u00e4 ja vakuutettava heid\u00e4t t\u00e4m\u00e4n uuden kielen suuruudesta. Mit\u00e4? Eiv\u00e4tk\u00f6 he pid\u00e4 siit\u00e4? Kuulostaa silt\u00e4, etteiv\u00e4t he vain halua n\u00e4hd\u00e4 vaivaa sen oppimiseksi. Et voi syytt\u00e4\u00e4 heit\u00e4, sin\u00e4kin olit aluksi ep\u00e4ilev\u00e4inen.<\/p>\n\n\n\n<p>Projektip\u00e4\u00e4llikk\u00f6! Kyll\u00e4! H\u00e4n ymm\u00e4rt\u00e4\u00e4 varmasti, miten paljon hy\u00f6ty\u00e4 Kotlin tuo tiimillemme. Voi sit\u00e4 mahtavuutta, joka tulee!<br>-No<br>-Odota, miksi?<br>-Joukkue ei tied\u00e4 sit\u00e4.<br>-He oppivat!<br>-He eiv\u00e4t halua oppia.<br>-Voit tehd\u00e4 niit\u00e4!<br>-Heid\u00e4n ei tarvitse oppia.<br>-Se on totta, mutta ajattele mahdollisuuksia!<br>-Joo, ent\u00e4 jos ajattelisit ensin ongelmia.<\/p>\n\n\n\n<p>Legendan mukaan on olemassa hanke. Projekti, joka on suuri ja monimutkainen, mutta joka on kirjoitettu hienosti joka osaan. Projekti, jossa kaikki kehitt\u00e4j\u00e4t ovat yksimielisi\u00e4 k\u00e4ytetyist\u00e4 ratkaisuista. Jossa uudet toiminnallisuudet vain virtaavat sujuvasti ohjelmoijien n\u00e4pp\u00e4imist\u00f6lt\u00e4. Jossa virheet ovat harvinaisia ja helppo korjata.<\/p>\n\n\n\n<p>Oletko n\u00e4hnyt t\u00e4llaista hanketta? En ole. Jotkin olivat l\u00e4hell\u00e4, mutta useimmat niist\u00e4 ovat suurta perint\u00f6koodin sekasotkua. Ja jos ne eiv\u00e4t ole, niist\u00e4 tulee todenn\u00e4k\u00f6isesti sellainen jossain vaiheessa tulevaisuudessa. Kuvittele nyt, ett\u00e4 sekaan lis\u00e4t\u00e4\u00e4n toinen kieli. Se tuo uusia tapoja tehd\u00e4 virheit\u00e4. Se edellytt\u00e4\u00e4, ett\u00e4 kehitt\u00e4j\u00e4t tiet\u00e4v\u00e4t, mit\u00e4 he tekev\u00e4t. Se on v\u00e4hint\u00e4\u00e4nkin riski.<\/p>\n\n\n\n<p>Pohdi nyt my\u00f6s <a href=\"https:\/\/thecodest.co\/fi\/blog\/hire-vue-js-developers\/\">kehitt\u00e4j\u00e4<\/a> kierto. Ihmisi\u00e4 tulee ja menee. Pakotatko jokaisen uuden kehitt\u00e4j\u00e4n opettelemaan kokonaan uuden kielen? Ei, se on haitallista. Palkkaatko Kotlin-kehitt\u00e4ji\u00e4 ylip\u00e4\u00e4t\u00e4\u00e4n? Onnea sen kanssa, hyv\u00e4n Java-kehitt\u00e4j\u00e4n palkkaaminen on tarpeeksi vaikeaa.<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.allegro.tech\/2018\/05\/From-Java-to-Kotlin-and-Back-Again.html\">Ihmiset ovat yritt\u00e4neet.<\/a> Minun on sanottava, ett\u00e4 en ole samaa mielt\u00e4 useimmista artikkelin v\u00e4itteist\u00e4. Siin\u00e4 on jonkin verran perusteltua kritiikki\u00e4, mutta mielest\u00e4ni he eiv\u00e4t k\u00e4ytt\u00e4neet Kotlinia tarpeeksi ymm\u00e4rt\u00e4\u00e4kseen \"Kotlinin tapaa\". Monet kommentoijat artikkelin alla n\u00e4ytt\u00e4v\u00e4t ajattelevan samalla tavalla.<\/p>\n\n\n\n<p>Sill\u00e4 ei kuitenkaan ole v\u00e4li\u00e4. Veikkaan, ett\u00e4 n\u00e4in tapahtuisi my\u00f6s sinun projektissasi. \"Kokeilin sit\u00e4, en pit\u00e4nyt siit\u00e4\". Et saa heit\u00e4 k\u00e4ytt\u00e4m\u00e4\u00e4n siihen enemm\u00e4n aikaa. Et saa heit\u00e4 yritt\u00e4m\u00e4\u00e4n uudelleen. Et saa heit\u00e4 antamaan sille uutta mahdollisuutta. Ja k\u00e4yt\u00e4nn\u00f6n n\u00e4k\u00f6kulmasta katsottuna he saattavat olla oikeassa. <strong>Java<\/strong> on vain niin suosittu, ett\u00e4 mink\u00e4\u00e4n muun k\u00e4ytt\u00e4minen JVM:ss\u00e4 tuntuu tarpeettomalta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Miksi sitten t\u00e4m\u00e4 artikkeli?<\/h2>\n\n\n\n<p>K\u00e4ytit juuri huomattavan paljon aikaa kirjoittaessasi artikkelia, jolla ei n\u00e4yt\u00e4 olevan mit\u00e4\u00e4n pointtia. Miksi yritt\u00e4isin opetella kielt\u00e4, jos se on mielest\u00e4si joka tapauksessa turhaa?<\/p>\n\n\n\n<p>Minusta se ei ole turhaa. Olen edelleen sit\u00e4 mielt\u00e4, ett\u00e4 Kotlin on loistava. Haluan edelleen k\u00e4ytt\u00e4\u00e4 sit\u00e4 (ja k\u00e4yt\u00e4nkin sit\u00e4 yksityisiss\u00e4 projekteissani). Jos voisin, siirtyisin siihen ja unohtaisin Javan rajoitukset. Mutta nykyinen todellisuus sanoo, etten voi. Ja haluan yritt\u00e4\u00e4 muuttaa sit\u00e4.<\/p>\n\n\n\n<p>Tarkoitukseni on, ett\u00e4 sin\u00e4, rakas lukija, ainakin harkitset mahdollisuutta tulla ulos mukavalta Java-mukavuusalueelta. Koska ehk\u00e4, vain ehk\u00e4, sin\u00e4 rakastat Kotlinia yht\u00e4 paljon kuin min\u00e4. Ja jos rakastat, yksi Kotlinia tunteva kehitt\u00e4j\u00e4 lis\u00e4\u00e4. <a href=\"https:\/\/thecodest.co\/fi\/dictionary\/what-is-the-size-of-your-potential-reachable-market\/\">markkinat<\/a>.<\/p>\n\n\n\n<p><strong>Lue lis\u00e4\u00e4:<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/the-best-type-of-projects-for-java\">Parhaat projektityypit Javalle<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/3-common-challenges-of-software-product-development-for-startups\">3 yleist\u00e4 haastetta startup-yritysten ohjelmistotuotekehityksess\u00e4<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/the-right-way-to-find-top-java-developers\">Oikea tapa l\u00f6yt\u00e4\u00e4 parhaat Java-kehitt\u00e4j\u00e4t<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Jos olet Java-kehitt\u00e4j\u00e4, sinulla on todenn\u00e4k\u00f6isesti ainakin jonkin verran kokemusta muista ohjelmointikielist\u00e4.  Jotkut meist\u00e4 aloittivat ohjelmointiseikkailunsa jollakin muulla kielell\u00e4, kuten C\/C++, JavaScript, C#, Python tai ehk\u00e4 jopa Pascalilla tai Basicilla. Jotkut kuitenkin aloittivat Javalla eiv\u00e4tk\u00e4 vain koskaan kiinnitt\u00e4neet kovinkaan paljon huomiota muihin kieliin, muistellen ik\u00e4v\u00e4sti sit\u00e4 yht\u00e4 kertaa, kun heid\u00e4n piti nopeasti koodata jotain frontend-puolella.<\/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\/fi\/blogi\/miksi-kotlin-on-mahtava-mutta-pysyt-kuitenkin-javan-kanssa-1\/\" \/>\n<meta property=\"og:locale\" content=\"fi_FI\" \/>\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\/fi\/blogi\/miksi-kotlin-on-mahtava-mutta-pysyt-kuitenkin-javan-kanssa-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 minuutti\" \/>\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\":\"fi\",\"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\":\"fi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fi\",\"@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\":\"fi\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fi\",\"@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\":\"fi\",\"@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\\\/fi\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Miksi Kotlin on mahtava, mutta pysyt kuitenkin Javassa - 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\/fi\/blogi\/miksi-kotlin-on-mahtava-mutta-pysyt-kuitenkin-javan-kanssa-1\/","og_locale":"fi_FI","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\/fi\/blogi\/miksi-kotlin-on-mahtava-mutta-pysyt-kuitenkin-javan-kanssa-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 minuutti"},"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":"fi","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":"Miksi Kotlin on mahtava, mutta pysyt kuitenkin Javassa - 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":"fi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/"]}]},{"@type":"ImageObject","inLanguage":"fi","@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":"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":"fi"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"fi","@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":"fi","@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\/fi\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/posts\/3913","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/comments?post=3913"}],"version-history":[{"count":8,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/posts\/3913\/revisions"}],"predecessor-version":[{"id":8525,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/posts\/3913\/revisions\/8525"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/media\/3914"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/media?parent=3913"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/categories?post=3913"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/fi\/wp-json\/wp\/v2\/tags?post=3913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}