{"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":"dlaczego-kotlin-jest-swietny-ale-i-tak-pozostaniesz-przy-javie-1","status":"publish","type":"post","link":"https:\/\/thecodest.co\/pl\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/","title":{"rendered":"Dlaczego Kotlin jest \u015bwietny, ale i tak pozostaniesz przy Javie?"},"content":{"rendered":"<p>Niezale\u017cnie od tego, do kt\u00f3rej grupy nale\u017cysz, istnieje pow\u00f3d, dla kt\u00f3rego pozostajesz z <strong><a href=\"https:\/\/thecodest.co\/pl\/blog\/find-the-right-java-developer-now\/\">Java<\/a><\/strong>. I nie obwiniam ci\u0119. Ma prawdopodobnie najbardziej rozwini\u0119ty, uniwersalny i kompletny ekosystem na ca\u0142ym \u015bwiecie. <a href=\"https:\/\/thecodest.co\/pl\/dictionary\/what-is-enterprise-hybrid-cloud\/\">przedsi\u0119biorstwo<\/a> \u015bwiat. J\u0119zyk ma \u0142adnie dopasowany zestaw mo\u017cliwo\u015bci, gdzie\u015b we w\u0142a\u015bciwej strefie mi\u0119dzy zbyt du\u017c\u0105 a zbyt ma\u0142\u0105 ilo\u015bci\u0105. A nowe funkcje s\u0105 powoli, ale stale dodawane, dzi\u0119ki czemu jest on w wi\u0119kszo\u015bci na bie\u017c\u0105co z nowszymi trendami w \u015bwiecie programowania.<\/p>\n\n\n\n<p>Czy wiesz <a href=\"https:\/\/projectlombok.org\">Lombok<\/a> ale? Je\u015bli nie, gor\u0105co polecam spr\u00f3bowa\u0107. Je\u015bli ci si\u0119 spodoba, to mam co\u015b specjalnie dla ciebie. Zupe\u0142nie nowy j\u0119zyk, kt\u00f3ry swoimi cechami sprawia, \u017ce Lombok staje si\u0119 przestarza\u0142y. Nazywa si\u0119 <b>Kotlin<\/b>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kotlin? Masz na my\u015bli j\u0119zyk Androida?<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/pClXBLD.jpg\" alt=\"C\u00f3\u017c, tak, ale w\u0142a\u015bciwie nie\"\/><\/figure>\n\n\n\n<p>Kotlin na Androida zosta\u0142 pob\u0142ogos\u0142awiony przez samo Google do tego stopnia, \u017ce sta\u0142 si\u0119 de facto j\u0119zykiem wyboru dla platformy. Nie na tym skupi\u0119 si\u0119 w tym artykule, ale Android jest rzeczywi\u015bcie miejscem, w kt\u00f3rym po raz pierwszy spotka\u0142em si\u0119 z Kotlinem.<\/p>\n\n\n\n<p>M\u00f3j kolega z pracy tworzy\u0142 aplikacj\u0119 dla \u00f3wczesnego <a href=\"https:\/\/thecodest.co\/pl\/dictionary\/why-do-projects-fail\/\">projekt<\/a>na w\u0142asn\u0105 r\u0119k\u0119. Terminy zbli\u017ca\u0142y si\u0119 jednak szybko, wi\u0119c zosta\u0142em oddelegowany, by pom\u00f3c mu ich dotrzyma\u0107. Przenios\u0119 si\u0119 teraz w czasie do tamtego momentu. Aaa i... YUCK! Dlaczego on u\u017cywa jakiego\u015b dziwnego j\u0119zyka, kt\u00f3ry brzmi jak <a href=\"https:\/\/www.ketchupy.pl\/images\/3\/c\/9\/4\/5\/3c9453c5b720f810c293211d77449d9395f09944-product-front-1.png\">marka ketchupu<\/a>!? Wygl\u0105da okropnie!<\/p>\n\n\n\n<p>Dlaczego przed ka\u017cd\u0105 funkcj\u0105 jest napisane \"fun\"? Jakbym jeszcze nie wiedzia\u0142, co to jest. Poza tym, ju\u017c mam <em>zabawa<\/em> z <strong>Java<\/strong> w ka\u017cdym razie. A gdzie jest typ zwracany? Na ko\u0144cu? Zwariowa\u0142e\u015b? Co to jest, przypisujesz co\u015b do funkcji? To nie ma \u017cadnego sensu! To wszystko wygl\u0105da jak <b>Java z dodatkowymi krokami!<\/b> Zaraz, gdzie jest klasa, do kt\u00f3rej nale\u017cy ta metoda? Gdzie j\u0105 schowa\u0142e\u015b ty keczupie, <strong>Java<\/strong> imituj\u0105c wym\u00f3wk\u0119 j\u0119zyka programowania? O nie. O nie, nie zrobi\u0142e\u015b tego. CZY TO JEST FUNKCJA GLOBALNA? To wszystko, sko\u0144czy\u0142em, dzwoni\u0119 na policj\u0119.<\/p>\n\n\n\n<p>Uwaga spoiler: nie wezwa\u0142em organ\u00f3w \u015bcigania. Czy mi si\u0119 to podoba\u0142o, czy nie, musia\u0142em dostosowa\u0107 sw\u00f3j spos\u00f3b my\u015blenia skoncentrowany na Javie, aby dostosowa\u0107 si\u0119 do innego j\u0119zyka. Nie b\u0119dzie jednak tak \u017ale, prawda? To wci\u0105\u017c j\u0119zyk JVM, z pewno\u015bci\u0105 jest to po prostu inny j\u0119zyk. <strong>Java<\/strong>. Mo\u017ce nawet z kilkoma fajnymi dodatkowymi funkcjami? Niech\u0119tnie zacz\u0105\u0142em pracowa\u0107 nad projektem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Java z dodatkowymi krokami<\/h2>\n\n\n\n<p><em>Je\u015bli Java jest taka \u015bwietna, dlaczego nie ma Javy 2?<\/em> \u017barty na bok, tak sobie pomy\u015bla\u0142em. B\u0119d\u0119 po prostu udawa\u0142, \u017ce Kotlin to Java 2. Nowa sk\u0142adnia i w og\u00f3le, ale musz\u0119 tylko nauczy\u0107 si\u0119 jej na tyle, by uko\u0144czy\u0107 projekt. Ale\u017c si\u0119 myli\u0142em.<\/p>\n\n\n\n<p>Po wypr\u00f3bowaniu go przez zaledwie dzie\u0144 lub dwa, szybko zda\u0142em sobie spraw\u0119, \u017ce zar\u00f3wno Kotlin, jak i <strong>Java<\/strong> nie s\u0105 a\u017c tak elastyczne. Pr\u00f3ba naginania ich do siebie nieuchronnie ko\u0144czy si\u0119 p\u0119kni\u0119ciem jednego z nich na p\u00f3\u0142. Sta\u0142o si\u0119 oczywiste, \u017ce Kotlin jest czym\u015b samym w sobie, a fakt, \u017ce dzia\u0142a na JVM, prawie nic nie znaczy z punktu widzenia programisty. (Na marginesie, mo\u017ce r\u00f3wnie\u017c transpilowa\u0107 do <a href=\"https:\/\/thecodest.co\/pl\/blog\/hire-javascript-developer\/\">JavaScript<\/a>lub zosta\u0107 skompilowana do natywnego pliku binarnego).<\/p>\n\n\n\n<p>W takim razie plan B. W\u0142a\u015bciwie, poznaj j\u0119zyk. Czytanie dokumentacji po raz pierwszy wywo\u0142uje dreszcze u do\u015bwiadczonego programisty Java. Na przyk\u0142ad:<br>- wspomniany wcze\u015bniej kontekst najwy\u017cszy, czyli globalny<br>- parametry i typy zwracane funkcji okre\u015blone na ko\u0144cu<\/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>cia\u0142o funkcji mo\u017ce by\u0107 wyra\u017ceniem (z u\u017cyciem znaku r\u00f3wno\u015bci)<\/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>instrukcja if mo\u017ce dostarczy\u0107 wynik<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code> val y = if (x == 1) {\n \"jeden\"\n } else if (x == 2) {\n \"dwa\"\n } else {\n \"inny\"\n }<\/code><\/code><\/pre>\n\n\n\n<p>Ok, po prostu musz\u0119 si\u0119 do tego przyzwyczai\u0107. Po prostu inna sk\u0142adnia. Co jeszcze masz do zaoferowania, panie Kotlin?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code> value?.method() \/\/ wykonaj, je\u015bli nie null<\/code><\/code><\/pre>\n\n\n\n<p>Ok, pozbycie si\u0119 <code>if (value == null)<\/code>punkt dla ciebie. Co jeszcze masz?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>fun check(list: List, alternative: Boolean) = when {\n list is LinkedList -&gt; print(\"linked\")\n alternative -&gt; print(\"alternative\")\n list.size &gt; 50 -&gt; print(\"big\")\n else -&gt; print(\"other\")\n }<\/code><\/code><\/pre>\n\n\n\n<p>Hmm fajne, mo\u017ce by\u0107 przydatne, aby unikn\u0105\u0107, je\u015bli inne bloki, nadal wydaje si\u0119 jednak sztuczk\u0105.<\/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) \"wi\u0119cej\" else \"mniej\"\n }<\/code><\/code><\/pre>\n\n\n\n<p>Ok, to wygl\u0105da na przydatne, podoba mi si\u0119! Z drugiej strony, w Javie te\u017c mog\u0119 stworzy\u0107 singleton. Mo\u017ce nie b\u0119dzie to tak eleganckie, ale to nic nowego. Jakie\u015b asy w r\u0119kawie? Na przyk\u0142ad naprawd\u0119 mocne uderzenia?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code> var s: String = null \/\/ nie kompiluje si\u0119, typ inny ni\u017c null<\/code><\/code><\/pre>\n\n\n\n<p>Czekaj... co?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/Tony_Hoare#Apologies_and_retractions\">Miliardowy b\u0142\u0105d<\/a><\/h2>\n\n\n\n<p>Wyobra\u017a sobie baz\u0119 kodu, w kt\u00f3rej nie musisz martwi\u0107 si\u0119 o bezpiecze\u0144stwo null. Wyobra\u017a sobie, \u017ce przyjmujesz za pewnik, \u017ce ka\u017cda referencja faktycznie zawiera co\u015b znacz\u0105cego. Wyobra\u017a sobie pewno\u015b\u0107, \u017ce ka\u017cdy problem zwi\u0105zany z nullami jest rozwi\u0105zywany z wyprzedzeniem.<br>Nie wyobra\u017caj sobie wi\u0119cej. Wszystkie referencje w Kotlinie nie s\u0105 domy\u015blnie nullable. Je\u015bli chcesz je uniewa\u017cni\u0107, musisz <u>\u015bwiadomie<\/u> podj\u0105\u0107 t\u0119 decyzj\u0119, i <u>wyra\u017anie<\/u> poda\u0107 to w <a href=\"https:\/\/thecodest.co\/pl\/dictionary\/what-is-code-refactoring\/\">kod<\/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>Rozumiem, \u017ce w tym momencie mo\u017cesz by\u0107 sceptycznie nastawiony do ca\u0142ego pomys\u0142u. Jeste\u015b przyzwyczajony do niewa\u017cnych referencji. Masz to z ty\u0142u g\u0142owy podczas kodowania. Nauczy\u0142e\u015b si\u0119, gdzie musisz by\u0107 ostro\u017cny. Dok\u0142adnie tak my\u015bl\u0119. Pochodz\u0119 z <strong>Java<\/strong>Na pocz\u0105tku rzeczywi\u015bcie czu\u0142em si\u0119 dziwnie. Jaki to ma sens? To nie sprawi, \u017ce wszystkie zwi\u0105zane z tym problemy magicznie znikn\u0105. B\u0119d\u0119 musia\u0142 po prostu dodawa\u0107 \"?\" wsz\u0119dzie, brzmi jak obowi\u0105zek.<\/p>\n\n\n\n<p>Ale postanowi\u0142em zanurzy\u0107 si\u0119 g\u0142\u0119boko w j\u0119zyku, prawda? Niech b\u0119dzie po twojemu, panie <strong>Kotlin<\/strong>. Zacz\u0105\u0142em stara\u0107 si\u0119 wyeliminowa\u0107 jak najwi\u0119cej zmiennych, p\u00f3l i parametr\u00f3w z warto\u015bci\u0105 null. Krok po kroku nauczy\u0142em si\u0119 korzysta\u0107 z funkcji j\u0119zyka, kt\u00f3re u\u0142atwia\u0142y eliminacj\u0119 niewa\u017cnych referencji, np. operator safe call \"?.\", operator elvis \"?:\", delegowane w\u0142a\u015bciwo\u015bci, metoda \"let\" i inne.<\/p>\n\n\n\n<p>Z czasem uda\u0142o mi si\u0119 sprawi\u0107, \u017ce niekt\u00f3re klasy zawiera\u0142y tylko pola i parametry metod, kt\u00f3re nie mia\u0142y warto\u015bci null. Zasadniczo wiedzia\u0142em, \u017ce je\u015bli klasa zostanie pomy\u015blnie utworzona, mog\u0119 prawie zapomnie\u0107 o pustych polach w cia\u0142ach metod. To by\u0142a b\u0142ogo\u015b\u0107. Z czasem docenia\u0142em to coraz bardziej. Ostatecznie jednak nie uwa\u017ca\u0142em tego za zab\u00f3jcz\u0105 funkcj\u0119, <strong>Java<\/strong> wci\u0105\u017c czu\u0142em si\u0119 jak w domu. Do czasu...<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Powr\u00f3t<\/h2>\n\n\n\n<p>Projekt zbli\u017ca\u0142 si\u0119 do ko\u0144ca. Coraz lepiej poznawa\u0142em Kotlin, a dzi\u0119ki tej wiedzy kod stawa\u0142 si\u0119 coraz bardziej uporz\u0105dkowany, czytelny i zwi\u0119z\u0142y. Ulepszenia mo\u017cna by\u0142o dostrzec go\u0142ym okiem w historii commit\u00f3w. W ko\u0144cu jednak nadszed\u0142 ten czas. Z nieoczekiwanie mi\u0142ymi wspomnieniami z nowego j\u0119zyka, nadszed\u0142 czas, aby si\u0119 po\u017cegna\u0107 i wr\u00f3ci\u0107 do s\u0142odkiej strefy komfortu <strong>Java<\/strong>. A przynajmniej tak mi si\u0119 wydawa\u0142o.<\/p>\n\n\n\n<p>Czy znasz to uczucie, kiedy zaczynasz docenia\u0107 co\u015b w momencie, gdy to si\u0119 ko\u0144czy? Kiedy nie zdajesz sobie sprawy, jak bardzo na czym\u015b polegasz, dop\u00f3ki nie mo\u017cesz ju\u017c z tego korzysta\u0107? To by\u0142 najlepszy przyk\u0142ad tego uczucia, jakiego kiedykolwiek do\u015bwiadczy\u0142em w \u017cyciu.<\/p>\n\n\n\n<p>Gdy wr\u00f3ci\u0142em do pisania kodu w <strong>Java<\/strong>By\u0142em wr\u0119cz przera\u017cony brakiem niekt\u00f3rych funkcji. To by\u0142o tak, jakby m\u00f3j m\u00f3zg pod\u015bwiadomie, b\u0142\u0119dnie doposa\u017ca\u0142 funkcje Kotlina w Jav\u0119. Do\u015bwiadczy\u0142em sytuacji, w kt\u00f3rych faktycznie zacz\u0105\u0142em co\u015b implementowa\u0107, tylko po to, by zda\u0107 sobie spraw\u0119, \u017ce to nie zadzia\u0142a w tym j\u0119zyku. W najlepszym wypadku m\u00f3g\u0142bym napisa\u0107 to w Kotlinie, ale by\u0142oby to niepor\u0119czne, nieczytelne i\/lub wymaga\u0142oby zbyt du\u017cej ilo\u015bci boilerplate.<\/p>\n\n\n\n<p>Bezpiecze\u0144stwo zerowe by\u0142o oczywi\u015bcie cech\u0105, kt\u00f3rej najbardziej mi brakowa\u0142o. Ale by\u0142em zaskoczony, jak wiele mniejszych rzeczy sta\u0142o si\u0119 dla mnie naturalne: nazwane parametry, w\u0142a\u015bciwo\u015bci zamiast getter\u00f3w i setter\u00f3w, \"==\" jako equals i \"==\" jako r\u00f3wno\u015b\u0107 referencyjna, kwalifikowane \"this\", funkcje rozszerzaj\u0105ce, niejawny pojedynczy parametr lambda, \"_\" dla nieu\u017cywanych parametr\u00f3w lambda, <a href=\"https:\/\/thecodest.co\/pl\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">dane<\/a> klasy, funkcje zakresu, inne funkcje Kotlin stdlib, operatory i wiele wi\u0119cej. I spos\u00f3b, w jaki to wszystko \u0142adnie do siebie pasuje. Dla por\u00f3wnania, Java wydawa\u0142a si\u0119... prymitywna.<\/p>\n\n\n\n<p>Czu\u0142em si\u0119 tak \u017ale, \u017ce zacz\u0105\u0142em rozwa\u017ca\u0107 ca\u0142kowite przej\u015bcie na Kotlin. Teoretycznie jest on w pe\u0142ni interoperacyjny z Jav\u0105, mo\u017cna po prostu doda\u0107 obs\u0142ug\u0119 Kotlina do istniej\u0105cego projektu i zacz\u0105\u0107 pisa\u0107 nowe klasy. Strona Kotlina wie jak \"rozmawia\u0107\" z Jav\u0105, a strona Javy nawet nie wie, \u017ce \"rozmawia\" z innym j\u0119zykiem. A po kompilacji do kodu bajtowego nie robi to \u017cadnej r\u00f3\u017cnicy dla maszyny JVM.<\/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=\"Poznaj eksperta Java\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Weryfikacja rzeczywisto\u015bci<\/h2>\n\n\n\n<p>Wi\u0119c na co czekasz? Je\u015bli j\u0119zyk jest tak dobry, jak m\u00f3wisz, po prostu go u\u017cyj! Mo\u017ce jednak nie w istniej\u0105cych projektach, wiem, \u017ce powinien by\u0107 interoperacyjny, ale mieszanie dw\u00f3ch r\u00f3\u017cnych j\u0119zyk\u00f3w w ten spos\u00f3b brzmi brzydko.<\/p>\n\n\n\n<p>Ok, wi\u0119c dla nowych modu\u0142\u00f3w - Kotlin. A mo\u017ce jednak? Pracujesz w module <a href=\"https:\/\/thecodest.co\/pl\/blog\/how-to-hire-the-best-outsourced-development-team-for-a-scaleup\/\">zesp\u00f3\u0142<\/a>. Musisz si\u0119 z nimi skonsultowa\u0107 i przekona\u0107 ich o wspania\u0142o\u015bci tego nowego j\u0119zyka. Co? Nie podoba im si\u0119? Wygl\u0105da na to, \u017ce po prostu nie chc\u0105 w\u0142o\u017cy\u0107 wysi\u0142ku w jego nauk\u0119. Nie mo\u017cesz ich za to wini\u0107, bo na pocz\u0105tku te\u017c by\u0142e\u015b sceptyczny.<\/p>\n\n\n\n<p>Kierownik projektu! Tak! Z pewno\u015bci\u0105 zrozumie, jak wielk\u0105 warto\u015b\u0107 Kotlin przyniesie naszemu zespo\u0142owi. Och, wspania\u0142o\u015b\u0107, kt\u00f3ra nadejdzie!<br>-Nie<br>-Czekaj, dlaczego?<br>-Zesp\u00f3\u0142 o tym nie wie.<br>-Naucz\u0105 si\u0119!<br>-Nie chc\u0105 si\u0119 uczy\u0107.<br>-Mo\u017cesz je zrobi\u0107!<br>-Nie musz\u0105 si\u0119 uczy\u0107.<br>-To prawda, ale pomy\u015bl o mo\u017cliwo\u015bciach!<br>-Tak, mo\u017ce najpierw pomy\u015bl o problemach.<\/p>\n\n\n\n<p>Legenda g\u0142osi, \u017ce istnieje pewien projekt. Projekt, kt\u00f3ry jest du\u017cy i z\u0142o\u017cony, ale \u0142adnie napisany w ka\u017cdej cz\u0119\u015bci. Projekt, w kt\u00f3rym wszyscy programi\u015bci s\u0105 zgodni co do stosowanych rozwi\u0105za\u0144. Gdzie nowe funkcjonalno\u015bci p\u0142ynnie wyp\u0142ywaj\u0105 z klawiatur programist\u00f3w. Gdzie b\u0142\u0119dy s\u0105 rzadkie i \u0142atwe do naprawienia.<\/p>\n\n\n\n<p>Czy widzia\u0142e\u015b taki projekt? Ja nie. Niekt\u00f3re by\u0142y blisko, ale wi\u0119kszo\u015b\u0107 z nich to wielki ba\u0142agan w kodzie. A je\u015bli nie jest, to prawdopodobnie stanie si\u0119 nim w pewnym momencie w przysz\u0142o\u015bci. Wyobra\u017a sobie teraz, \u017ce dorzucasz do tego inny j\u0119zyk. Wprowadza to nowe sposoby pope\u0142niania b\u0142\u0119d\u00f3w. Wymaga od programist\u00f3w wiedzy na temat tego, co robi\u0105. Jest to co najmniej ryzykowne.<\/p>\n\n\n\n<p>Teraz nale\u017cy r\u00f3wnie\u017c wzi\u0105\u0107 pod uwag\u0119 <a href=\"https:\/\/thecodest.co\/pl\/blog\/hire-vue-js-developers\/\">deweloper<\/a> rotacja. Ludzie przychodz\u0105 i odchodz\u0105. Czy ka\u017cesz ka\u017cdemu nowemu programi\u015bcie uczy\u0107 si\u0119 zupe\u0142nie nowego j\u0119zyka? Nie, to przyniesie efekt przeciwny do zamierzonego. Czy zatrudnisz programist\u00f3w Kotlin w pierwszej kolejno\u015bci? Powodzenia, zatrudnienie dobrego programisty Java jest wystarczaj\u0105co trudne.<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.allegro.tech\/2018\/05\/From-Java-to-Kotlin-and-Back-Again.html\">Ludzie pr\u00f3bowali.<\/a> Musz\u0119 powiedzie\u0107, \u017ce nie zgadzam si\u0119 z wi\u0119kszo\u015bci\u0105 zarzut\u00f3w w tym artykule. Jest tam troch\u0119 s\u0142usznej krytyki, ale my\u015bl\u0119, \u017ce nie u\u017cywali Kotlina wystarczaj\u0105co du\u017co, aby faktycznie zrozumie\u0107 \"spos\u00f3b Kotlina\". Wielu komentuj\u0105cych pod tym artyku\u0142em wydaje si\u0119 my\u015ble\u0107 podobnie.<\/p>\n\n\n\n<p>To jednak nie ma znaczenia. Za\u0142o\u017c\u0119 si\u0119, \u017ce w twoim projekcie te\u017c by si\u0119 to zdarzy\u0142o. \"Pr\u00f3bowa\u0142em, nie podoba\u0142o mi si\u0119\". Nie sprawisz, \u017ce sp\u0119dz\u0105 nad tym wi\u0119cej czasu. Nie sprawisz, \u017ce spr\u00f3buj\u0105 ponownie. Nie sprawisz, \u017ce dadz\u0105 mu kolejn\u0105 szans\u0119. I z praktycznego punktu widzenia mog\u0105 mie\u0107 racj\u0119. <strong>Java<\/strong> jest tak popularna, \u017ce u\u017cywanie czegokolwiek innego na JVM wydaje si\u0119 zb\u0119dne.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dlaczego wi\u0119c ten artyku\u0142?<\/h2>\n\n\n\n<p>W\u0142a\u015bnie po\u015bwi\u0119ci\u0142e\u015b sporo czasu na napisanie artyku\u0142u, kt\u00f3ry wydaje si\u0119 nie mie\u0107 sensu. Dlaczego mia\u0142bym pr\u00f3bowa\u0107 uczy\u0107 si\u0119 j\u0119zyka, skoro i tak twierdzisz, \u017ce to bezcelowe?<\/p>\n\n\n\n<p>C\u00f3\u017c, nie uwa\u017cam, \u017ce to bezcelowe. Nadal uwa\u017cam, \u017ce Kotlin jest \u015bwietny. Nadal chc\u0119 go u\u017cywa\u0107 (i faktycznie u\u017cywam go w moich prywatnych projektach). Gdybym m\u00f3g\u0142, po prostu bym si\u0119 na niego przerzuci\u0142 i zapomnia\u0142 o ograniczeniach Javy. Ale obecna rzeczywisto\u015b\u0107 m\u00f3wi, \u017ce nie mog\u0119. I chc\u0119 spr\u00f3bowa\u0107 to zmieni\u0107.<\/p>\n\n\n\n<p>Moj\u0105 intencj\u0105 dla Ciebie, drogi czytelniku, jest przynajmniej rozwa\u017cenie mo\u017cliwo\u015bci wyj\u015bcia z przytulnej strefy komfortu Java. Poniewa\u017c mo\u017ce, tylko mo\u017ce, pokochasz Kotlin tak bardzo jak ja. A je\u015bli tak si\u0119 stanie, to b\u0119dzie to jeszcze jeden programista znaj\u0105cy Kotlin na platformie <a href=\"https:\/\/thecodest.co\/pl\/dictionary\/what-is-the-size-of-your-potential-reachable-market\/\">rynek<\/a>.<\/p>\n\n\n\n<p><strong>Czytaj wi\u0119cej:<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/the-best-type-of-projects-for-java\">Najlepsze rodzaje projekt\u00f3w dla Javy<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/3-common-challenges-of-software-product-development-for-startups\">3 typowe wyzwania zwi\u0105zane z rozwojem oprogramowania dla startup\u00f3w<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/the-right-way-to-find-top-java-developers\">W\u0142a\u015bciwy spos\u00f3b na znalezienie najlepszych programist\u00f3w Java<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Je\u015bli jeste\u015b programist\u0105 Java, prawdopodobnie masz przynajmniej pewne do\u015bwiadczenie z innymi j\u0119zykami programowania.  Niekt\u00f3rzy z nas rozpocz\u0119li swoj\u0105 przygod\u0119 z programowaniem w innym j\u0119zyku, takim jak C\/C++, JavaScript, C#, Python, a mo\u017ce nawet w Pascalu lub Basicu. Niekt\u00f3rzy jednak zacz\u0119li od Javy i po prostu nigdy nie zwracali zbytniej uwagi na inne j\u0119zyki, nieprzyjemnie wspominaj\u0105c ten jeden raz, kiedy musieli szybko zakodowa\u0107 co\u015b po stronie frontendu.<\/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\/pl\/blog\/dlaczego-kotlin-jest-swietny-ale-i-tak-pozostaniesz-przy-javie-1\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\/pl\/blog\/dlaczego-kotlin-jest-swietny-ale-i-tak-pozostaniesz-przy-javie-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 minuta\" \/>\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\":\"pl-PL\",\"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\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@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\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@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\":\"pl-PL\",\"@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\\\/pl\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Dlaczego Kotlin jest \u015bwietny, ale i tak pozostaniesz przy Javie - 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\/pl\/blog\/dlaczego-kotlin-jest-swietny-ale-i-tak-pozostaniesz-przy-javie-1\/","og_locale":"pl_PL","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\/pl\/blog\/dlaczego-kotlin-jest-swietny-ale-i-tak-pozostaniesz-przy-javie-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 minuta"},"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":"pl-PL","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":"Dlaczego Kotlin jest \u015bwietny, ale i tak pozostaniesz przy Javie - 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":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@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":"pl-PL"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@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":"pl-PL","@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\/pl\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/posts\/3913","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/comments?post=3913"}],"version-history":[{"count":8,"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/posts\/3913\/revisions"}],"predecessor-version":[{"id":8525,"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/posts\/3913\/revisions\/8525"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/media\/3914"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/media?parent=3913"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/categories?post=3913"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/pl\/wp-json\/wp\/v2\/tags?post=3913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}