Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=3a54a812-429b-499b-8b61-28d368857f80

JavaScript: la historia del lenguaje que cambió la web

Imagen ornamental de portada¿Sabias que JavaScript se diseñó y se programó en tan solo 10 días? Pues sí, fue de entrada tan solo un experimento, pero mira en dónde está hoy. A pesar de ello y de todos sus problemas, hoy sigue siendo uno de los lenguajes de programación más populares. Eso sí, es un lenguaje que no deja indiferente: o lo adoras o lo odias.

Yo tuve la suerte de vivir los inicios de la Web y de JavaScript, así que conozco de primera mano toda su historia. Hoy vamos a repasar la historia de JavaScript y veremos cómo pasó de ser un simple complemento de navegadores a un pilar fundamental de la programación moderna. Es una historia interesante y larga que voy a procurar resumir para que sea soportable.

A continuación te cuento su historia en vídeo y, si eres de las personas que prefieren leer, justo debajo lo tienes todo escrito 😉

ENLACES mencionados en el vídeo:

El nacimiento y evolución de JavaScript

Para entender el impacto de JavaScript en el mundo de la programación, es crucial remontarse a sus humildes orígenes. En 1995, Netscape, que si eres muy joven no te sonará pero que era un gigante de los albores de la Web, encargó a un programador llamado Brendan Eich (el actual CEO del navegador Brave y que en los últimos tiempos ha sido una persona muy polémica por sus declaraciones) la tarea de crear un lenguaje para mejorar la interactividad de su navegador, Netscape Navigator. Lo que siguió fue un frenético período de desarrollo de 10 días. Sí, la primera versión de JavaScript se creó en tan solo 10 días: bastante bueno salió si lo vemos desde esta perspectiva.

Originalmente el lenguaje se llamó LiveScript. Sin embargo, para aprovechar la popularidad brutal de otro lenguaje que nacía también por aquella época, y que no era otro que Java, renombraron la creación como JavaScript. Y lo demás es historia, como se suele decir.

Aunque Java y JavaScript comparten similitudes sintácticas superficiales, son dos lenguajes completamente diferentes que no tienen prácticamente nada que ver.

La inclusión de JavaScript en Netscape Navigator 2.0 en aquel año 1995 fue un punto de inflexión para la web. Los desarrolladores de todo el mundo comenzaron a experimentar con este nuevo lenguaje, desbloqueando posibilidades antes inimaginables en el mundo de las páginas web estáticas.

Uno de los primeros ejemplos llamativos del potencial de JavaScript y que hoy en día nos parece una cosa superbásica pero que fue grande en aquel momento, fue la creación de rollovers de imágenes, donde una imagen cambiaba cuando el cursor del mouse se posaba sobre ella. Este simple efecto marcó el comienzo de una era de interactividad web que continuaría expandiéndose con el tiempo hasta nuestros días.

Durante muchos años lo más de lo más fue una cosa que se llamaba DHTML o HTML dinámico que surgió con JavaScript y permitía hacer cosas como lo de los rollovers. Gracias a la introducción del BOM primero (modelo de objetos del navegador en inglés) y el más potente y estándar DOM (modelo de objetos del documento) después, combinándolo con JavaScript se permitía añadir dinamismo a las páginas Web, mucho más allá que la validación de formularios y mostrar diálogos, que era casi lo único que se podía hacer en los principios del lenguaje.

Los desafíos y críticas iniciales hacia JavaScript

Aunque JavaScript pronto se estableció como un actor principal en el escenario de la programación web, no estuvo exento de críticas y desafíos. Su desarrollo acelerado y su conexión oportunista con Java dieron lugar a un lenguaje con peculiaridades que dejaban perplejos a muchos programadores.

Uno de los principales puntos de crítica fue su velocidad. En sus primeros días, JavaScript ganó una reputación de ser lento y propenso a errores, lo cual era cierto. Además era un lenguaje lleno de rarezas, y lo sigue siendo. Si no has visto la mítica charla de 4 minutos "Wat" que te muestra un montón de ejemplos de cosas raras que hace el lenguaje, deberías parar de escuchar esto e ir a verla ahora mismo, te dejo en enlace en la descripción.

