{"id":26959,"date":"2024-04-08T09:30:00","date_gmt":"2024-04-08T07:30:00","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/?p=26959"},"modified":"2024-04-09T12:17:19","modified_gmt":"2024-04-09T10:17:19","slug":"spring-mvc-vs-spring-webflux-vs-spring-mvc","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/","title":{"rendered":"Spring MVC vs Spring Webflux vs Spring MVC con virtual threads, \u00bfqui\u00e9n ganar\u00e1?"},"content":{"rendered":"\n<p>El pr\u00f3ximo<strong> 21 y 22 de mayo se celebrar\u00e1 la Codemotion Madrid 2024,<\/strong> la conferencia m\u00e1s importante del mundo Tech de Europa. Tras el \u00e9xito del a\u00f1o pasado, el evento reunir\u00e1 a desarrolladores y expertos de la industria de todo elmundo para compartir y discutir las \u00faltimas tendencias y tecnolog\u00edas en el \u00e1mbito del desarrollo de software.<\/p>\n\n\n\n<p>De entre la gran variedad de charlas y ponencias programadas para la ocasi\u00f3n, hoy queremos destacar la de <strong>\u201cSpring MVC vs Spring Webflux vs Spring MVC con Virtual Threads, \u00bfqui\u00e9n ganar\u00e1?\u201d<\/strong>. Correr\u00e1 a cargo de Gabriel Jim\u00e9nez Pe\u00f1a, Software Architect and Tech Lead at NEXT DIGITAL HUB, que pondr\u00e1 a prueba el concepto de \u201cVirtual Thread\u201d recientemente a\u00f1adido a Java.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-contexto-de-la-charla\">Contexto de la charla<\/h2>\n\n\n\n<p>La versi\u00f3n 21 de Java trajo consigo diferentes novedades centradas en facilitar la escritura de c\u00f3digo y aumentar el rendimiento de las aplicaciones que abordan tareas de forma concurrente. En este contexto, Oracle introdujo un nuevo concepto bajo el nombre de<strong> Virtual Threads<\/strong>, una nueva instancia que viene, en teor\u00eda, a revolucionar nuestras aplicaciones desarrolladas con este lenguaje.<\/p>\n\n\n\n<p>Hasta el momento, los hilos que us\u00e1bamos en Java se respaldaban en los llamados <strong>\u201chilos de plataforma\u201d.<\/strong> Estos, normalmente mapeados 1:1 con los hilos del Kernel programados por el sistema operativo, ofrecen un buen rendimiento y robustez, lo que los hace adecuados para ejecutar todo tipo de tareas.<\/p>\n\n\n\n<p>Sin embargo, dependiendo del sistema operativo y la configuraci\u00f3n, estos hilos pueden consumir cierta memoria por defecto, incluso si la tarea que se va a realizar no es tan pesada. Cuando hablamos de aplicaciones de alto rendimiento que ejecutan tareas de forma concurrente, esto puede provocar <strong>problemas de escalabilidad<\/strong>. Se pueden generar cuellos de botella, lo que restringe el n\u00famero de hilos que podemos crear sin empezar a tener problemas<\/p>\n\n\n\n<p>Para evitar esto, es posible recurrir a la <strong>programaci\u00f3n as\u00edncrona<\/strong>. Sin embargo, esta metodolog\u00eda tiene una curva de aprendizaje pronunciada que complica la comprensi\u00f3n y el seguimiento del programa. Cada parte de una solicitud puede ejecutarse en un hilo diferente, creando rastros de pila sin un contexto sensato y haciendo que la depuraci\u00f3n se convierta en una tarea demasiado ardua.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/AlexLomart_CODEMOTION2023-332-1-2048x1365-1-1024x683.jpg\" alt=\"conferencia madrid codemotion\n\" class=\"wp-image-26968\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/AlexLomart_CODEMOTION2023-332-1-2048x1365-1-1024x683.jpg 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/AlexLomart_CODEMOTION2023-332-1-2048x1365-1-300x200.jpg 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/AlexLomart_CODEMOTION2023-332-1-2048x1365-1-768x512.jpg 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/AlexLomart_CODEMOTION2023-332-1-2048x1365-1-1536x1024.jpg 1536w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/AlexLomart_CODEMOTION2023-332-1-2048x1365-1-600x400.jpg 600w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/AlexLomart_CODEMOTION2023-332-1-2048x1365-1.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Una foto de la edici\u00f3n 2023 de la ConferenciaCodemotion Madrid<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-virtual-threads-lo-nuevo-de-java-21\">Virtual Threads, lo nuevo de Java 21<\/h2>\n\n\n\n<p>Los <strong>hilos virtuales, una nueva variante ligera de java.lang.Thread,<\/strong> no est\u00e1n atados a un hilo de plataforma espec\u00edfico y no vienen con una gran cantidad de memoria preasignada para ellos. Se <strong>programan y gestionan en tiempo de ejecuci\u00f3n,<\/strong> no en el sistema operativo subyacente. Esto permite la creaci\u00f3n de un n\u00famero significativamente mayor de hilos ligeros.<\/p>\n\n\n\n<p>Gracias a esto, es m\u00e1s eficiente usar el modelo de &#8220;un hilo por solicitud&#8221; sin preocuparse por cu\u00e1ntos hilos necesitamos en realidad. Si tu c\u00f3digo llama a una operaci\u00f3n de E\/S bloqueante en un hilo virtual, el tiempo de ejecuci\u00f3n suspende el hilo virtual hasta que pueda reanudarse m\u00e1s tarde. De esta manera, el<strong> hardware se utiliza a un nivel casi \u00f3ptimo, <\/strong>lo que resulta en altos niveles de concurrencia y, por lo tanto, en un alto rendimiento.<\/p>\n\n\n\n<p>Adem\u00e1s, debido a su bajo coste en cuestiones de recursos, los <strong>hilos virtuales no se reutilizan ni necesitan ser agrupados. <\/strong>Cada tarea est\u00e1 representada por su propio hilo virtual.<\/p>\n\n\n\n<p>El programador de tareas es responsable de administrar los hilos de soporte, por lo que se requieren ciertos l\u00edmites y separaciones para garantizar que los hilos virtuales se ejecuten como se pretende. Esto puede marcar un cambio significativo en la forma en la que pensamos y manejamos la concurrencia en Java, abriendo nuevas posibilidades para el desarrollo de aplicaciones altamente concurrentes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-poniendo-a-prueba-una-de-las-caracteristicas-mas-importantes-de-java-21\">Poniendo a prueba una de las caracter\u00edsticas m\u00e1s importantes de Java 21<\/h2>\n\n\n\n<p>Todos sabemos que la teor\u00eda es muy bonita, pero en cuanto nos ponemos manos al c\u00f3digo, las cosas cambian y las diferencias se vuelven notables. En el caso que nos ocupa, los hilos virtuales de Java parecen ser el santo Grial que todos est\u00e1bamos esperando. Pero <strong>\u00bfesto es tan bueno como lo pintan? \u00bfMerece la pena implementarlo o es puro humo?<\/strong><\/p>\n\n\n\n<p>Esto es lo que trataremos de descubrir en la charla \u201c<strong>Spring MVC vs Spring Webflux vs Spring MVC con virtual threads, \u00bfqui\u00e9n ganar\u00e1?\u201d<\/strong>. Tras una breve explicaci\u00f3n para repasar todos estos conceptos, pasaremos a la pr\u00e1ctica para poner a prueba estos modelos de construcci\u00f3n de aplicaciones.<\/p>\n\n\n\n<p>Para ello, implementaremos una API sencilla en directo construy\u00e9ndola de 3 formas diferentes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Primero, emplearemos el m\u00e9todo tradicional con Spring MVC, poniendo a prueba el rendimiento y las posibilidades que ofrece la concurrencia de hilos s\u00edncronos.<\/li>\n\n\n\n<li>Para hacer una comparativa realista, a continuaci\u00f3n, implementaremos la misma API empleando Spring Webflux, framework conocido por su enfoque reactivo y su capacidad para manejar un gran n\u00famero de solicitudes simult\u00e1neas de manera eficiente.<\/li>\n\n\n\n<li>Finalmente, volveremos a implementar la API con Spring MVC, pero esta vez utilizando los hilos virtuales de Java 21, para ver si realmente ofrecen todas las ventajas que prometen.<\/li>\n<\/ul>\n\n\n\n<p>El objetivo de la charla ser\u00e1 aprender c\u00f3mo funcionan todos estos <strong>conceptos y conocer sus principales diferencias.<\/strong> De una forma pr\u00e1ctica y divertida, nos haremos una idea de su rendimiento y, entre todos los presentes, podremos decidir qui\u00e9n es el ganador y qu\u00e9 arquitectura es m\u00e1s adecuada seg\u00fan las necesidades de cada proyecto.<\/p>\n\n\n\n<p>La charla se realizar\u00e1 el pr\u00f3ximo <strong>21  de mayo<\/strong>. Como en todas las charlas de la <a aria-label=\"Codemotion  (opens in a new tab)\" href=\"https:\/\/conferences.codemotion.com\/madrid2024\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\">Codemotion <\/a>Madrid 2024, los asistentes podr\u00e1n participar y exponer sus dudas con total libertad, as\u00ed que esperamos tu participaci\u00f3n para hacerlo m\u00e1s interesante. <strong>\u00bfTe apuntas? <\/strong>Tienes toda la info en la web<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-ponente-gabriel-jimenez-pena\">Ponente: <a href=\"https:\/\/www.linkedin.com\/in\/gabriel-jimenez-pena-gjimenez\/?originalSubdomain=es\" target=\"_blank\" aria-label=\"Gabriel Jim\u00e9nez Pe\u00f1a (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">Gabriel Jim\u00e9nez Pe\u00f1a<\/a><\/h2>\n\n\n\n<p>La charla correr\u00e1 a cargo de Gabriel Jim\u00e9nez Pe\u00f1a, Software Architect and Tech Lead en<a aria-label=\" NEXT DIGITAL (opens in a new tab)\" href=\"https:\/\/www.nextdigital.es\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\"> NEXT DIGITAL<\/a>. Acumula 13 a\u00f1os de experiencia desarrollando software con el ecosistema Java, aunque tambi\u00e9n se ha involucrado en otro tipo de proyectos, desde DevOps y Cloud hasta redes y Big Data. Tambi\u00e9n, le apasiona la formaci\u00f3n y, en el \u00faltimo a\u00f1o, ha participado como speaker en varios eventos, entre ellos la edici\u00f3n de Codemotion Madrid 2023. Su lema es: \u201c\u00bfPuedes automatizarlo? \u00a1Hazlo!\u201d.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El pr\u00f3ximo 21 y 22 de mayo se celebrar\u00e1 la Codemotion Madrid 2024, la conferencia m\u00e1s importante del mundo Tech de Europa. Tras el \u00e9xito del a\u00f1o pasado, el evento reunir\u00e1 a desarrolladores y expertos de la industria de todo elmundo para compartir y discutir las \u00faltimas tendencias y tecnolog\u00edas en el \u00e1mbito del desarrollo&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/\">Read more<\/a><\/p>\n","protected":false},"author":177,"featured_media":26972,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[10616,10632],"tags":[11825],"collections":[],"class_list":{"0":"post-26959","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-comunidad","8":"category-frontend-es","9":"tag-conferencia","10":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Spring MVC vs Spring Webflux vs Spring MVC con virtual threads, \u00bfqui\u00e9n ganar\u00e1? - Codemotion Magazine<\/title>\n<meta name=\"description\" content=\"No te pierdas este adelanto de la charla de Gabriel Jim\u00e9nez Pe\u00f1a, Software Architect and Tech Lead at NEXT DIGITAL HUB, en Codemotion Madrid 2024.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spring MVC vs Spring Webflux vs Spring MVC con virtual threads, \u00bfqui\u00e9n ganar\u00e1?\" \/>\n<meta property=\"og:description\" content=\"No te pierdas este adelanto de la charla de Gabriel Jim\u00e9nez Pe\u00f1a, Software Architect and Tech Lead at NEXT DIGITAL HUB, en Codemotion Madrid 2024.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-04-08T07:30:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-09T10:17:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1792\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Natalia de Pablo Garcia\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Natalia de Pablo Garcia\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/\"},\"author\":{\"name\":\"Natalia de Pablo Garcia\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/2450f8e4083152e4feaea1ada456aeee\"},\"headline\":\"Spring MVC vs Spring Webflux vs Spring MVC con virtual threads, \u00bfqui\u00e9n ganar\u00e1?\",\"datePublished\":\"2024-04-08T07:30:00+00:00\",\"dateModified\":\"2024-04-09T10:17:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/\"},\"wordCount\":1070,\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog.webp\",\"keywords\":[\"Conferencia\"],\"articleSection\":[\"Comunidad\",\"Frontend\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/\",\"name\":\"Spring MVC vs Spring Webflux vs Spring MVC con virtual threads, \u00bfqui\u00e9n ganar\u00e1? - Codemotion Magazine\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog.webp\",\"datePublished\":\"2024-04-08T07:30:00+00:00\",\"dateModified\":\"2024-04-09T10:17:19+00:00\",\"description\":\"No te pierdas este adelanto de la charla de Gabriel Jim\u00e9nez Pe\u00f1a, Software Architect and Tech Lead at NEXT DIGITAL HUB, en Codemotion Madrid 2024.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/#primaryimage\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog.webp\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog.webp\",\"width\":1792,\"height\":1024,\"caption\":\"srping MVC vis spring threads\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Comunidad\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Spring MVC vs Spring Webflux vs Spring MVC con virtual threads, \u00bfqui\u00e9n ganar\u00e1?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Codemotion.Italy\/\",\"https:\/\/x.com\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/2450f8e4083152e4feaea1ada456aeee\",\"name\":\"Natalia de Pablo Garcia\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2023\/11\/Untitled-design-100x100.jpg\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2023\/11\/Untitled-design-100x100.jpg\",\"caption\":\"Natalia de Pablo Garcia\"},\"sameAs\":[\"www.linkedin.com\/in\/nataliadepablo\"],\"url\":\"https:\/\/www.codemotion.com\/magazine\/author\/natalia-de-pablo-garcia\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Spring MVC vs Spring Webflux vs Spring MVC con virtual threads, \u00bfqui\u00e9n ganar\u00e1? - Codemotion Magazine","description":"No te pierdas este adelanto de la charla de Gabriel Jim\u00e9nez Pe\u00f1a, Software Architect and Tech Lead at NEXT DIGITAL HUB, en Codemotion Madrid 2024.","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:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/","og_locale":"en_US","og_type":"article","og_title":"Spring MVC vs Spring Webflux vs Spring MVC con virtual threads, \u00bfqui\u00e9n ganar\u00e1?","og_description":"No te pierdas este adelanto de la charla de Gabriel Jim\u00e9nez Pe\u00f1a, Software Architect and Tech Lead at NEXT DIGITAL HUB, en Codemotion Madrid 2024.","og_url":"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2024-04-08T07:30:00+00:00","article_modified_time":"2024-04-09T10:17:19+00:00","og_image":[{"width":1792,"height":1024,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog.webp","type":"image\/webp"}],"author":"Natalia de Pablo Garcia","twitter_card":"summary_large_image","twitter_creator":"@CodemotionIT","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Natalia de Pablo Garcia","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/"},"author":{"name":"Natalia de Pablo Garcia","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/2450f8e4083152e4feaea1ada456aeee"},"headline":"Spring MVC vs Spring Webflux vs Spring MVC con virtual threads, \u00bfqui\u00e9n ganar\u00e1?","datePublished":"2024-04-08T07:30:00+00:00","dateModified":"2024-04-09T10:17:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/"},"wordCount":1070,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog.webp","keywords":["Conferencia"],"articleSection":["Comunidad","Frontend"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/","url":"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/","name":"Spring MVC vs Spring Webflux vs Spring MVC con virtual threads, \u00bfqui\u00e9n ganar\u00e1? - Codemotion Magazine","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog.webp","datePublished":"2024-04-08T07:30:00+00:00","dateModified":"2024-04-09T10:17:19+00:00","description":"No te pierdas este adelanto de la charla de Gabriel Jim\u00e9nez Pe\u00f1a, Software Architect and Tech Lead at NEXT DIGITAL HUB, en Codemotion Madrid 2024.","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog.webp","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog.webp","width":1792,"height":1024,"caption":"srping MVC vis spring threads"},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/spring-mvc-vs-spring-webflux-vs-spring-mvc\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Comunidad","item":"https:\/\/www.codemotion.com\/magazine\/es\/comunidad\/"},{"@type":"ListItem","position":3,"name":"Spring MVC vs Spring Webflux vs Spring MVC con virtual threads, \u00bfqui\u00e9n ganar\u00e1?"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/2450f8e4083152e4feaea1ada456aeee","name":"Natalia de Pablo Garcia","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2023\/11\/Untitled-design-100x100.jpg","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2023\/11\/Untitled-design-100x100.jpg","caption":"Natalia de Pablo Garcia"},"sameAs":["www.linkedin.com\/in\/nataliadepablo"],"url":"https:\/\/www.codemotion.com\/magazine\/author\/natalia-de-pablo-garcia\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog-600x400.webp","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog-600x600.webp","author_info":{"display_name":"Natalia de Pablo Garcia","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/natalia-de-pablo-garcia\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog.webp",1792,1024,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog-150x150.webp",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog-300x171.webp",300,171,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog-768x439.webp",768,439,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog-1024x585.webp",1024,585,true],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog-1536x878.webp",1536,878,true],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog.webp",1792,1024,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog-100x100.webp",100,100,true],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog-180x128.webp",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog-896x504.webp",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog-400x225.webp",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog-600x400.webp",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/04\/DALL\u00b7E-2024-04-05-12.28.45-Illustrate-a-cartoon-style-image-showing-a-developer-coding-on-two-different-platforms-to-represent-coding-versatility-without-any-specific-technolog-600x600.webp",600,600,true]},"uagb_author_info":{"display_name":"Natalia de Pablo Garcia","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/natalia-de-pablo-garcia\/"},"uagb_comment_info":0,"uagb_excerpt":"El pr\u00f3ximo 21 y 22 de mayo se celebrar\u00e1 la Codemotion Madrid 2024, la conferencia m\u00e1s importante del mundo Tech de Europa. Tras el \u00e9xito del a\u00f1o pasado, el evento reunir\u00e1 a desarrolladores y expertos de la industria de todo elmundo para compartir y discutir las \u00faltimas tendencias y tecnolog\u00edas en el \u00e1mbito del desarrollo&#8230;&hellip;","lang":"es","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/26959","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/177"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=26959"}],"version-history":[{"count":3,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/26959\/revisions"}],"predecessor-version":[{"id":27016,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/26959\/revisions\/27016"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/26972"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=26959"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=26959"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=26959"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=26959"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}