JavaScript — Historia, Estándar & Motores

Mauricio Garcia
4 min readDec 27, 2019

--

Temario

  • Introducción
  • Breve historia de JavaScript
  • Estándar ECMAScript (1,2,3,4,5…)
  • Motores de JavaScript (SpiderMonkey, JavaScriptCore, Chakra, V8)

i. Introducción

En las stories pasadas he mencionado mucho ES5, ECMA 5, ES6, ECMA 6, ECMAScript 6 realmente no he dicho de que va… antes de explicarlo vamos a conocer como nació JavaScript

ii. Breve historia de JavaScript

Al principio la web solo era HTML (textos, imágenes, enlaces, …), por lo que no había ningún dinamismo en las páginas y solo había dos navegadores Internet Explorer (Microsoft) y Netscape donde cada uno a su manera querían ser los pioneros en impulsar a la corriente principal.

Entonces a lo largo de esta batalla, fue cuando Brendan Eich [ref] en 1995 dentro de las oficinas de Netscape desarrollo LiveScript (su nombre en clave Mocha), posteriormente aprovechando la popularidad del lenguaje Java deciden cambiarle el nombre a JavaScript (de hecho esto generó en un principio mucha confusión ya que se creía que era Java pero en web, pero no… solo se aprovecharon de su popularidad).

Debido a que JavaScript es un lenguaje funcional, imperativo y orientado a objetos (sabemos que es más bien orientado a prototipos) tuvo tanto éxito que 1 año después lanzan la versión 1.1, y a la par Microsoft decide adoptarlo para Internet Explorer, bueno ejem… realmente creó una copia de JavaScript llamada JScript (esto con el fin de evitar problemas legales); como buen visionario Netscape decide estandarizar el lenguaje de JavaScript así que en 1997 decide enviar su versión al organismo ECMA (European Computer Manufacturers Association)[ref].

iii. ECMAScript (1,2,3,4,5…)

ECMA crea el comité TC39 para estandarizar y crear un lenguaje multiplataforma que sea independiente de cualquier empresa, donde el primer estándar es llamado ECMA-262 [ref] y se decide adoptar con el nombre de ECMAScript (cuando se menciona ES, simplemente es la abreviatura de esta).

A lo largo de los años se han creado diferentes ediciones:

  • ES1 (Junio 1997) — La primera edición estándar
  • ES2 (Junio 1998) — Se hacen cambios para adaptarlo al estándar ISO/IEC-16262
  • ES3 (Diciembre 1999) — Versión base de los navegadores
  • ES4 — Fue abandonada debido a diferencias políticas
  • ES5 (Diciembre 2009) — Versión actual de la mayoría de los navegadores

Después en Junio 2015 nace ES6 donde el comité que supervisa las especificaciones de ECMAScript decide cambiarle el nombre a ES2015 dónde va a reflejar el año en que ha sido lanzado la edición, entonces las siguientes versiones se nombraron de acuerdo al año en que se lanzan:

  • ES2016 — ES7 (Junio 2016)
  • ES2017 — ES8 (Junio 2017)
  • ES2018— ES9 (Junio 2018)
  • ES2019 — ES10 (Junio 2019)[ref]
  • ES.Next — Nombre que hace referencia a una próxima versión

Así que cuando diga ES6 o ES2015 será exactamente lo mismo.

iv. Motores de JavaScript

Primero veamos que es un motor de JavaScript:

Un motor de JavaScript es un programa de computadora que ejecuta código JavaScript [ref]

Digamos de manera simple es aquel que se va a encargar de interpretar el código de JavaScript en el navegador.

En un principio cuando se desarrolló JavaScript su primer motor fue un simple intérprete creado por el mismo Brendan Eich (el mismo que desarrolló JS), donde posteriormente evolucionaría a SpiderMonkey (motor utilizado actualmente por FireFox)[ref].

Actualmente los motores modernos para JavaScript son desarrollados por terceros (proveedores de navegadores web) y los más populares son los siguientes:

a — JavaScriptCore (Apple)

Motor utilizado principalmente en los navegadores web Safari [ref], después evolucionó a Nitro (compila código JS en código máquina de manera nativa)

b — SpiderMonkey (Mozilla)

Motor utilizado principalmente en los navegadores web Firefox [ref], cuando Apple sacó Nitro, Mozilla aprovechó algunas partes para optimizar el suyo.

c — Chakra (Microsoft)

Motor utilizado en el navegador web Edge [ref], aunque actualmente está siendo reconstruido como un navegador basado en Chromium, por lo que en futuras versiones utilizará V8[ref].

d — V8 (Google)

Motor utilizado en los navegadores basados en Chromium [ref], actualmente es uno de los motores más utilizados y el mejor; su secreto es “compilación justo a tiempo” (JIT)[ref], esto quiere decir que la compilación de JavaScript se hace en tiempo de ejecución y no antes, esto hace que mejore significativamente los tiempos de ejecución.

Y no solo navegadores, también las aplicaciones (Electron[ref]), frameworks (CEF[ref]) o entornos (node.js) que incorporen Chromium.

Ahora que sabemos de manera breve cómo es que nació JavaScript, así como el estándar que usa (ECMAScript), sin olvidar también de manera básica los principales motores que compilan JavaScript.

En la siguiente entrega vamos a ver JavaScript — ES6 (Parte I)

La entrega pasada vimos JavaScript — Ecuaciones Complejas

--

--