Todo esto llevó a muchos desarrolladores a buscar alternativas, como por ejemplo en el propio lenguaje Java y sus tristemente famosos applets para el navegador. Los applets Java ofrecían una plataforma versátil para la creación de contenido interactivo, pero su despliegue requería la instalación de la máquina virtual Java en el navegador del usuario, lo que a menudo resultaba engorroso y poco práctico. Además, eran propensos a los problemas de seguridad. Hace años que por suerte están desaparecidos.

Otra opción que surgió de la mano de Microsoft y su navegador Internet Explorer fue VBScript. Ofrecía una alternativa para el desarrollo de aplicaciones web muy parecida a JavaScript pero basada en el lenguaje Visual Basic. Sin embargo, su adopción fue limitada fuera del entorno Windows debido a la falta de soporte en otros navegadores y a la mala imagen que tenía Microsoft en aquella época.

Por cierto, el primer libro de programación que escribí fue precisamente de VBScript, allá por el año 1996. Buff...

También tuvieron su propia variante de JScript, casi idéntica pero no del todo, que contribuyó a la enorme complicación que existía en aquella época para crear aplicaciones Web que funcionasen bien en todos los navegadores. Si no lo viviste... enhorabuena, pero tampoco te harás una idea de lo duro que era hacer programación Web en aquellos años.

A pesar de estas alternativas, JavaScript emergió como el claro favorito debido a su simplicidad, portabilidad y a que estaba disponible en todos los navegadores.

La Revolución AJAX

A medida que la web evolucionaba y los usuarios demandaban experiencias más dinámicas y rápidas, surgió una nueva técnica que cambiaría para siempre la forma en que interactuamos con los sitios web: AJAX (Asynchronous JavaScript and XML).

Mucha gente no lo sabe, pero esto lo inventó Microsoft para dar soporte a su cliente web de email Outlook, allá por finales de los años 90 del siglo pasado. Metió el objeto XHR en Internet Explorer para poder hacer las llamadas asíncronas al servidor Web. La idea era tan buena y tan radical que los demás navegadores lo incorporaron también.

La técnica AJAX permitía a los desarrolladores web actualizar partes específicas de una página sin tener que recargarla por completo. Esto significaba que los usuarios podían realizar acciones como enviar formularios, cargar nuevos contenidos y actualizar datos en tiempo real, todo ello sin interrupciones visibles en la experiencia de navegación. Esto se lograba a través de la combinación del objeto XMLHttpRequest conocido de manera más abreviada como XHR, un objeto de JavaScript que permitía la comunicación con el servidor en segundo plano, y la manipulación del DOM (Document Object Model) para actualizar la página con los datos recibidos.

La introducción de AJAX revolucionó la forma en que se desarrollaban las aplicaciones web, allanando el camino para la creación de aplicaciones web ricas (o RIAs) que se percibían más como aplicaciones de escritorio que como páginas estáticas en un navegador.

La aparición de AJAX reforzó la posición de JavaScript como el lenguaje del cliente por excelencia en el desarrollo web. Los desarrolladores comenzaron a explorar nuevas formas de utilizar JavaScript para crear aplicaciones web complejas y altamente interactivas, sentando las bases para el florecimiento de frameworks y bibliotecas modernas como jQuery, Angular, React y Vue.js.

Las RIA, la Web 2, Flash y Silverlight

A medida que las tecnologías web avanzaban hacia la creación de experiencias más interactivas y dinámicas, surgieron las Rich Internet Applications (RIAs), aplicaciones web que combinaban las funcionalidades y la riqueza de las aplicaciones de escritorio con la accesibilidad y la portabilidad de la web. En aquella época se empezó a hablar de la Web 2.0.

JavaScript y el DOM no eran suficientes para crear aplicaciones tan potentes como las que tenemos hoy en día así que, en este contexto, aparecieron proyectos como Adobe Flash y Silverlight de Microsoft, que eran una alternativa a JavaScript y a los applets de Java y permitían hacer cosas verdaderamente potentes.

