{"id":363972,"date":"2023-06-15T23:52:38","date_gmt":"2023-06-15T22:52:38","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=363972"},"modified":"2023-09-04T17:26:14","modified_gmt":"2023-09-04T16:26:14","slug":"compose-multiplatform-para-ios-ya-esta-en-fase-alpha","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/es\/kotlin\/2023\/06\/compose-multiplatform-para-ios-ya-esta-en-fase-alpha\/","title":{"rendered":"Compose Multiplatform para iOS ya est\u00e1 en fase Alpha"},"content":{"rendered":"<p>Compose Multiplatform, el marco de trabajo declarativo de JetBrains para crear interfaces de usuario multiplataforma con Kotlin, ya puede utilizarse con iOS. Esto significa que puede utilizar Compose Multiplatform para crear su interfaz de usuario una vez, 100 % en Kotlin, y utilizarla en Android, iOS y m\u00e1s all\u00e1.<\/p>\n<p>De un vistazo, esto es lo que necesita saber sobre este lanzamiento:<\/p>\n<ul>\n<li>JetBrains ha lanzado Compose Multiplatform para iOS como Alpha, lo que significa que est\u00e1 listo para ser utilizado en experimentos y proyectos de prueba. \u00a1Pru\u00e9belo y ayude a dar forma al futuro de las interfaces de usuario m\u00f3viles compartidas con Kotlin!<\/li>\n<li>Compose Multiplatform utiliza API que ya se emplean para el desarrollo de interfaces de usuario en Android. Esto hace que sea muy f\u00e1cil para los desarrolladores con experiencia en el desarrollo moderno de Android ponerse r\u00e1pidamente en marcha con Compose Multiplatform para iOS. Tambi\u00e9n permite a los reci\u00e9n llegados basar su aprendizaje en conceptos establecidos y en las mejores pr\u00e1cticas.<\/li>\n<li>Como versi\u00f3n Alpha, Compose Multiplatform para iOS a\u00fan tiene muchas \u00e1reas que son trabajos en curso. Confiamos en la comunidad para ayudar a informar y dar forma al futuro de las interfaces de usuario compartidas de Kotlin, \u00a1as\u00ed que pruebe la tecnolog\u00eda y <a href=\"#sharefeedback\">env\u00edenos sus comentarios<\/a>!<\/li>\n<\/ul>\n<p><!--more--><\/p>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"Llamada a la acci\u00f3n\" href=\"https:\/\/jb.gg\/compose\" target=\"_blank\" rel=\"noopener\">Empiece a utilizar Compose para iOS<\/a><\/p>\n<p>JetBrains anunci\u00f3 por primera vez Compose Multiplatform para iOS en la KotlinConf 2023. Si desea ver en detalle c\u00f3mo funciona Compose Multiplatform para iOS, vea la grabaci\u00f3n de la charla de presentaci\u00f3n \u00abCompose Multiplatform on iOS\u00bb, a cargo de Sebastian Aigner y Nikita Lipsky:<\/p>\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\">\n<div class=\"wp-block-embed__wrapper\">&nbsp;<\/div>\n<\/figure>\n<h2 class=\"wp-block-heading\">Impulsamos Kotlin Multiplatform m\u00e1s all\u00e1 de la l\u00f3gica empresarial<\/h2>\n<p>Con <a href=\"https:\/\/kotlinlang.org\/docs\/multiplatform.html\" target=\"_blank\" rel=\"noopener\">Kotlin Multiplatform<\/a>, los desarrolladores de Kotlin ya disponen de un enfoque probado para compartir c\u00f3digo. Le permite compartir la l\u00f3gica empresarial entre diferentes plataformas sin tener que renunciar al acceso a las API y funciones espec\u00edficas de cada plataforma, un enfoque que ha sido validado por muchas aplicaciones en producci\u00f3n, y que cada vez m\u00e1s empresas aprovechan para deshacerse de la duplicaci\u00f3n innecesaria de l\u00f3gica en sus aplicaciones.<\/p>\n<p>Pero faltaba una parte de la historia de Kotlin Multiplatform: una soluci\u00f3n para cuando no se desea compilar y mantener interfaces de usuario por separado para cada plataforma. Existen numerosas razones por las que este puede ser su caso: puede que carezca de los recursos o el personal necesarios para ofrecer implementaciones a medida para cada plataforma de destino. O puede encontrarse en una situaci\u00f3n en la que necesite hacer llegar su aplicaci\u00f3n a las manos de los usuarios lo antes posible, con iteraciones r\u00e1pidas, y no pueda dedicar tiempo a mantener manualmente sincronizadas dos o m\u00e1s implementaciones de la interfaz de usuario.<\/p>\n<p>Compose Multiplatform aborda esta cuesti\u00f3n. Le da la opci\u00f3n de implementar su interfaz de usuario una vez y luego compartirla en todas las plataformas de destino, ya sea en el t\u00edpico caso m\u00f3vil de compartir entre Android e iOS o incluya otras plataformas como escritorio o web.<\/p>\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-356420\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/05\/architecture.png\" alt=\"\" width=\"840\" height=\"743\"><figcaption class=\"wp-element-caption\"><em>Compose Multiplatform es una capa opcional para aplicaciones de Kotlin Multiplatform que le permite crear interfaces de usuario declarativas una sola vez y utilizarlas para varias plataformas de destino.<\/em><\/figcaption>.<\/figure>\n<h2 class=\"wp-block-heading\">Basado en Jetpack Compose<\/h2>\n<p>Compose Multiplatform se basa en <a href=\"https:\/\/developer.android.com\/jetpack\/compose\" target=\"_blank\" rel=\"noopener\">Jetpack Compose<\/a> de Google, el marco de interfaz de usuario recomendado para el desarrollo moderno de Android, que es 100 % Kotlin. El equipo de JetBrains que desarrolla Compose Multiplatform colabora con Google y actualiza regularmente los cambios en los repositorios de Jetpack Compose.<\/p>\n<p>Las API de Compose Multiplatform son las mismas que ya se han probado en Jetpack Compose. Eso significa que los desarrolladores que tengan experiencia creando interfaces de usuario modernas para Android con Jetpack Compose pueden transferir esas habilidades directamente para escribir una interfaz de usuario compartida con Compose Multiplatform, dirigida a iOS y m\u00e1s all\u00e1.<\/p>\n<p>Para ilustrar el hecho de que las API son realmente las mismas, eche un vistazo a este fragmento de c\u00f3digo de ejemplo de Compose Multiplatform que anima la visibilidad de una imagen cada vez que el usuario pulsa un bot\u00f3n:<\/p>\n<pre class=\"kotlin-code\" style=\"padding: 36px 0;\" data-highlight-only=\"true\">@Composable\nfun App() {\n    MaterialTheme {\n        var showImage by remember { mutableStateOf(false) }\n        Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {\n            Button(onClick = {\n                showImage = !showImage\n            }) {\n                Text(\"Toggle image\")\n            }\n            AnimatedVisibility(showImage) {\n                Image(\n                    painterResource(\"compose-multiplatform.xml\"),\n                    \"Compose Multiplatform Logo\"\n                )\n            }\n        }\n    }\n}\n<\/pre>\n<p>Si ha trabajado antes con Jetpack Compose, la mayor parte de este c\u00f3digo deber\u00eda resultarle familiar: Compose Multiplatform le permite utilizar exactamente las mismas API que utilizar\u00eda para el desarrollo moderno de Android, incluyendo la gesti\u00f3n de estados, el dise\u00f1o e incluso las animaciones. Para las tareas que son espec\u00edficas del sistema en Jetpack Compose, como la carga de recursos, Compose Multiplatform proporciona c\u00f3modas alternativas que funcionan en todas las plataformas, como la funci\u00f3n <code>painterResource<\/code> del fragmento anterior.<\/p>\n<p>Como puede ver, este c\u00f3digo funciona tanto en Android como en iOS, con resultados s\u00f3lidos:<\/p>\n<figure class=\"wp-block-video\"><video src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/05\/gif2.mov\" loop=\"loop\" muted=\"\" controls=\"controls\" width=\"300\" height=\"150\"><\/video><\/figure>\n<p>En iOS, las interfaces de usuario de Compose Multiplatform se renderizan mediante una implementaci\u00f3n de lienzo basada en la biblioteca gr\u00e1fica <a href=\"https:\/\/github.com\/JetBrains\/skiko\" target=\"_blank\" rel=\"noopener\">Skiko<\/a>. En Android, Compose Multiplatform es Jetpack Compose. Esto significa que si alguna vez decide trasladar su aplicaci\u00f3n a interfaces de usuario espec\u00edficas de la plataforma, podr\u00e1 seguir utilizando su aplicaci\u00f3n Compose Multiplatform en Android sin ning\u00fan inconveniente y sin tener que desechar el c\u00f3digo que ha escrito.<\/p>\n<h2 class=\"wp-block-heading\">Basado en Kotlin Multiplatform<\/h2>\n<p>Las aplicaciones creadas con Compose Multiplatform son aplicaciones Kotlin Multiplatform, lo que significa que pueden utilizar los mismos mecanismos establecidos para acceder a las API de la plataforma, como sensores, preferencias, almacenamiento de datos, criptograf\u00eda y otros. Tambi\u00e9n pueden hacer uso del ecosistema en constante crecimiento de las <a href=\"https:\/\/github.com\/terrakok\/kmm-awesome\" target=\"_blank\" rel=\"noopener\">bibliotecas de Kotlin Multiplatform<\/a> que proporcionan desde envoltorios para bases de datos hasta contenedores multiplataforma para SDK. Por supuesto, tambi\u00e9n puede seguir utilizando Kotlin Multiplatform independientemente de Compose Multiplatform para compartir la l\u00f3gica empresarial, las redes y otras abstracciones.<\/p>\n<h2 class=\"wp-block-heading\">Interoperabilidad con vistas SwiftUI y UIKit<\/h2>\n<p>Las aplicaciones reales necesitan acceder a funciones espec\u00edficas del dispositivo y, en muchos casos, la capa de interfaz de usuario no es una excepci\u00f3n: tanto si se trata de incrustar un navegador como de reproducir v\u00eddeo, es posible que desee acceder a las funciones integradas que ofrece iOS para enriquecer la experiencia de sus usuarios.<\/p>\n<p>Para estas situaciones, la versi\u00f3n Alpha de Compose Multiplatform viene con un prototipo para la interoperabilidad bidireccional en la capa de interfaz de usuario. Utilizando <code>UIKitView<\/code>, puede incrustar widgets complejos espec\u00edficos de la plataforma como mapas, vistas web, reproductores multimedia y feeds de c\u00e1mara dentro de su interfaz de usuario compartida. En la otra direcci\u00f3n, a trav\u00e9s de <code>ComposeUIViewController<\/code>, puede incrustar pantallas Compose Multiplatform en aplicaciones SwiftUI, ayud\u00e1ndole a adoptar gradualmente Compose Multiplatform en aplicaciones iOS.<\/p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-356434\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/05\/interop-2800x1454.png\" alt=\"\" width=\"2800\" height=\"1454\"><p><\/p>\n<figcaption class=\"wp-element-caption\"><em>Compose Multiplatform en iOS permite la interoperabilidad bidireccional con interfaces de usuario nativas: puede incrustar vistas de interfaz de usuario complejas como MKMapView de MapKit en su interfaz de usuario Compose, o incrustar pantallas Compose en una aplicaci\u00f3n SwiftUI.<\/em><\/figcaption>\n<\/figure>\n<h2 class=\"wp-block-heading\">Trabajar con una experiencia de usuario excelente<\/h2>\n<p>Compose Multiplatform para iOS se encuentra actualmente en fase Alpha, lo que tambi\u00e9n significa que hay una serie de \u00e1reas en las que a\u00fan se est\u00e1 trabajando. Proporcionar una experiencia de usuario excelente en varias plataformas requiere mucho cuidado, y todo el equipo quiere asegurarse de abordar todos los aspectos necesarios para que las aplicaciones de Compose Multiplatform resulten c\u00f3modas y naturales, independientemente de d\u00f3nde se utilicen. Esto empieza por las interacciones m\u00e1s b\u00e1sicas, como los gestos y la f\u00edsica del desplazamiento, que definen la sensaci\u00f3n fundamental de una aplicaci\u00f3n. Se extiende a\u00fan m\u00e1s a los principios de navegaci\u00f3n y las transiciones, as\u00ed como a interacciones complejas como la selecci\u00f3n de texto, la gesti\u00f3n de entradas, los men\u00fas contextuales e interacciones similares.<\/p>\n<p>Tambi\u00e9n reconocemos lo importante que es que las aplicaciones de Compose Multiplatform ofrezcan s\u00f3lidas integraciones de accesibilidad, as\u00ed como que respeten las opciones de los usuarios, y nos hemos comprometido a ofrecer s\u00f3lidas integraciones con los mecanismos subyacentes de iOS, integr\u00e1ndonos con todo, desde la funcionalidad de texto a voz del sistema hasta las preferencias de zoom y contraste que los usuarios hayan establecido en sus dispositivos.<\/p>\n<p>Obviamente, se trata de un conjunto diverso y amplio de \u00e1reas de inter\u00e9s. Queremos dar a todos ellos el nivel de atenci\u00f3n necesario para garantizar que Compose Multiplatform en iOS proporcione la mejor experiencia de usuario posible. Al hacerlo, queremos estar seguros de que estamos poniendo sus necesidades en primer lugar, \u00a1y <a href=\"#sharefeedback\">sus comentarios ser\u00e1n bienvenidos<\/a>!<\/p>\n<p>Tambi\u00e9n somos conscientes de que un rendimiento absolutamente fluido, incluso en pantallas de alta frecuencia de refresco, es un factor fundamental para ofrecer una gran experiencia al usuario. Por ello, los equipos de Compose Multiplatform y Kotlin\/Native colaboran codo con codo para mejorar el rendimiento de las interfaces de usuario compartidas en iOS.<\/p>\n<h2 class=\"wp-block-heading\">Tematizaci\u00f3n de Compose Multiplatform para iOS<\/h2>\n<p>Dado que Compose Multiplatform en iOS utiliza un renderizado basado en lienzos, tanto las aplicaciones de iOS como las de Android tienen el mismo aspecto de forma predeterminada. Actualmente, Compose Multiplatform proporciona los widgets Material y Material 3 de forma inmediata en todas las plataformas. Se trata de los mismos widgets que quiz\u00e1 ya conozca de las aplicaciones de Android. Utilizando la funcionalidad de tematizaci\u00f3n incorporada, puede ajustar el aspecto de estos widgets para que reflejen su marca, ya sea de forma coherente en todas las plataformas o con temas personalizados espec\u00edficos para cada plataforma.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-356445\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/05\/widgetdesign.png\" alt=\"\" width=\"2396\" height=\"990\"><p><\/p>\n<figcaption class=\"wp-element-caption\"><em>Desde el inicio, las aplicaciones m\u00f3viles creadas con Compose Multiplatform incorporan actualmente widgets de Material. Puede personalizar su aspecto, crear sus propios componentes de interfaz e incluso aplicar una tematizaci\u00f3n espec\u00edfica de la plataforma.<\/em><\/figcaption>\n<\/figure>\n<p>Por supuesto, una cuesti\u00f3n clave para un marco de interfaz de usuario multiplataforma es hasta qu\u00e9 punto los elementos deben imitar el aspecto de sus plataformas de destino. En la fase actual, el equipo de JetBrains a\u00fan no ha tomado ninguna decisi\u00f3n sobre la provisi\u00f3n de elementos de interfaz de usuario nativos o de aspecto com\u00fan. Dado que se trata de una parte clave de la experiencia de usuario de Compose Multiplatform, no queremos tomar decisiones al respecto sin recabar antes la opini\u00f3n de la comunidad de desarrolladores, y le invitamos a que <a href=\"#sharefeedback\">comparta sus pensamientos y opiniones con nosotros<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">\u00a1Pruebe Compose Multiplatform para iOS!<\/h2>\n<p>\u00a1Esperamos que se anime a probar Compose Multiplatform para iOS! Como ya hemos comentado, hay muchos aspectos en proceso, pero tambi\u00e9n hay muchos que ya funcionan bien y est\u00e1n listos para que los pruebe.<\/p>\n<p>Ponemos a su disposici\u00f3n distintas formas de familiarizarse con la versi\u00f3n Alpha de Compose Multiplatform para iOS, incluidas aplicaciones de muestra y plantillas de proyectos.<\/p>\n<h3 class=\"wp-block-heading\">Empiece con la plantilla<\/h3>\n<p>La forma m\u00e1s sencilla de empezar a escribir sus propias aplicaciones dirigidas a Android e iOS con Compose Multiplatform es utilizar la plantilla oficial <a href=\"https:\/\/github.com\/JetBrains\/compose-multiplatform-ios-android-template\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>, que incluye su propio tutorial para poner en marcha su primera aplicaci\u00f3n Compose Multiplatform.<\/p>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"Llamada a la acci\u00f3n\" href=\"https:\/\/github.com\/JetBrains\/compose-multiplatform-ios-android-template\/#readme\" target=\"_blank\" rel=\"noopener\">Empiece a utilizar Compose para iOS<\/a><\/p>\n<h3 class=\"wp-block-heading\">Explore Compose para iOS con aplicaciones de demostraci\u00f3n<\/h3>\n<p>Una buena forma de explorar c\u00f3mo se utiliza una nueva tecnolog\u00eda es observar algunas muestras. Hemos preparado una serie de proyectos de ejemplo que demuestran Compose Multiplatform en iOS y sus otros entornos de destino. Los encontrar\u00e1 en el repositorio <a href=\"https:\/\/github.com\/JetBrains\/compose-multiplatform\/tree\/master\/examples\" target=\"_blank\" rel=\"noopener\">Compose Multiplatform<\/a>.<\/p>\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-356456\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/05\/sampleapps-2800x1626.png\" alt=\"\" width=\"840\" height=\"487\"><\/figure>\n<p align=\"center\"><a class=\"ek-link jb-download-button\" title=\"Llamada a la acci\u00f3n\" href=\"https:\/\/github.com\/JetBrains\/compose-multiplatform\/tree\/master\/examples\" target=\"_blank\" rel=\"noopener\">Explore proyectos de muestra<\/a><\/p>\n<p>Otros proyectos de muestra, como el <a href=\"https:\/\/github.com\/Kotlin\/kmm-production-sample\/tree\/compose-app\" target=\"_blank\" rel=\"noopener\">Kotlin Multiplatform Mobile Production Sample<\/a>, cuentan ahora con una rama que contiene una implementaci\u00f3n de la interfaz de usuario basada en Compose Multiplatform, lo que permite comparar las diferencias y similitudes entre compartir solo la l\u00f3gica de negocio entre aplicaciones y compartir tambi\u00e9n la capa de interfaz de usuario de la aplicaci\u00f3n.<\/p>\n<h3 id=\"sharefeedback\" class=\"wp-block-heading\">\u00a1Comparta su opini\u00f3n!<\/h3>\n<p>Compose Multiplatform en iOS est\u00e1 en fase Alpha, y queremos hacer evolucionar la tecnolog\u00eda en funci\u00f3n de sus necesidades.<\/p>\n<p>Ay\u00fadenos a ayudarle inform\u00e1ndonos de problemas, habl\u00e1ndonos de las API que cree que faltan y solicitando las funciones que le gustar\u00eda ver. Puede hacer todo esto en el <a href=\"https:\/\/github.com\/JetBrains\/compose-multiplatform\/issues\" target=\"_blank\" rel=\"noopener\">sistema de seguimiento de incidencias del proyecto<\/a>.<\/p>\n<p>Si desea hablar con el equipo que est\u00e1 detr\u00e1s de Compose Multiplatform o con otros desarrolladores, tambi\u00e9n le invitamos a unirse a la discusi\u00f3n en el canal de <a href=\"https:\/\/slack-chats.kotlinlang.org\/c\/compose-ios\" target=\"_blank\" rel=\"noopener\">Slack de Kotlin<\/a>. En el canal <a href=\"https:\/\/slack-chats.kotlinlang.org\/c\/compose-ios\" target=\"_blank\" rel=\"noopener\">#compose-ios<\/a>, podr\u00e1 encontrar discusiones sobre Compose Multiplatform para iOS. En <a href=\"https:\/\/slack-chats.kotlinlang.org\/c\/compose\" target=\"_blank\" rel=\"noopener\">#compose<\/a> puede tratar temas generales relacionados con Compose Multiplatform y Jetpack Compose.<\/p>\n<p>\u00a1Estamos deseando ver su pr\u00f3xima creaci\u00f3n con Compose Multiplatform!<\/p>\n<h2 class=\"wp-block-heading\">Vea tambi\u00e9n<\/h2>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2023\/04\/kotlinconf-2023-opening-keynote\/\">KotlinConf 2023: un vistazo a la conferencia inaugural<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2022\/10\/compose-multiplatform-1-2-is-out\/\">Ya est\u00e1 aqu\u00ed Compose Multiplatform 1.2<\/a><\/li>\n<\/ul>\n<p><em>Art\u00edculo original en ingl\u00e9s de:<\/em><\/p>\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/secure.gravatar.com\/avatar\/?s=200&#038;r=g\" width=\"200\" height=\"200\" alt=\"\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":1086,"featured_media":363990,"comment_status":"closed","ping_status":"closed","template":"","categories":[956,89],"tags":[8144,6706],"cross-post-tag":[6256],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/kotlin\/363972"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/kotlin"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/types\/kotlin"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/users\/1086"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/comments?post=363972"}],"version-history":[{"count":5,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/kotlin\/363972\/revisions"}],"predecessor-version":[{"id":364001,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/kotlin\/363972\/revisions\/364001"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/media\/363990"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/media?parent=363972"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/categories?post=363972"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/tags?post=363972"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/cross-post-tag?post=363972"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}