{"id":404783,"date":"2023-11-15T10:21:13","date_gmt":"2023-11-15T09:21:13","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=404783"},"modified":"2023-11-15T10:21:16","modified_gmt":"2023-11-15T09:21:16","slug":"kotlin-multiplatform-je-nyni-ve-stabilni-verzi-a-je-pripraven-pro-nasazeni-na-produkci","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/cs\/kotlin\/2023\/11\/kotlin-multiplatform-je-nyni-ve-stabilni-verzi-a-je-pripraven-pro-nasazeni-na-produkci\/","title":{"rendered":"Kotlin Multiplatform je nyn\u00ed ve stabiln\u00ed verzi a je p\u0159ipraven pro nasazen\u00ed na produkci"},"content":{"rendered":"<p><strong>Kotlin Multiplatform je open-source technologie od spole\u010dnosti JetBrains, kter\u00e1 umo\u017e\u0148uje v\u00fdvoj\u00e1\u0159\u016fm sd\u00edlet k\u00f3d nap\u0159\u00ed\u010d platformami a sou\u010dasn\u011b zachovat v\u00fdhody nativn\u00edho programov\u00e1n\u00ed. Odte\u010f m\u00e1 svoji stabiln\u00ed verzi, kter\u00e1 je stoprocentn\u011b p\u0159ipravena na produk\u010dn\u00ed nasazen\u00ed.<\/strong><\/p>\n<p><strong>P\u0159e\u010dt\u011bte si, jak se Kotlin Multiplatform (KMP) vyv\u00edjel, jak\u00fd p\u0159\u00ednos m\u016f\u017ee m\u00edt pro v\u00e1\u0161 v\u00fdvoj z hlediska efektivity a jak\u00e9 vzd\u011bl\u00e1vac\u00ed zdroje jsou k m\u00e1n\u00ed, abyste z t\u00e9to technologie vyt\u011b\u017eili co nejv\u00edce.<\/strong><\/p>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"Jdeme na to\" href=\"http:\/\/jetbrains.com\/help\/kotlin-multiplatform-dev\/get-started.html?utm_source=kotlinblog&amp;utm_medium=button&amp;utm_campaign=kmp-stable\" target=\"_blank\" rel=\"noopener\">Za\u010dn\u011bte s kMP<\/a><\/p>\n<h2 class=\"wp-block-heading\">Sd\u00edlejte k\u00f3d za <em>sv\u00fdch<\/em> podm\u00ednek a s pat\u0159i\u010dnou d\u016fv\u011brou<\/h2>\n<p>Kotlin Multiplatform (KMP) t\u00edm, jak je navr\u017een, klade d\u016fraz na flexibilitu a p\u0159izp\u016fsobitelnost. St\u00edr\u00e1 tak hranice mezi multiplatformn\u00edm a nativn\u00edm v\u00fdvojem. Umo\u017e\u0148uje v\u00fdvoj\u00e1\u0159\u016fm opakovan\u011b pou\u017e\u00edvat tolik k\u00f3du, kolik cht\u011bj\u00ed, ps\u00e1t nativn\u00ed k\u00f3d podle pot\u0159eby a pohodln\u011b integrovat sd\u00edlen\u00fd k\u00f3d v Kotlinu do jak\u00e9hokoli projektu.<\/p>\n<p>U\u017e od prvn\u00ed verze KMP byla zm\u00edn\u011bn\u00e1 flexibilita l\u00e1kav\u00e1 pro <a href=\"http:\/\/jetbrains.com\/help\/kotlin-multiplatform-dev\/case-studies.html\" target=\"_blank\" rel=\"noreferrer noopener\">\u0159adu v\u00fdznamn\u00fdch spole\u010dnost\u00ed<\/a>, nap\u0159\u00edklad pro Netflix, Philips, McDonald&#8217;s, 9GAG a Baidu. Existuje spousta t\u00fdm\u016f, kter\u00e9 ji\u017e vyu\u017e\u00edvaj\u00ed mo\u017enosti postupn\u00e9 integrace KMP a sou\u010dasn\u011b n\u00edzk\u00e1 rizika spojen\u00e1 s adopc\u00ed. N\u011bkter\u00e9 sd\u00edlej\u00ed izolovan\u00e9 kritick\u00e9 \u010d\u00e1sti sv\u00e9ho st\u00e1vaj\u00edc\u00edho k\u00f3du v Kotlinu, aby zlep\u0161ily stabilitu sv\u00fdch aplikac\u00ed. Jin\u00e9 zase cht\u011bj\u00ed recyklovat co nejv\u00edc k\u00f3du, ani\u017e by byla ohro\u017eena kvalita aplikace, a sd\u00edlej\u00ed ve\u0161kerou aplika\u010dn\u00ed logiku nap\u0159\u00ed\u010d mobiln\u00edmi za\u0159\u00edzen\u00edmi, po\u010d\u00edta\u010di, webem a TV p\u0159i sou\u010dasn\u00e9m zachov\u00e1n\u00ed nativn\u00edho u\u017eivatelsk\u00e9ho rozhran\u00ed.<\/p>\n<p>KMP se u\u017e od vyd\u00e1n\u00ed alfa verze \u0161iroce pou\u017e\u00edv\u00e1 v produk\u010dn\u00edm prost\u0159ed\u00ed. Spole\u010dnost JetBrains tud\u00ed\u017e dok\u00e1zala posb\u00edrat rozs\u00e1hlou zp\u011btnou vazbu a technologii zdokonalit tak, aby ve stable verzi poskytovala lep\u0161\u00ed prost\u0159ed\u00ed pro multiplatformn\u00ed v\u00fdvoj, v\u010detn\u011b n\u00e1sleduj\u00edc\u00edch aspekt\u016f.<\/p>\n<p><strong>P\u0159\u00edsn\u00e9 z\u00e1ruky kompatibility<\/strong><\/p>\n<p>J\u00e1dro technologie Kotlin Multiplatform obsahuje \u0159adu \u010d\u00e1st\u00ed, nap\u0159\u00edklad podporu kompil\u00e1toru, jazykov\u00e9 funkce, knihovny API, IDE, n\u00e1stroje pro sestaven\u00ed a mnoho dal\u0161\u00edho. V\u0161echny tyto aspekty pokr\u00fdvaj\u00ed nejobl\u00edben\u011bj\u0161\u00ed p\u0159\u00edpady pou\u017eit\u00ed sd\u00edlen\u00ed k\u00f3du a jsou ve verzi Kotlin 1.9.20 stabiln\u00ed. \u201eStabiln\u00ed\u201c znamen\u00e1, \u017ee uveden\u00e9 \u010d\u00e1sti budeme vyv\u00edjet s ohledem na <a href=\"https:\/\/kotlinlang.org\/docs\/components-stability.html\" target=\"_blank\" rel=\"noreferrer noopener\">p\u0159\u00edsn\u00e1 pravidla<\/a> kompatibility, tud\u00ed\u017e je m\u016f\u017eete ve sv\u00e9m k\u00f3du bez obav pou\u017e\u00edvat.<\/p>\n<p>Nad r\u00e1mec j\u00e1dra m\u00e1 KMP tak\u00e9 ur\u010dit\u00e9 pokro\u010dilej\u0161\u00ed \u010d\u00e1sti, na kter\u00fdch st\u00e1le pracujeme. P\u0159\u00edkladem jsou t\u0159\u00eddy expect\/actual (nezam\u011b\u0148ovat s <em>funkcemi<\/em> expect\/actual, kter\u00e9 jsou v Kotlinu 1.9.20 pln\u011b stabiln\u00ed). Takov\u00e9 funkce jsou explicitn\u011b ozna\u010deny jako nestabiln\u00ed a Kotlin v\u00e1s bude informovat, pokud je budete pou\u017e\u00edvat. T\u011bmto upozorn\u011bn\u00edm na experiment\u00e1ln\u00ed povahu v\u011bnujte dostate\u010dnou pozornost a v\u011bnujte ji i p\u0159\u00edslu\u0161n\u00e9 dokumentaci, abyste se mohli informovan\u011b rozhodnout, zda takov\u00e9 funkce ve sv\u00fdch projektech pou\u017eijete, \u010di nikoli.<\/p>\n<p><strong>Lep\u0161\u00ed u\u017eivatelsk\u00e9 prost\u0159ed\u00ed pro nastaven\u00ed sestaven\u00ed<\/strong><\/p>\n<p>V z\u00e1jmu jednoduchosti nastaven\u00ed a \u00fadr\u017eby projektu jsme zavedli <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1920.html#template-for-configuring-multiplatform-projects\" target=\"_blank\" rel=\"noreferrer noopener\">v\u00fdchoz\u00ed \u0161ablonu hierarchie<\/a>. Tato nov\u00e1 funkce pluginu Kotlin Gradle automaticky konfiguruje zdrojov\u00e9 sady Kotlinu pro obl\u00edben\u00e9 sc\u00e9n\u00e1\u0159e a sni\u017euje mno\u017estv\u00ed \u0161ablon v typick\u00fdch skriptech sestaven\u00ed.<\/p>\n<p>KMP v\u00e1m ve stable verzi p\u0159in\u00e1\u0161\u00ed n\u011bkolik vylep\u0161en\u00ed, kter\u00e1 v\u00e1m umo\u017en\u00ed l\u00e9pe diagnostikovat nespr\u00e1vn\u00e9 konfigurace a chyby sestaven\u00ed:<\/p>\n<ul>\n<li>Do pluginu Kotlin Gradle bylo p\u0159id\u00e1no p\u0159ibli\u017en\u011b 50 diagnostick\u00fdch funkc\u00ed, kter\u00e9 pom\u00e1haj\u00ed odhalit b\u011b\u017en\u00e9 probl\u00e9my p\u0159i sestavov\u00e1n\u00ed a p\u0159in\u00e1\u0161ej\u00ed rychl\u00e9 tipy, jak je odstranit.<\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1820.html#improved-output-for-gradle-errors-in-xcode\" target=\"_blank\" rel=\"noopener\" data-type=\"link\" data-id=\"https:\/\/kotlinlang.org\/docs\/whatsnew1820.html#improved-output-for-gradle-errors-in-xcode\">Vylep\u0161en\u00fd v\u00fdstup pro chyby Gradle v Xcode<\/a> umo\u017e\u0148uje l\u00e9pe odhalit probl\u00e9my p\u0159i sestavov\u00e1n\u00ed v nativn\u00edch \u010d\u00e1stech projektu.<\/li>\n<\/ul>\n<p><strong>Vylep\u0161en\u00ed<\/strong> <strong>v\u00fdkonu sestaven\u00ed<\/strong><\/p>\n<p>Krom\u011b dal\u0161\u00edch vylep\u0161en\u00ed stability a robustnosti budeme i nad\u00e1le pokra\u010dovat ve zlep\u0161ov\u00e1n\u00ed v\u00fdkonu KMP:<\/p>\n<ul>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1920.html#full-support-for-the-gradle-configuration-cache-in-kotlin-multiplatforml\" target=\"_blank\" rel=\"noreferrer noopener\">Podpora konfigura\u010dn\u00ed mezipam\u011bti Gradle<\/a> urychluje proces sestaven\u00ed t\u00edm, \u017ee se v\u00fdsledky konfigura\u010dn\u00ed f\u00e1ze znovu pou\u017eij\u00ed pro dal\u0161\u00ed sestaven\u00ed.<\/li>\n<li>N\u00e1hled <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew19.html#preview-of-custom-memory-allocator\" target=\"_blank\" rel=\"noreferrer noopener\">vlastn\u00edho alok\u00e1toru pam\u011bti v Kotlin\/Native<\/a> zlep\u0161uje v\u00fdkon spr\u00e1vce pam\u011bti za b\u011bhu.<\/li>\n<li>Nov\u00e1 experiment\u00e1ln\u00ed <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1920.html#incremental-compilation-of-klib-artifacts\" target=\"_blank\" rel=\"noreferrer noopener\">inkrement\u00e1ln\u00ed kompilace artefakt\u016f \u201eklib\u201c<\/a> urychluje kompilaci pro Kotlin\/Native.<\/li>\n<li>P\u0159esunut\u00ed <a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew1820.html#reimplementation-of-compiler-cache-management-in-the-compiler\" target=\"_blank\" rel=\"noreferrer noopener\">spr\u00e1vy mezipam\u011bti kompil\u00e1toru Kotlin\/Native<\/a> z pluginu Kotlin Gradle do kompil\u00e1toru umo\u017e\u0148uje dal\u0161\u00ed zlep\u0161en\u00ed \u010das\u016f kompilace a flexibility mezipam\u011bti kompil\u00e1toru.<\/li>\n<\/ul>\n<p><strong>D\u00edky v\u0161em t\u011bmto vylep\u0161en\u00edm lze Kotlin Multiplatform bez obav pou\u017e\u00edvat ke sd\u00edlen\u00ed k\u00f3du v produk\u010dn\u00ed f\u00e1zi nap\u0159\u00ed\u010d syst\u00e9my Android, iOS, desktopy (JVM), serverovou stranou (JVM) a weby, a to i v t\u011bch nejkonzervativn\u011bj\u0161\u00edch sc\u00e9n\u00e1\u0159\u00edch pou\u017eit\u00ed.<\/strong><\/p>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"Jdeme na to\" href=\"http:\/\/jetbrains.com\/help\/kotlin-multiplatform-dev\/get-started.html?utm_source=kotlinblog&amp;utm_medium=button&amp;utm_campaign=kmp-stable\" target=\"_blank\" rel=\"noopener\">za\u010dn\u011bte s KMP<\/a><\/p>\n<h2 class=\"wp-block-heading\">Vyu\u017eijte potenci\u00e1l rostouc\u00edho ekosyst\u00e9mu Kotlin Multiplatform<\/h2>\n<p>V\u00fdvoj Kotlinu Multiplatform se neomezuje na samotnou technologii, ale roz\u0161i\u0159uje se i na jej\u00ed prosperuj\u00edc\u00ed ekosyst\u00e9m, kter\u00fd kultivuj\u00ed tis\u00edce Kotlin v\u00fdvoj\u00e1\u0159\u016f po cel\u00e9m sv\u011bt\u011b. Od vyd\u00e1n\u00ed bety se po\u010det knihoven KMP zmnohon\u00e1sobil a v sou\u010dasn\u00e9 dob\u011b nab\u00edz\u00ed rozmanit\u00e9 n\u00e1stroje pro pr\u00e1ci v s\u00edti, ukl\u00e1d\u00e1n\u00ed dat, aritmetiku, analytiku a dal\u0161\u00ed n\u00e1stroje, kter\u00e9 umo\u017e\u0148uj\u00ed rychl\u00fd a spolehliv\u00fd v\u00fdvoj aplikac\u00ed.<\/p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-401835\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/11\/Libraries-2800x995.png\" alt=\"\" width=\"2800\" height=\"995\" \/><\/figure>\n<p><strong>T\u00fdm Androidu v Googlu pokra\u010duje v podpo\u0159e u\u017eivatel\u016f KMP<\/strong> poskytov\u00e1n\u00edm experiment\u00e1ln\u00edch <a href=\"https:\/\/developer.android.com\/kotlin\/multiplatform\" target=\"_blank\" rel=\"noreferrer noopener\">multiplatformn\u00edch verz\u00ed knihoven Jetpack<\/a> a u\u017e te\u010f m\u00e1 vy\u0159e\u0161enou kompatibilitu knihoven Collections, DataStore, Annotations a Paging s Kotlin Multiplatform.<\/p>\n<p>Ekosyst\u00e9m KMP d\u00e1le nab\u00edz\u00ed \u0159adu n\u00e1stroj\u016f pro v\u00fdvoj\u00e1\u0159e iOS, mezi nimi\u017e vynik\u00e1 <a href=\"https:\/\/touchlab.co\/tryskie\" target=\"_blank\" rel=\"noreferrer noopener\">SKIE<\/a> od spole\u010dnosti Touchlab. Generuje k\u00f3d Swift, kter\u00fd poskytuje vrstvu API kompatibiln\u00ed se Swiftem a ta p\u0159emos\u0165uje d\u016fle\u017eit\u00e9 typy Kotlinu a implementuje bezprobl\u00e9movou interoperabilitu Coroutines.<\/p>\n<h2 class=\"wp-block-heading\">Je\u0161t\u011b svobodn\u011bj\u0161\u00ed sd\u00edlen\u00ed k\u00f3du s Compose Multiplatform<\/h2>\n<p><a href=\"https:\/\/www.jetbrains.com\/lp\/compose-multiplatform?utm_source=kotlinblog&amp;utm_medium=button&amp;utm_campaign=kmp-stable\" target=\"_blank\" rel=\"noreferrer noopener\" data-type=\"link\" data-id=\"https:\/\/www.jetbrains.com\/lp\/compose-multiplatform?utm_source=kotlinblog&amp;utm_medium=button&amp;utm_campaign=kmp-stable\">Compose Multiplatform<\/a>, modern\u00ed deklarativn\u00ed multiplatformn\u00ed framework u\u017eivatelsk\u00e9ho rozhran\u00ed od spole\u010dnosti JetBrains, je v\u00fdznamnou sou\u010d\u00e1st\u00ed st\u00e1le se roz\u0161i\u0159uj\u00edc\u00edho ekosyst\u00e9mu KMP. S frameworkem Compose Multiplatform z\u00edsk\u00e1v\u00e1te plnou flexibilitu p\u0159i sd\u00edlen\u00ed k\u00f3du. M\u016f\u017eete sd\u00edlet pouze jednu \u010d\u00e1st logiky, celou logiku aplikace nebo logiku i u\u017eivatelsk\u00e9 rozhran\u00ed (podle po\u017eadavk\u016f va\u0161eho projektu a t\u00fdmu):<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-401808\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/11\/image.png\" alt=\"\" width=\"1600\" height=\"466\" \/><\/figure>\n<p>Compose Multiplatform pro Android a desktop (JVM) je te\u010f \u201estable\u201c, zat\u00edmco podpora pro iOS je v sou\u010dasn\u00e9 dob\u011b ve f\u00e1zi alfa a podpora pro web (Wasm) zase v experiment\u00e1ln\u00ed f\u00e1zi.<\/p>\n<h2 class=\"wp-block-heading\">Co p\u0159inese budoucnost s Kotlin Multiplatform<\/h2>\n<p>JetBrains pokra\u010duje ve vylep\u0161ov\u00e1n\u00ed multiplatformn\u00edho v\u00fdvoje v jazyce Kotlin s c\u00edlem u\u010dinit z n\u011bj tu nejlep\u0161\u00ed volbu pro sd\u00edlen\u00ed k\u00f3du nap\u0159\u00ed\u010d platformami:<\/p>\n<ul>\n<li>Budouc\u00ed aktualizace technologie Kotlin Multiplatform zlep\u0161\u00ed a uleh\u010d\u00ed pr\u00e1ci iOS v\u00fdvoj\u00e1\u0159\u016fm tak\u00e9 d\u00edky p\u0159\u00edm\u00e9 interoperabilit\u011b Kotlinu se Swiftem a podpo\u0159e SwiftPM.<\/li>\n<li>Dal\u0161\u00edm miln\u00edkem pro Compose Multiplatform pro iOS je podpora bety v roce 2024.<\/li>\n<li>Spole\u010dnost JetBrains aktivn\u011b vyv\u00edj\u00ed jazyk Kotlin\/Wasm, aby usnadnila modern\u00ed v\u00fdvoj webov\u00fdch aplikac\u00ed s KMP, a v p\u0159\u00ed\u0161t\u00edm roce hodl\u00e1 dodat alfa verzi Compose Multiplatform for web (Wasm).<\/li>\n<\/ul>\n<p>A to nen\u00ed v\u0161echno. V nadch\u00e1zej\u00edc\u00edch t\u00fddnech se p\u0159ipravte na n\u011bkolik dal\u0161\u00edch par\u00e1dn\u00edch ozn\u00e1men\u00ed ohledn\u011b v\u00fdvoje n\u00e1stroj\u016f pro Kotlin Multiplatform!<\/p>\n<h2 class=\"wp-block-heading\">Za\u010dn\u011bte s Kotlinem Multiplatform<\/h2>\n<p>Za\u010dn\u011bte svou cestu s na\u0161imi rozs\u00e1hl\u00fdmi a u\u017eivatelsky p\u0159\u00edv\u011btiv\u00fdmi vzd\u011bl\u00e1vac\u00edmi zdroji.<\/p>\n<p>Z\u00fa\u010dastn\u011bte se na\u0161\u00ed <strong>listopadov\u00e9 s\u00e9rie webin\u00e1\u0159\u016f o Kotlinu Multiplatform<\/strong> a z\u00edskejte informace p\u0159\u00edmo od expert\u016f spole\u010dnosti JetBrains! Prozkoumejte funkce jazyka Kotlin Multiplatform, vytv\u00e1\u0159ejte aplikace KMP s nativn\u00edm i sd\u00edlen\u00fdm u\u017eivatelsk\u00fdm rozhran\u00edm a p\u0159ij\u010fte si pro tipy a triky pro v\u00fdvoj na iOS:<\/p>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"Registrace\" href=\"https:\/\/info.jetbrains.com\/kotlin-webinars-2023.html?utm_source=kotlinblog&amp;utm_medium=button&amp;utm_campaign=kmp-stable\" target=\"_blank\" rel=\"noopener\">Registrace<\/a><\/p>\n<p>Nov\u00fd <strong>Kotlin Multiplatform Development Portal <\/strong>nab\u00edz\u00ed podrobnou dokumentaci, pr\u016fvodce do za\u010d\u00e1tku a podrobn\u00e9 v\u00fdukov\u00e9 programy, kter\u00e9 pokr\u00fdvaj\u00ed v\u0161echny aspekty tvorby aplikac\u00ed v Kotlinu Multiplatform a Compose Multiplatform:<\/p>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"Jdeme na to\" href=\"http:\/\/jetbrains.com\/help\/kotlin-multiplatform-dev\/get-started.html?utm_source=kotlinblog&amp;utm_medium=button&amp;utm_campaign=kmp-stable\" target=\"_blank\" rel=\"noopener\">ZA\u010dn\u011bte s KMP<\/a><\/p>\n","protected":false},"author":1229,"featured_media":402806,"comment_status":"closed","ping_status":"closed","template":"","categories":[956],"tags":[6706,6436,76],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/cs\/wp-json\/wp\/v2\/kotlin\/404783"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/cs\/wp-json\/wp\/v2\/kotlin"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/cs\/wp-json\/wp\/v2\/types\/kotlin"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/cs\/wp-json\/wp\/v2\/users\/1229"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/cs\/wp-json\/wp\/v2\/comments?post=404783"}],"version-history":[{"count":3,"href":"https:\/\/blog.jetbrains.com\/cs\/wp-json\/wp\/v2\/kotlin\/404783\/revisions"}],"predecessor-version":[{"id":405850,"href":"https:\/\/blog.jetbrains.com\/cs\/wp-json\/wp\/v2\/kotlin\/404783\/revisions\/405850"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/cs\/wp-json\/wp\/v2\/media\/402806"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/cs\/wp-json\/wp\/v2\/media?parent=404783"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/cs\/wp-json\/wp\/v2\/categories?post=404783"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/cs\/wp-json\/wp\/v2\/tags?post=404783"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/cs\/wp-json\/wp\/v2\/cross-post-tag?post=404783"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}