JavaScript se convirtió en el lenguaje nativo de la Web. Da vida a las interfaces, responde a las acciones del usuario, se comunica con servidores y ejecuta aplicaciones completas en el navegador. Con Node.js llegó también a servidores y herramientas de desarrollo. Nada de esto estaba previsto a esta escala en 1995.
Su historia no es la ejecución de un plan perfecto, sino la de un lenguaje nacido con prisas, convertido en imprescindible gracias a su distribución universal y mejorado continuamente sin poder desprenderse de su pasado.
1995: hacer programable el navegador
A comienzos de los noventa, la Web era principalmente documental. HTML describía el contenido, HTTP transportaba los recursos y el navegador mostraba la página. Para obtener un nuevo resultado solía ser necesario consultar de nuevo al servidor.
Netscape comprendió que el navegador podía convertirse en una plataforma de aplicaciones. Quería un lenguaje ligero que los autores pudieran insertar directamente en sus páginas como complemento de Java, entonces muy promocionado por Sun.
Brendan Eich llegó a Netscape en abril de 1995. En mayo construyó en unos diez días el primer prototipo, Mocha. Los famosos «diez días» se refieren a ese prototipo, no al JavaScript moderno. Mocha pasó a llamarse LiveScript y después JavaScript a finales de 1995.
El nombre aprovechaba la popularidad de Java, pero creó una confusión duradera. JavaScript no es un Java pequeño. Su apariencia recuerda a la familia C, mientras que entre sus influencias profundas están Scheme, por las funciones de primera clase, y Self, por los objetos basados en prototipos.
Un modelo poco habitual bajo una sintaxis familiar
En JavaScript las funciones son valores: pueden almacenarse, pasarse y devolverse. Este modelo encaja especialmente bien con las interfaces dirigidas por eventos.
Su modelo histórico de objetos se basa en prototipos. Los objetos pueden delegar la búsqueda de propiedades en otros objetos. La sintaxis moderna class ofrece una abstracción familiar, pero sigue apoyándose en ese mecanismo.
El tipado dinámico y las conversiones implícitas facilitaron la escritura de pequeños scripts, pero también generaron peculiaridades famosas. Buena parte de la evolución posterior consiste en mejorar el lenguaje sin romper páginas que dependen de comportamientos antiguos.
JavaScript no es el navegador
JavaScript y la Web están tan asociados que es fácil confundir lenguaje y entorno. Sin embargo, el DOM, los eventos, la red o el almacenamiento Web son API del navegador, no parte del núcleo de ECMAScript.
La diferencia se volvió fundamental cuando JavaScript salió del navegador: la misma lengua puede ejecutarse en entornos distintos con API diferentes.
El DOM tuvo, no obstante, un papel histórico decisivo. Al representar la página como una estructura programable permitió modificar texto, atributos, estilos y elementos después de la carga. El documento Web empezó a convertirse en una interfaz viva.
La guerra de navegadores y la necesidad de un estándar
Microsoft introdujo JScript en Internet Explorer en 1996. Netscape y Microsoft también ofrecían API incompatibles, obligando a los desarrolladores a gestionar diferencias entre navegadores.
Netscape presentó entonces el lenguaje a Ecma International. En 1997 apareció la primera edición de ECMA-262, que definió ECMAScript.
JavaScript siguió siendo el nombre habitual; ECMAScript pasó a ser la especificación normalizada. La normalización no eliminó de inmediato las diferencias entre navegadores, pero dio al núcleo del lenguaje una referencia independiente de un solo fabricante. ECMAScript 3, publicado en 1999, se convirtió durante años en la base del JavaScript ampliamente desplegado.
La compatibilidad retroactiva se convierte en una regla de la Web
La primera guerra de navegadores dejó API propietarias, motores inconsistentes y mucho código de adaptación. JavaScript adquirió fama de imprevisible.
También quedó establecida una restricción permanente: la Web evita romper el contenido existente.
typeof null, la igualdad débil, las conversiones implícitas o antiguas reglas de ámbito no tienen exactamente el mismo origen, pero una vez que un comportamiento se usa de forma masiva resulta muy difícil modificarlo de manera incompatible. Por eso JavaScript moderno suele añadir mecanismos mejores en lugar de reescribir su pasado.
ECMAScript 4: aprender a evolucionar sin ruptura
Durante los años 2000, ECMAScript 4 propuso una transformación mucho mayor, con clases más formales, tipos opcionales y numerosas funciones nuevas. Los participantes no lograron ponerse de acuerdo sobre complejidad, compatibilidad y dirección, y el proyecto fue abandonado.
Ese fracaso influyó en el futuro. JavaScript evolucionaría cada vez más mediante cambios graduales y compatibles. ECMAScript 5 llegó en 2009 con el modo estricto y mejoras importantes para objetos y arrays.
Ajax y jQuery: JavaScript impulsa las aplicaciones Web
A mediados de los años 2000, aplicaciones como Gmail y Google Maps demostraron que una página podía comunicarse con servidores en segundo plano y actualizar solo una parte de la interfaz. En 2005 el término Ajax popularizó este enfoque.
Los sitios empezaron a comportarse como aplicaciones. JavaScript dejó de limitarse a validaciones y efectos para gestionar estado e interacción.
Las diferencias entre navegadores seguían siendo molestas. Desde 2006, jQuery ofreció una API más uniforme para el DOM, los eventos y las peticiones. Su enorme éxito reflejaba la fragmentación de la plataforma. A medida que los navegadores convergieron en los estándares, parte de esa capa de compatibilidad dejó de ser imprescindible.
La carrera de los motores JavaScript
Las aplicaciones más complejas empujaron a los fabricantes a invertir en rendimiento. Los motores modernos analizan y optimizan el programa durante la ejecución.
En 2008 Google presentó V8 con Chrome. La competencia con SpiderMonkey, JavaScriptCore y otros motores aceleró enormemente JavaScript. La compilación just-in-time hizo viables aplicaciones mucho más pesadas en el navegador.
JavaScript ya no era solo ubicuo: empezaba a ser suficientemente rápido para sostener una plataforma de aplicaciones general.
Node.js: salir del navegador
En 2009 Ryan Dahl creó Node.js sobre V8. JavaScript pudo utilizarse cómodamente para servidores y herramientas de línea de comandos, con un modelo de entrada/salida asíncrono apropiado para software de red.
Node.js transformó el ecosistema. Los equipos pudieron usar JavaScript en cliente y servidor, mientras npm crecía hasta convertirse en un enorme registro de paquetes y JavaScript se extendía por sistemas de compilación, pruebas y automatización.
También hizo evidente la diferencia entre lenguaje y entorno: Node.js ejecuta ECMAScript, pero no proporciona por defecto el DOM del navegador.
ECMAScript 2015: modernizar sin empezar de cero
ECMAScript 2015, o ES6, fue un gran punto de inflexión. Incorporó let, const, funciones flecha, módulos, promesas, generadores, sintaxis de clases y muchas otras capacidades.
Estas novedades no sustituyeron al JavaScript anterior. Construyeron una capa moderna compatible con el código existente. Esa acumulación controlada, en lugar de un reinicio, es una característica central de su historia.
Después, ECMAScript adoptó un ciclo anual, con propuestas que maduran progresivamente en TC39 antes de incorporarse a la especificación.
Frameworks e industrialización del front-end
Al crecer las aplicaciones Web, el problema pasó de manipular el DOM a organizar interfaces grandes. Backbone, Angular, React, Vue, Svelte y otros enfoques propusieron distintos modelos de componentes, estado y renderizado.
Estas herramientas no son JavaScript en sí. Forman un ecosistema construido sobre el lenguaje y las API Web. Su rápida evolución muestra hasta qué punto el navegador se convirtió en una plataforma completa de ingeniería de software.
TypeScript: una capa tipada sobre JavaScript
Microsoft presentó TypeScript en 2012. Añade un sistema de tipos estáticos y herramientas orientadas a grandes bases de código, y transforma el resultado en JavaScript para ejecutarlo en los entornos existentes.
TypeScript no sustituye a JavaScript: depende de él. Su éxito ilustra la madurez del ecosistema y la necesidad de herramientas de gran escala sin renunciar a la compatibilidad de la plataforma.
Por qué ganó JavaScript
JavaScript no se volvió imprescindible por ser un lenguaje perfecto. Su ventaja decisiva fue la distribución: todos los navegadores importantes incluían un motor JavaScript sin exigir ninguna instalación adicional.
La disponibilidad universal creó un círculo de refuerzo. Más usuarios atrajeron más inversión en motores, estándares, herramientas y bibliotecas; un ecosistema mejor hizo todavía más razonable elegir JavaScript.
Su capacidad para evolucionar sin abandonar la antigua Web protegió esa ventaja. Lo que a veces parece lastre histórico también explica parte de su extraordinaria continuidad.
Una plataforma colectiva
El JavaScript de 2026 no puede atribuirse a una sola persona o empresa. Brendan Eich creó su núcleo inicial, pero el lenguaje moderno refleja el trabajo de TC39, equipos de motores, fabricantes de navegadores, creadores de herramientas y millones de desarrolladores.
Su historia conecta varias transformaciones: del documento a la aplicación, del navegador a un entorno de ejecución universal, del script al servidor y de una implementación de fabricante a un estándar internacional.
Cronología
1995: Mocha, LiveScript y después JavaScript en Netscape.
1996: JScript aparece en Internet Explorer; comienza la normalización en Ecma.
1997: primera edición de ECMA-262.
1999: ECMAScript 3.
2005: Ajax populariza las aplicaciones Web asíncronas.
2006: aparece jQuery.
2008: Chrome y V8 intensifican la carrera por el rendimiento.
2009: ECMAScript 5 y Node.js.
2012: presentación de TypeScript.
2015: ECMAScript 2015 moderniza profundamente el lenguaje.
Desde 2016: ECMAScript evoluciona con un ciclo anual.
Preguntas frecuentes
¿JavaScript se creó realmente en diez días?
Brendan Eich construyó el primer prototipo en unos diez días en mayo de 1995. El lenguaje publicado y normalizado evolucionó después durante tres décadas.
¿JavaScript y Java están relacionados?
Comparten un nombre parecido y algunos rasgos sintácticos, pero son lenguajes distintos. La asociación del nombre JavaScript con Java fue en gran medida comercial.
¿Qué diferencia hay entre JavaScript y ECMAScript?
ECMAScript es la especificación estándar del núcleo del lenguaje. JavaScript es el nombre histórico y habitual de sus implementaciones.
¿El DOM forma parte de JavaScript?
No. El DOM es una API proporcionada por el entorno Web. JavaScript puede utilizarla en el navegador, mientras otros entornos como Node.js proporcionan API diferentes.
Porque cambiarlos de forma incompatible podría romper enormes cantidades de páginas existentes. La compatibilidad retroactiva es una restricción central de su evolución.
¿Brendan Eich creó Node.js?
No. Ryan Dahl creó Node.js en 2009. Utiliza JavaScript y V8, pero pertenece a una etapa muy posterior de la historia del lenguaje.