Flash, desarrollado inicialmente por una empresa ya desaparecida llamada Macromedia que posteriormente compró Adobe, fue una de las primeras tecnologías en permitir la creación de RIA. Con su capacidad para renderizar gráficos vectoriales, reproducir audio y video de forma fluida y admitir animaciones interactivas, Flash se convirtió en la opción preferida para el desarrollo de aplicaciones web multimedia.

Las aplicaciones y juegos basados en Flash se volvieron omnipresentes en la web, ofreciendo experiencias de usuario envolventes y altamente interactivas. Desde sitios web de entretenimiento hasta aplicaciones de e-learning y presentaciones multimedia, Flash dejó una marca indeleble en la forma en que interactuamos con el contenido en línea.

Sin embargo, a pesar de su popularidad inicial, Flash comenzó a perder terreno a medida que surgían preocupaciones sobre su rendimiento, accesibilidad y seguridad. Con el advenimiento de estándares web abiertos como HTML5, CSS3 y JavaScript, que ofrecían capacidades similares de multimedia y animación directamente en el navegador, el uso de Flash comenzó a disminuir. El principio de su fin fue cuando Steve Jobs presentó el iPhone en 2007 y dijo explícitamente que no iba a soportar Flash y que el nuevo y espectacular dispositivo apostaba totalmente por el avance de los nuevos estándares para de HTML.

Aunque su muerte real fue muy anterior, la oficial llegó en 2020, cuando Adobe anunció el fin del soporte para Flash Player y recomendó a los desarrolladores migrar sus aplicaciones y contenidos a tecnologías web estándar.

La otra gran alternativa que surgió en aquella época de principios de siglo fue Silverlight. Desarrollado por Microsoft como una respuesta a Flash, tenía como objetivo ofrecer una plataforma para el desarrollo de aplicaciones web interactivas y multimedia para la plataforma .NET. Con características similares a Flash, como la reproducción de vídeo, gráficos vectoriales y animaciones, Silverlight buscaba integrarse estrechamente con las herramientas y tecnologías de desarrollo de Microsoft aunque funcionaba mediante plugins en todos los navegadores.

Inicialmente, Silverlight ganó tracción como una alternativa a Flash, especialmente en el ecosistema empresarial que ya estaba familiarizado con las tecnologías de Microsoft. Se utilizaron aplicaciones Silverlight en una variedad de áreas, desde la transmisión de vídeo en línea hasta aplicaciones de negocios complejas.

Sin embargo, a medida que las tecnologías web estándar ganaban terreno y la preferencia por soluciones multiplataforma se volvía más prominente, Silverlight comenzó a perder su relevancia. En 2012, Microsoft anunció que Silverlight dejaría de ser desarrollado activamente y recomendó también a los desarrolladores utilizar HTML5 y JavaScript para aplicaciones web.

Aún hay muchos desarrolladores que hoy en día tienen pesadillas pensando en Silverlight, la inversión que hicieron en la tecnología y que Microsoft, al final, los dejase tirados. Muchos juraron no volver a confiar en la empresa, pero lo cierto es que acabar con Silverlight fue un acierto. Quizá, más bien, nunca debieron empezar con esa tecnología.

A pesar de su eventual declive, tanto Flash como Silverlight desempeñaron un papel importante en la evolución de las RIA y contribuyeron al impulso hacia experiencias web más ricas e interactivas. Su legado sigue vivo en la forma en que concebimos y desarrollamos aplicaciones web en la actualidad.

Avances tecnológicos y esfuerzos de la industria para mejorar JavaScript

A medida que crecía la demanda de aplicaciones web más rápidas y sofisticadas, la industria se vio obligada a abordar las deficiencias de JavaScript.

Uno de los desarrollos más destacados, ya muchos años más tarde, fue la introducción del motor de JavaScript V8 por parte del equipo de Google Chrome. Este motor de ejecución optimizado utiliza técnicas de compilación "just-in-time" y recolección de basura para mejorar drásticamente la velocidad de ejecución de JavaScript en los navegadores web, allanando el camino para aplicaciones web más potentes y rápidas. En la actualidad el código JavaScript compilado sobre la marcha puede tener un rendimiento muy parecido al del código nativo.

