Una breve historia de JavaScript
(deno.com)- Con motivo del 30.º aniversario de JavaScript este año, Deno resumió brevemente su historia hasta ahora
- JavaScript comenzó como un lenguaje de scripting desarrollado en solo 10 días y hoy se ha consolidado como el lenguaje más popular del mundo
- Se presentan algunos momentos históricos clave que muestran cómo ha evolucionado JavaScript y hacia dónde se dirige en el futuro
A brief history of JavaScript (1994-2025)
[1994]
-
Lanzamiento de Netscape Navigator 1.0
- En diciembre de 1994 se lanzó Netscape Navigator 1.0
- Su mayor velocidad frente a navegadores anteriores y su interfaz gráfica fueron factores clave de su popularidad
- Con soporte para HTML 2.0, sentó la base para que JavaScript pudiera ejecutarse más adelante en este navegador
[1995]
-
Nacimiento de JavaScript
- En mayo de 1995, Brendan Eich desarrolló el primer borrador de JavaScript en solo 10 días
- Fue creado a partir de la solicitud de un lenguaje de scripting con una sintaxis similar a la de Java, que era popular en ese momento
- El nombre JavaScript se decidió con fines de marketing
-
Anuncio oficial de Netscape y Sun
- En diciembre de 1995, JavaScript fue presentado como un “lenguaje de scripting orientado a objetos y liviano para la web”
- Se anunció con el respaldo de 28 empresas tecnológicas y se posicionó como un lenguaje pensado incluso para entornos empresariales
[1996]
-
Respuesta de Microsoft
- En marzo de 1996, Microsoft incorporó JScript en Internet Explorer 3
- JScript se integraba con ActiveX y permitía controlar aplicaciones como Excel
-
Lanzamiento de Navigator 2.0 con JavaScript 1.0
- Ese mismo marzo, JavaScript 1.0 debutó oficialmente en Netscape Navigator 2.0
- El concepto de DOM (Document Object Model) comenzó en este momento
[1997]
-
Propuesta de estandarización ante ECMA
- En junio de 1997, Netscape propuso la estandarización de JavaScript ante ECMA International
- El objetivo era resolver los problemas de compatibilidad con JScript de Microsoft
- Se creó la especificación ECMA-262 y se definió el nombre ECMAScript
- Se formó el comité TC39, que comenzó a gestionar la evolución del lenguaje
[1998]
-
Nacimiento del proyecto Mozilla
- En enero de 1998, Netscape abrió su código fuente para responder al monopolio de Microsoft en el mercado de navegadores
- El proyecto recibió el nombre de “Mozilla” y más adelante dio lugar a diversos logros de código abierto como Firefox y Rust
-
Anuncio de ECMAScript 2
- En septiembre de 1998 se anunció oficialmente ECMAScript 2
- No incorporó funciones nuevas, pero su objetivo principal fue la consistencia de la especificación y una documentación más depurada
[1999]
-
IE5 y la introducción de XMLHttpRequest
- En marzo de 1999, IE5 introdujo
XMLHttpRequest - Esto se convertiría más adelante en la base de la tecnología AJAX
- En marzo de 1999, IE5 introdujo
-
Aparición de JSDoc
- En abril de 1999 se introdujo JSDoc para la documentación de JavaScript
- Estuvo influido por Javadoc de Java y todavía se usa como herramienta de generación de documentación
-
Anuncio de ECMAScript 3
- En diciembre de 1999 se anunció oficialmente ECMAScript 3
- Con la incorporación de
do-while, expresiones regulares, métodos de cadena y manejo de excepciones, sentó las bases del crecimiento real del lenguaje - Después se utilizó durante más de 10 años como el estándar de facto de JavaScript para la web
[2001]
-
Primera aparición de JSON
- Se transmitió el primer mensaje JSON
- Dentro de scripts en páginas web se usó una estructura de objeto con la forma
{ to, do, text } - Como formato de mensajería liviano basado en JavaScript, luego se convirtió en el estándar para la comunicación con APIs web
[2002]
-
Introducción de JSLint
- Douglas Crockford presentó la herramienta de análisis sintáctico estático JSLint
- Ayudó a mejorar la calidad del código JavaScript y más adelante dio pie a su libro “JavaScript: The Good Parts”
-
Lanzamiento de Phoenix 0.1, antecesor de Firefox
- La comunidad de Mozilla desarrolló el navegador liviano Phoenix en respuesta al peso de la línea de productos existente
- Ofrecía funciones innovadoras como navegación por pestañas y bloqueo de ventanas emergentes → más adelante evolucionó a Firefox
[2003]
-
Apple presenta Safari y WebKit
- La introducción del navegador Safari y el motor WebKit permitió a Mac reducir su dependencia de Microsoft
- Más adelante se convirtió en la base de Mobile Safari en el iPhone
[2004]
-
Gmail y AJAX
- La interfaz basada en AJAX de Gmail marcó un nuevo estándar de UX para las aplicaciones web
- Intercambio de datos con el servidor sin recargar toda la página → comienzo de la era Web 2.0
[2005]
-
Consolidación del término AJAX
- Jesse James Garrett formalizó el concepto de “AJAX”
- A través de la combinación de JavaScript + XML, se estableció una arquitectura de comunicación asíncrona con el servidor
-
Nace Mozilla DevMo → luego evoluciona a MDN
- Comenzó MDN, el centro de documentación de JavaScript basado en estándares
- Ofreció una referencia unificada frente a la documentación fragmentada sobre compatibilidad entre navegadores
[2006]
-
Aparición de jQuery
- John Resig inició el proyecto jQuery
- Contribuyó enormemente a resolver problemas de compatibilidad entre navegadores en manipulación del DOM, manejo de eventos y AJAX
- Su API concisa impulsó una adopción explosiva
[2007]
-
Lanzamiento del iPhone y falta de soporte para Flash
- Apple presentó el iPhone y Safari no era compatible con Flash
- Esto aceleró la transición en entornos móviles hacia contenido basado en HTML + JavaScript
[2008]
-
Fin oficial de Netscape Navigator
- AOL puso fin al desarrollo de Netscape, lo que marcó el cierre de la primera guerra de navegadores
- El monopolio de IE por parte de Microsoft llevó a demandas antimonopolio
-
Publicación de JavaScript: The Good Parts
- El libro de Crockford sirvió como punto de inflexión para revalorar JavaScript como un lenguaje de desarrollo profesional
-
Anuncio de Google Chrome y del motor V8
- Con el lanzamiento de Chrome, se presentó el motor JavaScript V8
- Gracias a la compilación JIT y la optimización del recolector de basura, el rendimiento mejoró drásticamente
- Más adelante sentó las bases para la expansión al lado del servidor, como Node.js
[2009]
-
Aparición de CommonJS
- Se intentó estandarizar el uso de código JS modularizado fuera del navegador, como en servidores
- Esto más adelante se convirtió en la base de la estructura de módulos del ecosistema Node.js
-
Inicio del proyecto Node.js
- Ryan Dahl comenzó el desarrollo de Node.js
- Permitió ejecutar JavaScript en entornos de servidor y lo expandió como lenguaje full stack
-
Oracle adquiere Sun Microsystems
- Junto con Java, la marca registrada JavaScript también pasó a Oracle
- Esto generó problemas de marca alrededor del nombre JavaScript
-
Aparición de Express.js
- Se hizo el primer commit de Express.js, un framework web basado en Node.js
- Propuso una estructura de middleware centrada en la construcción de APIs REST
-
Anuncio de ECMAScript 5
- Con strict mode, soporte para
JSONy nuevos métodos deArray, se ordenaron las bases de las funciones modernas de JS
- Con strict mode, soporte para
-
Aparición de CoffeeScript
- Fue un experimento de mejora sintáctica previo a ES6 con sintaxis concisa, funciones flecha y desestructuración
- Más adelante influyó de manera indirecta en la evolución de la sintaxis de JavaScript
[2010]
-
Lanzamiento de npm 1.0
- El gestor de paquetes para JavaScript npm se lanzó oficialmente y comenzó la estandarización del intercambio y la reutilización de código
- Hoy ha crecido hasta convertirse en el registro de código abierto más grande del mundo, con más de 3 millones de paquetes
-
Lanzamiento de WebStorm 1.0
- JetBrains lanzó el primer IDE dedicado exclusivamente a JavaScript
- Ofrecía de forma integrada funciones de análisis estático, detección de errores, autocompletado y depuración
-
Aparición de AngularJS & Backbone.js
- Inicio del auge de los frameworks SPA
- Angular se centraba en lo declarativo/la inyección de dependencias, mientras que Backbone se centraba en lo procedimental/la simplicidad
- Desde esta época empezó a notarse el fenómeno de la aparición y desaparición frecuente de frameworks ("Framework churn")
[2011]
-
Port de Node.js a Windows
- Gracias a la colaboración entre Joyent y Microsoft, Node.js pasó a funcionar también en Windows
- Desarrollo de la biblioteca libuv → ofreció una plataforma unificada de I/O asíncrono
- El inicio del camino open source de MS que después continuó con TypeScript, VSCode y la estrategia de Azure
[2012]
-
Aparición de Webpack
- Como herramienta de bundling de recursos web, extendió el sistema de módulos al cliente
- Después fue adoptado como sistema de build clave en React, Angular, Vue y otros
-
Lanzamiento de TypeScript 0.8
- Microsoft presentó un superset de JavaScript basado en tipos estáticos
- Ofreció una estructura adecuada para proyectos grandes y después influyó en el estándar ES
[2013]
-
Inicio de Atom Shell, precursor de Electron
- Hizo posible desarrollar apps de escritorio con HTML/CSS/JS
- Su adopción en Slack, Visual Studio Code y otros cambió la forma de desarrollar software de escritorio
-
Publicación de asm.js
- Permitió cómputo de alto rendimiento dentro del navegador al convertir código C/C++ a JS
- Más adelante evolucionó hacia WebAssembly
-
Definición del stack MEAN
- Se nombró la combinación MongoDB + Express + Angular + Node.js
- Se expandió el desarrollo full stack basado en JavaScript
-
Publicación de React
- Facebook lo liberó como open source tras usarlo internamente
- Se consolidó el paradigma de desarrollo de UI basado en componentes
-
Inicio del desarrollo de ESLint
- Herramienta de linting extensible iniciada por Nicholas C. Zakas
- Se difundió rápidamente gracias a su mayor capacidad de personalización frente a linters anteriores
-
Lanzamiento de Gulp
- A diferencia de Grunt, centrado en configuración, era una herramienta de build basada en código y streaming
- Impulsó la automatización de tareas de build con JavaScript
[2014]
-
Lanzamiento de Vue.js
- Framework de UI progresivo presentado por Evan You
- Combinó la UI declarativa de React con las capacidades de plantillas de Angular
-
Adquisición de Express.js
- StrongLoop adquirió Express.js → después StrongLoop fue adquirida por IBM
- Las preocupaciones por la independencia de la comunidad llevaron a la aparición de frameworks posteriores como Koa
-
Inicio de Babel.js (antes 6to5)
- Permitió ejecutar sintaxis moderna de JS incluso en navegadores antiguos
- Se estableció como el transpiler estándar de todos los frameworks
-
Lanzamiento de Meteor 1.0
- Llamó la atención como herramienta para desarrollar web apps en tiempo real y de stack único
- Más adelante influyó en tecnologías en tiempo real como GraphQL y Firebase
-
Facebook publica Flow
- Herramienta de verificación de tipos estáticos para detectar errores de JS con anticipación
- Más tarde su uso disminuyó por el crecimiento de TypeScript
-
Anuncio de AWS Lambda
- Introdujo la computación serverless basada en JavaScript (Node.js)
- Hizo posible implementar backends sin gestionar infraestructura mediante la ejecución de funciones basada en eventos
-
Bifurcación de io.js
- La comunidad bifurcó io.js en respuesta al lento ritmo de lanzamientos de Node.js bajo Joyent
- Más tarde, en 2015, volvió a integrarse en Node.js
[2015]
-
Aparición del término Jamstack
- Se enfatizó la combinación JavaScript + API + Markup
- Con el auge de SSR y SSG, también surgieron con fuerza los generadores de sitios estáticos
-
Fundación de Node.js Foundation
- Se reorganizó la gobernanza de la comunidad, incluida la integración con io.js
- Participaron grandes empresas como IBM y Microsoft
-
Lanzamiento de GraphQL
- Lenguaje de consulta para APIs desarrollado por Facebook
- Se caracterizó por su enfoque declarativo, diseño fuertemente tipado y minimización de solicitudes al servidor
-
Lanzamiento de Redux
- Contenedor de estado predecible para la gestión de estado en React
- Más adelante también fue adoptado en Vue, Angular y otros
-
Anuncio de WebAssembly
- Permitió ejecutar código de alto rendimiento como C/C++ dentro del navegador
- Como sucesor de asm.js, se consolidó como entorno de ejecución de propósito general para la web
-
Lanzamiento de Atom 1.0
- Editor de texto hackeable basado en Electron creado por GitHub
- Influyó directamente en VSCode
-
Anuncio oficial de ECMAScript 6 (ES2015)
- Grandes mejoras de sintaxis como
import/export,let/const,Promiseyfetch - La versión que se convirtió en la base del JavaScript moderno
- Grandes mejoras de sintaxis como
-
Integración de Node.js e io.js
- Con el anuncio de Node.js v4.0, ambos proyectos se reintegraron en uno solo
- Se establecieron LTS y una política de versionado con significado
[2016]
-
Microsoft libera el motor Chakra como open source
- Chakra, el motor de JS del navegador Edge, pasó a ser open source
- Aunque atrajo interés de la comunidad desarrolladora, luego quedó rezagado frente al dominio de V8 y fue descontinuado
-
Ocurre el incidente de Leftpad
- La eliminación del módulo
left-padprovocó un colapso masivo de dependencias de paquetes - Fue un punto de inflexión para cambios en la política de npm
- La eliminación del módulo
-
Lanzamiento de VSCode 1.0
- IDE ligero basado en Electron y TypeScript
- Ganó popularidad rápidamente por su velocidad, extensibilidad y excelente soporte para JS/TS
-
Anuncio de ECMAScript 2016
- Actualización menor con elementos como el operador
**yarray.includes()
- Actualización menor con elementos como el operador
-
Anuncio de Angular2
- Arquitectura de componentes basada en TypeScript completamente distinta de AngularJS
- Con compilación AOT y mayor seguridad, surgió como opción empresarial
-
Lanzamiento de Next.js 1.0
- Framework de renderizado del lado del servidor basado en React
- Impulsó la estandarización del desarrollo full stack con React considerando SEO y rendimiento
[2017]
-
Commit inicial de la propuesta Temporal
- Propuesta de la API Temporal para resolver los problemas del objeto
Date - Su inclusión en el estándar ECMAScript fue aprobada en 2021, y actualmente solo tiene soporte en algunos entornos
- Propuesta de la API Temporal para resolver los problemas del objeto
-
Lanzamiento de Prettier 1.0
- Formateador que aplica automáticamente un estilo de código consistente
- También influyó en la aparición de Black para Python y formateadores en Rust
-
Publicación de ECMAScript 2017
- Introdujo funciones modernas de JS como
async/await,Object.entries()yObject.values() - Se generalizó el uso de
fetch()
- Introdujo funciones modernas de JS como
-
Lanzamiento de Yarn
- Gestor de paquetes creado para resolver la lentitud y los conflictos de npm
- Introdujo funciones innovadoras como
yarn.lock, instalaciones en paralelo y caché
-
Lanzamiento de Cloudflare Workers
- Inicio de la era del edge computing
- Hizo posible que código serverless se ejecute de forma distribuida en todo el mundo
[2018]
-
Lanzamiento de Puppeteer 1.0
- Herramienta de automatización de navegador basada en Chrome headless
- Ofreció una API amigable con Node.js y más simple que Selenium
-
Lanzamiento de TensorFlow.js
- Hizo posible ejecutar machine learning en el navegador
- Implementación de apps de IA en tiempo real basadas en WebGL/WebGPU
-
Smooshgate
- Por un conflicto con el nombre
Array.flatten, se cambió aflat() - Se originó por problemas de compatibilidad con MooTools
- Por un conflicto con el nombre
-
Ryan Dahl presenta Deno
- Presentación inicial del runtime Deno junto con una revisión de los problemas de Node
-
Publicación de ECMAScript 2018
- Introducción de
promise.finally(),async iterationy rest/spread de objetos
- Introducción de
[2019]
-
Nace OpenJS Foundation
- Integración de Node.js Foundation y JavaScript Foundation
- Unificación de la gobernanza de proyectos de servidor y cliente
-
Node.js v12: inicio del soporte experimental para ESM
- Se introdujo experimentalmente ES modules mediante
.mjs,type: moduley otros
- Se introdujo experimentalmente ES modules mediante
-
Publicación de ECMAScript 2019
- Se agregan
Object.fromEntries(),String.prototype.trimStart()y otros
- Se agregan
-
Node.js v13.2: ESM se estabiliza oficialmente
[2020]
-
SpaceX Dragon, llega al espacio con JS
- Se usa JavaScript en la interfaz de pantalla táctil basada en Chrome
-
Lanzamiento de Deno 1.0
- Enfoque innovador con soporte nativo para TypeScript, modelo de permisos e importaciones HTTP, entre otros
-
Fin oficial de Adobe Flash
- Se consolida un entorno web multimedia centrado en JS
[2022]
-
Deno se une a TC39
- Declara su participación en la estandarización de JavaScript
-
Fin del soporte para IE11
- Se completa la transición hacia un ecosistema web basado en estándares
-
Anuncio de ECMAScript 2022
- Se agregan
top-level await, bloques estáticos de clase y otros
- Se agregan
[2023]
-
Lanzamiento de Bun 1.0
- Runtime ultrarrápido implementado en Zig como alternativa a Node.js
- Compatibilidad con npm e integración de herramientas de build
[2024]
-
Se elige a Rocket Turtle como mascota de Node.js
- El personaje final se define mediante un concurso de la comunidad
-
Publicación de ECMAScript 2024
- Se refuerza el manejo de Unicode con
toWellFormed()y otros
- Se refuerza el manejo de Unicode con
-
Lanzamiento del registro JSR
- Registro dedicado a módulos ECMAScript modernos del equipo de Deno
- Compatible con TypeScript, Deno, Bun y Cloudflare Workers
-
Inicio del movimiento FreeJavaScript
- Campaña que exige a Oracle devolver la marca registrada JavaScript
- Firman figuras clave como Brendan Eich
-
Lanzamiento de Deno 2
- Mejora la compatibilidad con Node y hasta invierte en publicidad, marcando el inicio de lleno de la guerra de runtimes
[2025]
-
Anuncian el port de TypeScript a Go
- El proyecto
tsgoestá en marcha con el objetivo de lograr un rendimiento más de 10 veces superior - Está previsto que se adopte oficialmente a partir de TypeScript 7.0
- El proyecto
-
Declaran la liberación como open source de Copilot Chat
- Microsoft anuncia su estrategia para convertir VSCode en un IDE de desarrollo con IA de código abierto
[Cierre]
- JavaScript comenzó como un lenguaje de scripting simple y evolucionó hasta convertirse en un lenguaje de desarrollo de propósito general que abarca frontend web, backend, machine learning, industria aeroespacial e IDE de desarrollo con IA
- La comunidad open source, la evolución continua de la sintaxis y la innovación en runtimes impulsaron ese crecimiento, y en adelante seguirá expandiéndose más allá de la web hacia áreas aún más amplias junto con herramientas más rápidas e inteligentes
10 comentarios
Ahora ya se convirtió en un estándar de implementación más que en un lenguaje... para bien o para mal, me parece que terminó siendo una sintaxis que incluso tiene que cargar con el legado.
Gracias por el buen material.
La versión 3 de IE era prácticamente basura. En ese tiempo Navigator 3 era casi el estándar, pero cuando salió IE 4 la situación se dio vuelta. Además, IE 4 venía instalado por defecto en Windows.
Navigator 4 sí salió, pero no era lo suficientemente bueno como para revertir la situación. Por eso la cuota de IE siguió creciendo.
Cuando Navigator se volvió de código abierto, nació el proyecto Mozilla y salió la versión beta de Phoenix; en ese momento los usuarios probablemente empezaron a sentir que algo había cambiado de verdad. Yo incluido. Por un problema de marca registrada, le cambiaron el nombre a Firefox, y desde entonces Firefox pasó a posicionarse como un verdadero competidor de IE.
El nombre probablemente cambió así: Phoenix -> Firebird -> Firefox. Seguramente fue porque ya existía una base de datos llamada Firebird.
Estoy leyendo todo de corrido y, desde la mitad, me entró una emoción fuerte.
Parece súper reciente, pero también se siente súper antiguo...
El original está increíblemente bien organizado. Incluso incluye capturas de pantalla y código nostálgico...! Ojalá a Deno también le vaya aún mejor. jaja
Parece que la evolución de JavaScript se divide entre antes y después del lanzamiento de Node.js.
Estoy de acuerdo.
Junto con Java, la marca registrada de JavaScript también fue transferida a Oracle. No sabía esa parte hasta ahora.
Originalmente, Sun tenía la marca registrada de JS, pero cuando Sun fue absorbida, la marca de JS (y también MySQL, entre otras) pasó a Oracle.
El artículo original también tiene muchas imágenes y varios fragmentos de código, así que vale la pena verlo junto con ellos.