Historia de JavaScript.

Breve recorrido de los principales hitos en la historia de JavaScript

Historia de JavaScript.

JavaScript surgió entre los meses de Mayo y Diciembre de 1995, en esta época, la web estaba en sus primeras etapas, era completamente estática y el código HTML era muy básico. El principal navegador por esas fechas era “Netscape Navigator” de la empresa “Netscape Communications”. En este punto, Netscape, pensaba que el futuro de la web pasaba por volverse dinámica, incluir animaciones, interacciones y otras automatizaciones, por lo que consideraba que la web necesitaba un pequeño lenguaje de scripting que pudiera interactuar con el DOM.

Este leguaje de scripting debería ser simple y estar orientado a un público que no tendría porque estar relacionado con la ingeniería del software, su público final deberían ser los “scripters”, diseñadores web que escribían código incrustado en el HTML.

También en esa época, Java, de Sun MicroSystems estaba teniendo un gran auge y la empresa tenía un gran interés por introducirse en el mundo Web, pues los “applets” de Java estaban a punto de convertirse en una realidad. Sun y Netscape iban a cerrar un trato para incluir java en el Navegador Netscape, no obstante, se consideró que java no era adecuado para una gran parte del público que formaba parte de la web, por lo que sería necesario tener dos lenguajes de programación; Java, orientado a los grandes autores de componentes y otro más simple para los diseñadores web, que estaría destinado a ser el compañero de scripting para Java.

En el anterior contexto y con las anteriores premisas, Netscape ordena a uno de sus ingenieros, Brendan Eich, crear urgentemente un lenguaje de scripting que tuviera una sintaxis parecida a Java. A continuación se definen de manera cronológica algunos de los principales hitos y tecnologías en la historia de JavaScript, desde su nacimiento hasta la fecha actual.

En Mayo de 1995 se creó un lenguaje que originariamente fue llamado “Mocha”, con sintaxis similar a java pero cogiendo algunos elementos de otros lenguajes de programación como “Scheme” (un dialecto de “Lisp”) y “Self”. De la influencia de “Scheme” se adquirieron los cierres (“closures”) y las “funciones de primera clase”. De la influencia de “Self” se adquirió programación basada en prototipos, que es responsable de la herencia prototípica de JavaScript.

En Septiembre de 1995, “Mocha” pasó a llamarse “LiveScript”, y finalmente en diciembre del mismo año, después de firmar un acuerdo de licencia con Sun MicroSystems, adoptó el nombre de JavaScript, básicamente por razones de marketing debido a la popularidad que en ese momento tenía el lenguaje Java y a que Netscape añadió compatibilidad en su navegador con Java.

En marzo de 1996 Netscape lanza NETSCAPE ENTERPRISE SERVER (TM) 2.0 primer servidor web compatible con los lenguajes de programación Java (TM) y JavaScript (TM). La idea de tener JavaScript en el lado servidor no fue fructífera, debido a que los motores JavaScript de aquella época no eran los suficientemente rápidos para ser usados en aplicaciones de servidor y a que no se consideró aplicar la naturaleza de un único subproceso que tiene JavaScript en el navegador.

En agosto de 1996, Microsoft lanzó Jscript, una versión compatible con la mayoría del lenguaje JavaScript, en IE 3. (Desde los primeros días, JavaScript marcó una diferencia tan considerable en la experiencia del usuario que los navegadores de la competencia, principalmente Internet Explorer, no tuvieron más remedio que crear una implementación funcional de JavaScript).

En 1997 HTML dinámico. En Internet Explorer 4 y en Netscape Navigator 4, permite cambiar dinámicamente el contenido y la apariencia de una página web manipulando su DOM.

En 1997 JavaScript se normaliza, apareciendo la primera edición de la norma “ECMAScript 1”. Netscape presentó su lenguaje a la “European Computer Manufacturers Association”, (ECMA), un organismo europeo de normalización, con el objetivo de estandarizar el lenguaje. Por razones de marca registrada no se pudo usar el nombre JavaScript llamándose finalmente la norma ECMAScript. Desde entonces JavaScript se rige por ECMAScript. ECMAScript es el lenguaje, la norma, y JavaScript, JScript y actionScript los dialectos.

En 1998 apareció ECMAScript 2 que corregía aspectos de la versión anterior y principalmente se alineaba con la norma ISO/IEC 16262 que también estandarizó el lenguaje.

En 1999 nació ECMAScript 3 en esta versión se introdujeron grandes cambios y fue ampliamente extendida y apoyada por los navegadores del momento. Expresiones regulares, mejor manejo de cadenas, nuevas declaraciones de control, manejo de excepciones, formato para la salida numérica y otras mejoras.