Tan potente es V8, que dio lugar a su uso en el servidor para aplicaciones de alto rendimiento con una plataforma que sin duda conocerás: Node.js. Node utiliza el motor de JavaScript de Chrome para ejecutar aplicaciones JavaScript en el lado servidor. Aunque en rigor hay que decir que la primera empresa en utilizar JavaScript en el servidor fue Microsoft en los años 90 con su variante del lenguaje llamada JScript, la que comenté antes, aunque no tenía mucho que ver con Node.js.

Además, la comunidad de desarrolladores de JavaScript se unió para abordar las deficiencias del lenguaje mediante la creación de bibliotecas y frameworks como React, Angular y Vue.js. Estas herramientas proporcionan abstracciones y patrones de diseño que simplifican el desarrollo de aplicaciones web complejas y mejoran la legibilidad y mantenibilidad del código.

La fuerza de JavaScript no reside únicamente en el lenguaje en sí, sino también en su vibrante ecosistema de herramientas, bibliotecas y frameworks.

La mayoría de herramientas y frameworks creados en JavaScript son de código abierto y de libre uso. El entorno de código disponible es tan grande que es casi imposible no encontrar cualquier cosa que necesites. Esto ha hecho también que JavaScript sea tan popular.

Al final, era un lenguaje malo, pero era el único que había integrado y universal, y los esfuerzos de la industria y la comunidad de desarrolladores han transformado a JavaScript de un lenguaje criticado a un pilar fundamental de la programación web moderna.

ECMAScript: la normalización del Lenguaje

A medida que JavaScript continuaba su ascenso como el lenguaje de programación dominante en el desarrollo web, surgió la necesidad de establecer estándares y especificaciones que garantizaran la coherencia y la interoperabilidad entre diferentes implementaciones del lenguaje en los navegadores web. Este proceso de estandarización fue facilitado por la creación de ECMA International (anteriormente conocida como European Computer Manufacturers Association), una organización sin ánimo de lucro dedicada a la estandarización de la tecnología de la información y las comunicaciones.

ECMAScript es el estándar subyacente en el que se basa JavaScript. La especificación ECMAScript define el núcleo del lenguaje, incluidos su sintaxis, tipos de datos, estructuras de control y objetos fundamentales. Aunque JavaScript es el dialecto más comúnmente utilizado de ECMAScript, existen otras implementaciones, siendo la más famosa en su día ActionScript, que se utilizaba en Flash.

La historia de ECMAScript se remonta a 1997, cuando se publicó la primera edición del estándar ECMAScript. Al principio no se le hacía mucho caso pero con los años, y por suerte, tenemos implementaciones según este estándar en todos los navegadores.

A lo largo de los años, se han lanzado varias especificaciones ECMAScript, cada una introduciendo nuevas características y funcionalidades en el lenguaje. Algunas de las ediciones más destacadas incluyen:

  • ECMAScript 3 (1999): esta edición introdujo características importantes como el manejo de excepciones, expresiones regulares y JSON (JavaScript Object Notation), entre otros.
  • ECMAScript 5 (2009): esta edición trajo consigo mejoras significativas, incluyendo métodos de matriz adicionales, funciones de propiedad de objetos, manejo estricto de errores y soporte para getters y setters. Esta versión es a la que nos referimos generalmente cuando decimos JavaScript.
  • ECMAScript 6 (también conocido como ES2015) y posteriores: estas ediciones representaron un punto de inflexión importante en la evolución de JavaScript, introduciendo una serie de nuevas características y sintaxis mejoradas, como las clases, los módulos, las promesas, el operador de propagación (spread) y mucho más.

Desde ECMAScript 6 en 2015, cada año en el mes de junio tenemos una nueva versión del estándar con características nuevas y mejoras incrementales.

