Una mirada al futuro de JavaScript
Publicado: 2022-03-11Cada mercado se rige por ciertos conceptos comunes, y el desarrollo de JavaScript no es una excepción.
El ciclo de vida del producto es un concepto que puede aplicar a varios entornos diferentes para comprender y predecir su comportamiento. Es un concepto de negocio que nos ayuda a comprender las etapas por las que pasa un producto durante su vida, explicando el impacto de estas etapas en su medida de popularidad, en la mayoría de los casos, las ventas. Si observamos los patrones de comportamiento del mercado, podemos estimar la etapa actual de un producto y, por lo tanto, hacer algunas predicciones sobre su popularidad.
Hay cuatro etapas: introducción, crecimiento, madurez y declive, y en el gráfico anterior, puede ver el impacto en las ventas de productos esperadas para cada etapa. Por ejemplo, las ventas de teléfonos inteligentes no están creciendo como hace cinco años, en realidad, es todo lo contrario, por lo que podemos decir con justicia que los teléfonos inteligentes están entrando en su etapa de madurez.
En los últimos años, hemos visto la introducción de muchas tecnologías nuevas en JavaScript, pero necesitábamos tiempo para ver cómo las iba a adoptar el mercado. Nadie quiere ser el especialista en otra tecnología prometedora que termina con una adopción cero. Ahora, sin embargo, es el momento de echar otro vistazo. En este artículo, analizaré qué tan popular se está volviendo JavaScript y los factores que pueden haber afectado esta popularidad, y trataré de predecir cómo será el futuro de JavaScript.
El futuro de las características del lenguaje JavaScript
Desde que la Asociación Europea de Fabricantes de Computadoras (ECMA) estableció el ciclo de lanzamiento anual para ECMAScript, una especificación de JavaScript estandarizada, no hemos visto muchas características nuevas en el lenguaje, solo algunas cada año. Esta podría ser una de las razones por las que vimos un aumento en la adopción de lenguajes que se compilan en ES5 como TypeScript o ReasonML, ya que ambos aportan características al lenguaje que son muy solicitadas por la comunidad. Esto no es nuevo: JavaScript pasó por este proceso antes (CoffeeScript) y, al final, esas funciones terminaron fusionándose con el estándar del lenguaje en sí mismo, y ese es probablemente el futuro que podemos esperar para estas nuevas funciones escritas también.
Pero ahora estamos comenzando a ver un cambio de juego en el mercado de compilación a js con la creciente disponibilidad de WebAssembly en los navegadores. Ahora, podemos usar casi cualquier idioma y compilarlo para que se ejecute a una velocidad casi nativa en un navegador y, lo que es más importante, estamos comenzando a ver soporte para características preparadas para el futuro, como soporte para subprocesos que nos permitirán aprovechar la multi -arquitectura de procesador que representa el futuro inevitable de todos los dispositivos.
La cadena de herramientas oficial para WebAssembly lo ayudará a compilar C/C++, pero hay muchos compiladores proporcionados por la comunidad para diferentes lenguajes, como Rust, Python, Java y Blazor (C#).
En particular, la comunidad de Rust es bastante activa y comenzamos a ver frameworks front-end completos como Yew y Dodrio.
Esto brinda muchas posibilidades nuevas a las aplicaciones basadas en navegador, y solo necesita probar algunas de las excelentes aplicaciones creadas con WebAssembly para ver que las aplicaciones basadas en navegador casi nativas ahora son una realidad, por ejemplo, Sketchup o Magnum.
La adopción de lenguajes escritos que se compilan en ES5 es lo suficientemente madura, los reproductores están bien establecidos y no desaparecerán (o se fusionarán con ES) en un futuro cercano, pero veremos un cambio lento a favor de los lenguajes escritos con Asamblea web.
Web
Marcos frontales
Todos los años, vemos una gran pelea en el mercado de marcos front-end para la web, y React ha sido el ganador indiscutible en los últimos años, desde la introducción de su tecnología revolucionaria, Virtual DOM, vimos un casi adopción obligada de sus contrapartes para seguir siendo relevantes en la batalla.
Hace algunos años, vimos la introducción de un nuevo enfoque radical para el desarrollo de aplicaciones web con Svelte, el "marco del compilador" que desaparece en el momento de la compilación, dejando un código JavaScript pequeño y altamente eficiente. Sin embargo, esa característica no fue suficiente para convencer a la comunidad de cambiarse a Svelte, pero con el reciente lanzamiento de Svelte 3.0, introdujeron una programación reactiva real en el marco y la comunidad está encantada, por lo que tal vez estemos presenciando el próximo gran avance. -marcos finales.
Inspirado en el operador de destino:
var a = 10; var b <= a + 1; a = 20; Assert.AreEqual(21, b);
Svelte aporta reactividad a JavaScript al sobrecargar el uso de declaraciones de etiquetas con reactividad en tiempo de compilación al indicar al código que se ejecute en orden topológico:
var a = 10; $: b = a + 1; a = 20; Assert.AreEqual(21, b);
Esta es una idea radicalmente nueva que podría ayudar en diferentes contextos, por lo que el creador de Svelte también está trabajando en svelte-gl, un marco de compilación que generará instrucciones WebGL de bajo nivel directamente desde un gráfico de escena 3D declarado en HTMLx.
No hace falta decir que React, Angular y Vue.js no desaparecerán de la noche a la mañana, sus comunidades son enormes y seguirán siendo relevantes durante varios años; ni siquiera estamos seguros de si Svelte será el sucesor real, pero puede estar seguro de algo: usaremos algo diferente tarde o temprano.
WebXR y el futuro de la web inmersiva
La realidad virtual ha estado luchando durante los últimos 60 años para encontrar un lugar en la corriente principal, pero la tecnología aún no estaba lista. Hace menos de diez años, cuando Jon Carmack se unió a Oculus VR (ahora parte de Facebook Technologies, LLC), comenzó a surgir una nueva ola de VR y, desde entonces, hemos visto muchos dispositivos nuevos compatibles con diferentes tipos de VR y por supuesto, la proliferación de aplicaciones con capacidad VR.
Los proveedores de navegadores no querían perder esta oportunidad, por lo que se unieron a la especificación WebVR que permite la creación de mundos virtuales en JavaScript con WebGL y bibliotecas bien establecidas como three.js. Sin embargo, la participación de mercado de los usuarios con dispositivos 6dof aún era insignificante para las implementaciones web masivas, pero la web móvil aún podía brindar una experiencia 3D con la API de orientación del dispositivo, por lo que vimos un montón de experimentos y muchos videos 360 para Un rato.
En 2017, con la introducción de ARKit y ARCore, se incorporaron nuevas capacidades a los dispositivos móviles y todo tipo de aplicaciones con experiencias AR y MR.
Sin embargo, todavía se siente un poco antinatural descargar una aplicación específica para una experiencia AR específica cuando exploras el mundo que te rodea. Si solo pudiéramos tener una aplicación para explorar diferentes experiencias… Esto suena familiar. Resolvimos ese problema en el pasado con el navegador, ¿por qué no darle otra oportunidad?

El año pasado, Mozilla presentó WebXR Device API Spec (cuyo último borrador de trabajo, en el momento de escribir este artículo, es de hace dos semanas) para llevar las capacidades AR, VR y MR (ergo XR) al navegador.
Algunos de los proveedores de navegadores más importantes siguieron con su implementación, con una excepción importante: Safari móvil, por lo que para probar su punto, Mozilla lanzó un navegador compatible con WebXR bajo la plataforma iOS WebXR Viewer.
Ahora, este es un paso importante porque la combinación de AR y VR trae 6dof a dispositivos móviles y auriculares basados en dispositivos móviles como Google Cardboard o Samsung Gear VR, como puede ver en este ejemplo, aumentando la participación de mercado de dispositivos 6dof por un gran margen y posibilitando la posibilidad de un despliegue web a gran escala.
Al mismo tiempo, los chicos de Mozilla han estado trabajando en un nuevo framework web para facilitar la creación de aplicaciones y mundos 3D llamado A-Frame, un framework declarativo basado en componentes con sintaxis HTML basada en three.js y WebGL, que acaba de una cosa en mente: traer de vuelta la diversión y la facilidad de uso a la programación web.
Esto es parte de su cruzada por la web inmersiva, un nuevo conjunto de ideas sobre cómo debería ser la web en el futuro. Afortunadamente para nosotros, no están solos y comenzaremos a ver más y más experiencias inmersivas en la web.
Si quiere probarlo, descargue WebXR Viewer y visite este sitio para ver las posibilidades de la web inmersiva.
Una vez más, las aplicaciones estándar basadas en navegador no se desvanecerán en uno o dos años, probablemente siempre las tendremos. Pero las aplicaciones 3D y las experiencias XR están creciendo y el mercado está listo y ansioso por tenerlas.
Soporte nativo para ES6
Casi todas las tecnologías inventadas en JavaScript en la última década se crearon para resolver problemas generados por la implementación subyacente de los navegadores, pero la plataforma en sí ha madurado mucho en los últimos años y la mayoría de esos problemas han desaparecido, como podemos ver. con Lodash, que una vez reinó en los puntos de referencia de rendimiento.
Lo mismo está ocurriendo con el DOM, cuyos problemas alguna vez fueron la verdadera inspiración para la creación de frameworks de aplicaciones web. Ahora, es una API madura que puede usar sin marcos para crear aplicaciones; en realidad, eso es lo que son los componentes web. Son el “marco” de la plataforma para crear aplicaciones basadas en componentes.
Otra parte interesante de la evolución de la plataforma es el propio lenguaje. Hemos estado usando Babel.js durante los últimos años para poder usar las funciones más recientes de ECMAScript, pero dado que el estándar en sí comenzó a estancarse un poco en los últimos años, fue suficiente tiempo para permitir que los proveedores de navegadores para implementar la mayoría de sus características, incluido el soporte nativo de la declaración de importación estática. Entonces, ahora podemos comenzar a considerar la creación de aplicaciones sin Babel.js u otros compiladores, ya que tenemos (nuevamente) el soporte de las características del lenguaje en la propia plataforma, y dado que Node.js usa la misma máquina virtual V8 que Google Chrome. , comenzamos a ver una mayor compatibilidad con ES6 en Node.js, incluso con la declaración de importación estática bajo el indicador de módulos experimentales.
Esto no significa que dejaremos de ver aplicaciones compiladas a nivel profesional, pero significa que comenzar con una aplicación basada en navegador será tan fácil y divertido como lo fue antes.
JavaScript del lado del servidor
Aunque JavaScript comenzó en el lado del servidor en 1995 con Netscape Enterprise Server, no fue hasta la presentación de Dahl de Ryan en 2009 que JavaScript comenzó a considerarse seriamente para las aplicaciones del lado del servidor. Muchas cosas sucedieron en la última década con Node.js. Evolucionó y maduró mucho, creando una vez más la oportunidad para la disrupción y las nuevas tecnologías.
En este caso, viene de la mano de su propio creador, Ryan Dahl, quien ha estado trabajando en una nueva perspectiva de las aplicaciones seguras del lado del servidor con Deno, una plataforma que admite de forma nativa las últimas características del lenguaje como async/await, y también el lenguaje de compilación a js más popular TypeScript, que apunta al mejor rendimiento gracias a su implementación en Rust y al uso de Tokio, pero lo que es más importante, con una nueva filosofía de seguridad que lo diferencia de la mayoría de las plataformas del lado del servidor como Python, Rubí o Java). Inspirado en el modelo de seguridad del navegador, Deno le permitirá usar los recursos del host solo después de que el usuario otorgue explícitamente los permisos al proceso, lo que puede sonar un poco tedioso al principio, pero puede tener muchas implicaciones al permitir nosotros para ejecutar código no seguro en un entorno seguro simplemente confiando en la plataforma.
Node.js seguirá estando allí en el futuro, pero es posible que comencemos a ver servicios sin servidor como AWS Lambda y Azure Functions para proporcionar la funcionalidad de Deno como una alternativa para proporcionar ejecución de código del lado del servidor no seguro en sus sistemas.
Conclusión
Estos son tiempos emocionantes en el mundo de JavaScript: muchas tecnologías han madurado lo suficiente como para dejar espacio para la innovación, la comunidad activa nunca se detuvo para sorprendernos con sus ideas brillantes e increíbles, y esperamos muchas alternativas nuevas a las herramientas bien establecidas. ya que sus etapas maduras están llegando rápidamente; no dejaremos de usarlos ya que muchos de ellos son realmente buenos y hay muchas pruebas en el campo de batalla, pero comenzarán a surgir mercados nuevos y emocionantes, y es mejor que esté preparado.
Mantenerse actualizado con lo último en el mundo de JavaScript no es fácil debido al ritmo de desarrollo, pero hay algunas fuentes que realmente pueden ayudar. Primero, la fuente de noticias más importante, en mi opinión, es Echo JS, donde puedes encontrar una cantidad increíble de contenido nuevo cada hora. Sin embargo, si no tiene tiempo, el boletín JavaScript Weekly es un excelente resumen de la semana en JS. Además de esto, también es importante estar atento a las conferencias en todo el mundo, y los canales de YouTube como JSConf, React Conf y Google Chrome Developers son de gran ayuda.
Por el contrario, si está interesado en ver alguna crítica constructiva de hacia dónde se dirige JavaScript, le recomiendo leer Como desarrollador de JS, esto es lo que me mantiene despierto por la noche por el desarrollador de JavaScript Justen Robertson.
Lecturas adicionales en el blog de ingeniería de Toptal:
- TypeScript vs. JavaScript: su guía de referencia