A nivel de normalización, entre los años 1999 y 2008 se intentó definir una nueva norma ECMAScript, pero debido a desacuerdos entre los miembros del comité de normalización, se produjo una división en dos grupos de trabajo, cada uno con su propio borrador de la especificación, uno llamado ECMAScript 3.1 y otro llamado ECMAScript 4 (versión que quería introducir múltiples cambios para ampliar el lenguaje y su complejidad). En 2008 se acordó trabajar solo en la especificación 3.1 añadiendo algunas características de ECMAScript4, finalmente en 2009 se publicó la especificación 3.1 que se pasó a llamar ECMAScript 5.

En 1999 apareció “XMLHttpRequest”, un API creado por Microsoft para Internet Explorer 5, cuya funcionalidad era permitir que un navegador realizase una solicitud HTTP a un servidor de manera asíncrona, lo que permitía que las páginas se actualizasen sobre la marcha. Aunque el término AJAX no se acuñó hasta años más tarde, esta es una de sus técnicas principales.

En 2001 se nombró y documentó JSON (JavaScript Object Notation) un formato para el intercambio y almacenamiento de datos basado en la sintaxis de los literales de JavaScript.

En 2005 se acuño el término Ajax, (JavaScript asíncrono y XML), conjunto de tecnologías que tienen como objetivo equiparar las funcionalidades de las aplicaciones basadas en el navegador con las de escritorio. También apareció Apache CouchDB, una base de datos centrada en JavaScript (base de datos que se alimenta con objetos JSON, sin la necesidad de especificar un esquema de antemano).

En 2006 surge jQuery permite la manipulación de DOM y uso de AJAX de una manera fácil abstrayéndose de las diferencias entre navegadores.

En 2008 aparece “V8” con Chrome. El motor de JavaScript V8 de Chrome cambió la percepción de que JavaScript era lento y condujo a una carrera de velocidad con otros proveedores de navegadores. V8 es de código abierto y se puede usar como un componente independiente siempre que se necesite un lenguaje incrustado rápido que sea ampliamente conocido.

En 2009 se estableció la norma ECMAScript 5. Se introdujeron algunas mejoras como las funciones de iteración de primer orden (map, reduce, filter, forEach) y soporte para JSON.

En 2009 nació Node.js, implementando JavaScript en el servidor y la primera versión del gestor de paquetes NPM.

En 2009 surgió de MongoDB base de datos de propósito general que almacena los datos en documentos similares a JSON.

En 2010 empiezan a parecer los primeros frameworks web para Node.js principalmente “Express”, “Socket.io”. Para el “Front-end” aparecen los primeros Frameworks “MV*” para aplicaciones de una sola página, “Angular.js” y “Backbone.js”

En 2011 se establece ECMAScript 5.1 correcciones menores de la versión 5, esta especificación se produjo para alinear el estándar Ecma con el documento que fue producido por ISO/IEC para EcmaScript 5.

En 2011-2013 surgen algunos Frameworks MVC para node.js como “Hapi”, “Sails”, “Koa”.

En 2012-2013 Primeros frameworks destinados a la pila completa, MEAN.js y MEAN.io, (basados en MongoDB, Express, Angular y Node.js) y Meteor.js.

En 2013-2014 aparecen frameworks “front-end” basados en el DOM virtual: “React.js”, “Vue.js”.

En 2015 se establece ECMAScript 6 también conocido como “ECMAScript 2015” o Harmony, esta versión introdujo varias novedades como promesas, clases, declaraciones de variables en el ámbito de bloque (let), funciones de flecha, el tipo Symbol, generadores etc.

En 2016 se establece ECMAScript 2016 antes se llamaba ECMAScript 7. Cambios menores en el idioma, como agregar un operador de exponenciación y especificar el método <Array.includes>.

En 2017 se establece ECMAScript 2017 (ES8) Principalmente agrega soporte para funciones asíncronas.

Desde la aparición de Ajax y gracias a las mejoras en los motores JavaScript y a la aparición de Node.js y npm, en esta última década JavaScript ha despegado, posibilitando nuevas arquitecturas web y la posibilidad de usar JavaScript para crear aplicaciones fuera del navegador. Esta evolución de JavaScript ha creado un ecosistema de “frameworks” y librerías basadas en JavaScript, cuyas funcionalidades son muy diversas, por ejemplo: frameworks para el front-end y el back-end web, herramientas para las tareas de desarrollo, frameworks para la creación de aplicaciones GUI de escritorio y móviles etc. A continuación se exponen los principales cambios y alguno de los usos de JavaScript.