Aplicaciones web de alto rendimiento con Emscripten
Aprovecha al máximo el poder de cómputo del navegador compilando código C++ a WebAssembly con Emscripten
Description
¡Bienvenidos al curso "Aplicaciones web de alto rendimiento con Emscripten"!
De a poco, la web 2.0 va quedando atrás. La descentralización de aplicaciones implica mover el soporte de cómputo del servidor al cliente y para ello, se requiere cada vez más eficiencia computacional en el lado del usuario, un rendimiento que hasta hace poco, sólo era posible alcanzar implementando software nativo. Sin embargo, brindar soporte multiplataforma con este enfoque requiere del manejo de un amplio espectro de tecnologías, elevando los costos y aplazando los tiempos de desarrollo. La alternativa que nos queda para crear aplicaciones computacionalmente eficientes y compatibles con una amplia gama de dispositivos, es emplear WebAssembly, un formato de código binario para la ejecución de programas en el navegador web casi tan veloces como sus equivalentes nativos.
Puede ser que el rendimiento no sea un problema para ciertos productos, pero ¿Qué ocurre con el soporte offline? Seguramente vaya en contra de las políticas de seguridad o protección de código fuente el tener que mover la ejecución del modelo de negocios o del núcleo del sistema al lado del cliente y más aún si la implementación funciona con lenguajes como JavaScript, ya que por más avanzadas que sean las técnicas de ofuscación que se apliquen, resulta susceptible a la copia ilegal, ingeniería inversa y modificación de código (code-tampering). Con WebAssembly contamos con una capa más de seguridad, ya que el mismo formato binario resulta notablemente más difícil de analizar y para un atacante, el costo de deducir el funcionamiento del sistema compilado, probablemente sea mayor que realizar una implementación completa o incluso parcial del mismo.
En este curso aprenderemos los conceptos básicos de WebAssembly y Emscripten, un compilador para C y C++ que nos permite ejecutar código generado con estos lenguajes en la web, tanto en entornos frontend como backend. Nos enfocaremos principalmente en el desarrollo de aplicaciones web y cómo instanciar métodos programados en C o C++ desde nuestro código JavaScript y viceversa, es decir, lograr una comunicación bidireccional entre código interpretado (JS) y compilado (C y C++). Veremos algunos conceptos básicos de debuggeo y trabajaremos con aplicaciones reales implementando proyectos integradores. Finalmente, crearemos una aplicación híbrida con React y Capacitor para comprobar el correcto funcionamiento de WebAssembly en un dispositivo móvil.
Lo que aprendas en este curso te permitirá destacarte como desarrollador web frente a los perfiles tradicionales y podrás aplicarlo en múltiples contextos, desde la computación científica, el desarrollo de aplicaciones decentralizadas, el diseño de videojuegos, hasta aplicaciones de inteligencia artificial y mucho más.
Programa
Capítulo 1 - Introducción a WebAssembly
Clase 1: Qué es WebAssembly.
Clase 2: Ejecutando código compilado en el navegador.
Clase 3: Invocando métodos JavaScript desde C.
Clase 4: Accediendo a la memoria para leer datos.
Capítulo 2 - Introducción a Emscripten
Clase 5: Documentación y tutoriales.
Clase 6: Alternativas a Emscripten.
Clase 7: Instalación de Emscripten.
Clase 8: Compilando código C.
Clase 9: Generando archivos JS y HTML.
Clase 10: Creando librerías con clases.
Capítulo 3 - Proyecto integrador I: comparativa de rendimiento.
Clase 11: Consigna del proyecto integrador I.
Clase 12: Implementación del esquema de comparación.
Clase 13: Implementación de algoritmos.
Clase 14: Contenido de la GUI.
Clase 15. Presentación de resultados.
Capítulo 4 - Proyecto integrador II: app híbrida para edición de imágenes.
Clase 16: Consigna del proyecto integrador II.
Clase 17: Instalación de frameworks y librerías.
Clase 18: Implementación de algoritmos en JS.
Clase 19: Implementación de algoritmos en WASM.
Clase 20: Prueba de la app en un emulador de móvil Android.
What You Will Learn!
- Importar y ejecutar código binario WebAssembly en una página web.
- Compilar código C/C++ a WebAssembly con Emscripten.
- Enviar y recibir datos entre métodos JavaScript y C/C++.
- Implementar aplicaciones web de alto rendimiento.
Who Should Attend!
- Desarrolladores web frontend que necesiten implementar métodos de alto rendimiento computacional.