La normalización de JavaScript a través de las especificaciones ECMAScript ha sido fundamental para garantizar la consistencia y la portabilidad del lenguaje en diferentes entornos de desarrollo. Los navegadores web y otras plataformas de ejecución implementan estas especificaciones para garantizar que el código JavaScript se ejecute de manera consistente en todos los dispositivos y sistemas. Y si no viviste la guerra de los navegadores de los 90 y primeros 2000 no sabes lo importante que es esto...

Las funcionalidades introducidas en ES6 y más allá han tenido un impacto significativo en el desarrollo web moderno. Ahora no tenemos demasiado que envidiar de otros lenguajes de programación más "serios", así entre comillas: funciones arrow, plantillas en cadenas de texto, desestructuración, propagación, encadenamiento opcional, sintaxis real de orientación a objetos, programación asíncrona...

Todo esto nos permite a los desarrolladores escribir código más limpio, conciso y expresivo, lo que resulta en un proceso de desarrollo más eficiente y menos propenso a errores.

TypeScript

Una de las cosas que JavaScript todavía no tiene y probablemente nunca tendrá porque está en su naturaleza es la restricción de tipos de datos. En JavaScript existen varios tipos de datos, pero no puedes forzar que una variable albergue un tipo de datos determinado. Esta flexibilidad tiene muchas ventajas, pero es también una gran fuente de errores en el código.

Por eso, en 2012, Microsoft lanzó TypeScript. Es un súperlenguaje por encima de JavaScript que al final se compila a JavaScript normal y corriente, y que permite trabajar con tipos estáticos. Además de que en su día añadía capacidades de sintaxis, como las clases y otros elementos de POO, que simplificaban el desarrollo y que luego JavaScript ha ido incorporando a su manera en el estándar ECMAScript.

La adopción de TypeScript fue impulsada por la necesidad de abordar los desafíos de mantenibilidad y escalabilidad en proyectos JavaScript de gran envergadura. Al proporcionar tipos estáticos, TypeScript ayuda a detectar errores en tiempo de compilación y a mejorar la legibilidad y mantenibilidad del código.

Además, TypeScript se integra perfectamente con el ecosistema de JavaScript existente. Los desarrolladores pueden aprovechar las bibliotecas y frameworks de JavaScript mientras disfrutan de las ventajas del tipado estático proporcionado por TypeScript. Esta interoperabilidad hace que sea fácil para los equipos de desarrollo adoptar TypeScript gradualmente en sus proyectos existentes.

En última instancia, TypeScript se ha convertido en una herramienta muy utilizada por desarrolladores que buscan mejorar la calidad y la robustez de sus aplicaciones JavaScript. Muchos frameworks, como por ejemplo Angular, usan este lenguaje para su desarrollo, tratando de mejorar la calidad y el mantenimiento.

Más allá de la Web

JavaScript hoy en día no se limita solo al desarrollo web.

Con la creciente popularidad de los frameworks como React Native o Electron, JavaScript ha encontrado su camino en el desarrollo de aplicaciones móviles y de escritorio respectivamente. React Native permite a los desarrolladores crear aplicaciones móviles nativas para iOS y Android utilizando JavaScript y React, mientras que Electron permite construir aplicaciones de escritorio multiplataforma utilizando tecnologías web estándar.

Además, JavaScript está presente en una variedad de otros entornos, desde el servidor, con proyectos como Node.js o Deno, al Internet de las Cosas (IoT) o la inteligencia artificial. Su versatilidad y facilidad de uso lo convierten en una opción atractiva para una amplia gama de aplicaciones y proyectos.

El desarrollo de JavaScript ha sido un viaje emocionante y multifacético, desde sus humildes comienzos como un lenguaje de scripting en el navegador hasta su posición dominante en todos los aspectos del desarrollo web y más allá. Su capacidad para adaptarse y evolucionar lo ha convertido en una herramienta indispensable para los desarrolladores de todo el mundo, y su influencia solo seguirá creciendo en los años venideros.

Espero que te haya parecido interesante este viaje en el tiempo para conocer a este compañero inseparable al que hemos aprendido a querer a pesar de todos sus defectos.

José Manuel Alarcón Fundador de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José Manuel Alarcón
Archivado en: Desarrollo Web

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.