This post describes early experimental work from JetBrains and Google. You can learn more in the session on WebAssembly at Google I/O 2023.
Los desarrolladores de apps quieren llegar a tantos usuarios en tantas plataformas como sea posible. Hasta ahora, ese objetivo implicaba crear una app para Android, otra para iOS y otra para la Web, así como crear los servidores de backend y la infraestructura para alimentarlas.
Para reducir el esfuerzo, algunos desarrolladores utilizan lenguajes y marcos de trabajo multiplataforma para desarrollar la lógica empresarial y la IU de sus apps. Antes, llevar estas apps multiplataforma a la Web implicaba “compilar” código de aplicación compartido en una versión de JavaScript más lenta, que pudiera ejecutarse en el navegador. En cambio, los desarrolladores ahora suelen reescribir sus apps en JavaScript o simplemente dirigen a los usuarios web a fin de que descarguen sus aplicaciones nativas para dispositivos móviles.
La comunidad web está desarrollando una mejor alternativa: soporte web directo para lenguajes modernos gracias a una nueva tecnología llamada WebAssembly GC. Esta nueva función web permite que el código multiplataforma escrito en lenguajes compatibles se ejecute con un rendimiento casi nativo en todos los navegadores principales.
Nos complace implementar el soporte experimental para esta nueva capacidad en la Web para Kotlin, que permite desbloquear nuevas oportunidades de intercambio de código con un rendimiento más rápido para los desarrolladores de Android y la Web.
Kotlin es un lenguaje productivo y poderoso que se utiliza en el 95% de las 1000 mejores apps para Android. Los desarrolladores dicen que, después de comenzar a usar Kotlin, son más productivos y producen menos errores.
Los marcos de trabajo Kotlin Multiplatform Mobile y Compose Multiplatform de JetBrains ayudan a los desarrolladores a compartir código entre sus apps para Android y iOS. Estos marcos de trabajo ahora ofrecen soporte experimental para la compilación de Kotlin en WebAssembly. Los primeros experimentos indican que el código de Kotlin se ejecuta hasta 2 veces más rápido en la Web cuando se utiliza WebAssembly en lugar de JavaScript.
JetBrains comparte más detalles en las notas de la versión 1.18.20 de su compilador K2, así como documentación sobre cómo puedes probar Kotlin/Wasm con tu app.
Para implementar lenguajes móviles modernos como Kotlin en la Web, fue necesario resolver problemas técnicos desafiantes, como la recolección de elementos no utilizados de varios lenguajes y la interoperabilidad de JavaScript. Puedes obtener más información en la sesión sobre nuevos lenguajes de WebAssembly de la conferencia Google I/O de este año.
Este trabajo no habría sido posible sin una colaboración abierta entre proveedores de navegadores, académicos y proveedores de servicios en toda la Web, como parte del W3C WebAssembly Community Group. En las próximas semanas, compartiremos detalles técnicos sobre este innovador trabajo en el blog de V8.
Durante décadas, los desarrolladores soñaron con la Web como una especie de “tiempo de ejecución universal”, al tiempo que reconocían determinadas brechas en las funciones o el rendimiento en relación con las plataformas nativas. Durante mucho tiempo, los desarrolladores tuvieron que optar por trabajar en sus apps web o en sus apps nativas para dispositivos móviles.
Sin embargo, queremos que puedas trabajar en tus experiencias web y nativas juntas, no solo para ayudarte a reducir el esfuerzo, sino también para ayudarte a aprovechar los superpoderes únicos de la Web.
En la Web abierta, tu app está a solo un clic de los nuevos usuarios, que pueden descubrirla y compartirla con la misma facilidad con la que comparten una página web, sin que las tiendas de apps se interpongan en el camino y sin que la división de ingresos afecte a tu rentabilidad.
La productividad del desarrollo multiplataforma, el rendimiento de las aplicaciones nativas para dispositivos móviles y la apertura de la Web. Por todo esto, nos encanta WebAssembly.
¡Tenemos muchas ganas de ver tus próximas creaciones!