La historia de JavaScript

Aunque JavaScript fue diseñado con rapidez y destinado para pequeñas tareas de diseño en la interfaz, ahora es un ecosistema consolidado y establecido que ha transformado la Internet moderna con sitios dinámicos y aplicaciones web.

Rachel Kempf - Editor-in-Chief
La historia de JavaScript

La historia de JavaScript es, en muchos aspectos, la historia de la Internet moderna. Cualquier persona que recuerde las páginas web estáticas, desorganizadas y con carga lenta en sus inicios, o que incluso las haya conocido a través de Wayback Machine, tiene una idea de cuánto ha evolucionado el desarrollo web desde la década de 1990. Los elementos interactivos, como animaciones, formularios y hasta la capacidad de desplazarse por artículos similares a este son posibles, en gran parte, debido al surgimiento de JavaScript. Este es un lenguaje de programación que fue desarrollado inicialmente en 10 días y concebido como un lenguaje complementario a Java.

Aquí en Azion, tenemos el orgullo de anunciar la compatibilidad de JavaScript con nuestro producto Edge Functions. Para conmemorar este paso tan significativo, esta publicación analizará en detalle el desarrollo tecnológico de JavaScript. A partir de ahora, realizarás un tour por los conceptos básicos, el origen, los esfuerzos de estandarización y el estado actual del lenguaje de programación más popular del mundo.

¿Qué es JavaScript?

JavaScript vs. HTML vs. CSS

JavaScript es un lenguaje de scripting en el lado del cliente que permite la creación de elementos interactivos en sitios web. Junto con HTML y CSS, JavaScript constituye uno de los tres bloques de construcción usados para construir los sitios web modernos. En un artículo publicado recientemente en su blog, Hubspot hace la siguiente distinción para entender los tres conceptos de forma simple:

  • HTML: provee la estructura básica de los sitios web, que es mejorada y modificada por otras tecnologías como CSS y JavaScript.
  • CSS: es usado para controlar la presentación, el formato y el diseño.
  • JavaScript: es usado para controlar el comportamiento de diferentes elementos.

En otras palabras, HTML provee la estructura para una página web, mientras que CSS agrega elementos de diseño y JavaScript facilita la interactividad.

¿Para qué se usa JavaScript?

Una excelente descripción de los usos de JavaScript puede ser encontrada en el blog de Skillcrush. En este, se explica que JavaScript es “usado para crear y controlar el contenido dinámico del sitio web. Por ejemplo, todo lo que se mueve, se actualiza o se modifica de alguna forma en la pantalla sin necesidad de que actualices manualmente una página web”. Además, entre otros elementos interactivos, este incluye:

  • cajas de confirmación;
  • deslizables con llamados a la acción (calls-to-action);
  • juegos basados en el navegador;
  • animación y otros efectos especiales;
  • recursos de seguridad, como contraseñas;
  • actualización automática de noticias (newsfeeds), y
  • desarrollo de aplicaciones móviles.

El origen de JavaScript

Inicio

JavaScript 1.0 fue lanzado en 1995, cuando Internet aún era una invención relativamente nueva. El primer navegador web, Mosaic, había sido lanzado dos años antes, HTML era, en aquella época, la única herramienta para construir sitios web, mientras que CSS era todavía una propuesta que no sería lanzada oficialmente hasta 1996. De esta manera, la creación de sitios web era una habilidad relativamente fácil de aprender, siendo en algunos casos accesible no solo para ingenieros de software, sino también para diseñadores y desarrolladores principiantes.

Marc Andressen, fundador del recién lanzado navegador Netscape, quería expandir sus capacidades al agregar más elementos dinámicos. Al mismo tiempo, quería que estos elementos estuvieran disponibles para el nuevo y creciente mercado de desarrolladores web aficionados. Así nació la idea de crear un lenguaje de scripting simple y dinámico, que luego sería conocido como JavaScript.

Creación en Netscape

Brendan Eich, creador de JavaScript, fue contratado por Netscape para crear un lenguaje de scripting basado en el navegador. De acuerdo con el artículo JavaScript: The First Twenty Years, publicado por ACM y en el que Eich participó como coautor, está tarea fue complicada debido al acuerdo entre Netscape y Sun Mircrosystems. Estas empresas tenían como estrategia conjunta integrar el lenguaje de programación Java de Sun a Netscape 2.0, en un intento de superar a Internet Explorer de Microsoft. Como resultado:

“la rápida creación de estrategias en Netscape para elegir un lenguaje de scripting perjudicó seriamente a otros tipos de lenguajes como Scheme, Perl, Python, Tcl y Visual Basic al mostrarlos como no viables debido a intereses comerciales y/o consideraciones sobre el inicio del periodo de comercialización. El único enfoque considerado viable fue… diseñar e implementar un ‘lenguaje pequeño’ para complementar Java”.

Debido a que el lanzamiento de Netscape 2.0 estaba programado para septiembre de 1995, Eich tuvo que actuar rápidamente. El prototipo inicial, denominado “Mocha”, fue creado en tan solo 10 días, en el mes de mayo de 1995, con trabajos adicionales en verano para eliminar bugs, responder a solicitudes de funciones y diseñar unas API que permitieran a Mocha interactuar con Netscape. Estas API establecieron las bases para lo se conocería como Document Object Model (DOM), una interfaz clave para interactuar con documentos de HTML y XML.

Como es mencionado en un post de Auth0 de 2017, el resultado final “parecía un Java dinámico, pero en el fondo tenía una forma diferente: un hijo prematuro de Scheme y Self” que fue presentado bajo el nuevo nombre de JavaScript, “como un lenguaje de scripting para pequeñas tareas en el lado del cliente en el navegador. Por su parte Java sería promovido como una herramienta profesional más grande para desarrollar componentes web enriquecidos”.

Lanzamiento inicial

La disponibilidad de JavaScript en la versión beta de Netscape 2.0 fue anunciada en diciembre de 1995 en un comunicado de prensa, el cual describía a JavaScript como:

  1. diseñado para crear aplicaciones centradas en la red;
  2. complementario e integrado a Java;
  3. complementario e integrado a HTML, así como
  4. abierto y multiplataforma.

En la documentación inicial, Netscape describe las principales capacidades de JavaScript para “reconocer y responder a eventos de usuario como clics de mouse, formulario de entrada y navegación en la página.” Esto permitió una gran cantidad de usos, como:

  • solicitar un número telefónico de usuario o código postal;
  • alertar a los usuarios sobre entradas inválidas en los formularios;
  • crear cajas de selección (check boxes);
  • agregar botones de “atrás” para navegar fácilmente en los sitios web;
  • preservar el estado entre páginas web para rastrear las acciones del usuario, y
  • reproducir animaciones, textos en movimiento o archivos de audio.

ActiveX y NetscapeONE: hacia el desarrollo de aplicaciones

JScript y ActiveX

A medida que el interés por JavaScript crecía, competidores como Internet Explorer estaban bajo presión para habilitar recursos de scripting similares. Aunque “Java” estaba bajo la marca registrada de Sun, JavaScript era un código abierto y gratuito, lo que permitió a Microsoft aplicar ingeniería inversa en su propia implementación, Jscript, que fue lanzado con Internet Explorer 3.0 en agosto de 1996.

Además, Jscript podía integrarse con el amplio ecosistema de Microsoft, como parte de un conjunto de tecnologías conocido como ActiveX. Como se indicaba en un comunicado de prensa de 1996, ActiveX estaba destinado a “formar una estructura robusta para la creación de contenido interactivo, usando componentes de software, scripts y aplicaciones existentes”, además de permitir a los usuarios “integrar aplicaciones en los navegadores web para que los datos gestionados por estas aplicaciones lleguen a ser accesibles como páginas web”. Esto permitió la creación de aplicaciones interactivas del lado del servidor con JScript, así como también con VBScript, que es un lenguaje de scripting derivado de Visual Basic de Microsoft.

NetscapeONE y JavaScript 1.1

Además de la popularidad de JavaScript, un gran impulso para el lanzamiento de ActiveX de Microsoft fue un proyecto similar llevado a cabo por Netscape, diseñado para expandir HTML más allá del navegador y avanzar en el desarrollo de aplicaciones web. Este proyecto, conocido como NetscapeONE, permitió que las páginas web no solo mostrarán información, sino que también sirvieran como contenedores para aplicaciones comerciales.

NetscapeONE, así como también Netscape 3.0, incluyeron la versión 1.1 de JavaScript, que permitió la creación de bibliotecas JavaScript como páginas separadas en lugar de introducir un código JavaScript en archivos HTML.

Sin embargo, las diferencias de la implementación de JavaScript entre Microsoft y Netscape dieron como resultado incompatibilidades que hicieron que el código interactivo fallara en función del tipo de navegador o, en otros casos, por la versión del navegador. Para permitir la compatibilidad con múltiples plataformas de manera efectiva, fue necesaria una estandarización.

Estandarización y expansión

Al crear especificaciones de cómo las tecnologías deberían ser implementadas, los organismos de estandarización permitieron la interoperabilidad entre plataformas y dispositivos. En 1996, Netscape anunció, en un comunicado de prensa, sus planes para estandarizar JavaScript a través del organismo de estándares internacionales ECMA. Debido a que ECMA no podía usar el nombre de marca registrada “Java”, el lenguaje fue estandarizado con el nombre de ECMAScript. Esto permitió más interoperabilidad entre navegadores, pero los nuevos desarrollos en la historia de Internet estaban impulsando la demanda para expansiones aún más ambiciosas.

Uno de estos avances fue el surgimiento de AJAX, una técnica de desarrollo que usa diversas tecnologías, incluido JavaScript, para permitir programación asíncrona. Con esto, las páginas web podrían cambiar el contenido dinámicamente sin la necesidad de actualizar la página completa y, como resultado, sin afectar la experiencia del usuario. Aunque en un primer artículo en 2005, AJAX fue presentado como una forma de mejorar la experiencia del usuario, al reducir el tiempo en el que los usuarios permanecen “observando una ventana en blanco en el navegador y un icono de reloj de arena, y esperando a que el servidor realice algo”, sus ramificaciones incluyen muchos recursos web ampliamente usados en la actualidad. Esto incluye las sugerencias de búsqueda que cambian al escribir en Google, en la barra de estado, notificaciones, noticias y otros elementos de actualización automática.

Node.js y JavaScript Server-side

A lo largo de la década de 2000, la introducción y el rápido crecimiento de la conexión a Internet inalámbrica, dispositivos móviles conectados a Internet, la cloud computing y las redes sociales llevaron el uso de Internet a nuevos niveles, lo que requería cada vez más capacidad para atender ese tráfico de datos. En 2009, la frustración por la incapacidad de los servidores Apache HTTP para manejar millares de solicitudes simultáneas inspiró la creación de Node.js.

Node.js es un entorno de runtime que mueve JavaScript hacia fuera del navegador, lo que permite que JavaScript se ejecute en cualquier lugar donde Node.js esté instalado, al usar el motor V8 de Google para compilar el código de JavaScript a machine code (lenguaje de máquina o código máquina). Como fue señalado en un artículo sobre JavaScript publicado en In Plain English, “esto cambió el lenguaje de JavaScript para siempre y ayudó lentamente a transformarlo más en un lenguaje programación y menos en un scripting”, lo que permitió a desarrolladores de interfaz (frontend) escribir código en el lado del servidor sin la necesidad de aprender un nuevo tipo de lenguaje. Además, Node.js aumentó la capacidad del servidor para usar event loop e I/O asíncronos para manejar diversas solicitudes simultáneas.

JavaScript en la actualidad

Actualmente, JavaScript es considerado como lenguaje de programación más usado por desarrolladores web, de acuerdo con GitHub. En este año, W3Tech Surveysinformó que JavaScript es usado para la programación en el lado del cliente por un 97.1% de todos los sitios web, incluidos algunos de los más populares del mundo, como Google, YouTube, Facebook y Amazon.

En los últimos años, se han realizado algunos de los desarrollos más sorprendentes en JavaScript hasta ahora, incluida la introducción de:

  • Async and await, una función de JavaScript que simplifica la programación de códigos asíncronos;
  • Webassembly, un lenguaje complementario a JavaScript que permite que el código escrito en diferentes lenguajes se ejecute a una velocidad casi nativa (near-native speed);
  • Typescript, una variante de JavaScript que verifica los errores en un programa antes de ser ejecutado.

Aunque JavaScript fue diseñado con rapidez y destinado para pequeñas tareas de diseño en la interfaz, ahora es un ecosistema consolidado y establecido que ha transformado la Internet moderna con sitios dinámicos y aplicaciones web.

Edge Functions es compatible con JavaScript

Aquí en Azion, una de nuestras metas principales es hacer de la programación lo más simple y flexible posible. Por esta razón, JavaScript, un lenguaje con compatibilidad omnipresente y creado para ofrecer facilidad de uso, es la mejor opción para Edge Functions, un nuevo producto que lleva la computación serverless para el edge de la red.

Nuestra implementación de JavaScript usa el estándar ECMA, que incluye compatibilidad con promises (característica de un objeto en programación) con async/await y, próximamente, será compatible con WebAssembly. Con Edge Functions, los desarrolladores pueden construir y ejecutar funciones basadas en eventos en el edge de la red, a través de la API de JavaScript Runtime. Edge Functions se ejecuta en milisegundos en el edge node más cercano al usuario final y escala automáticamente, lo que elimina la necesidad de proveer o gestionar recursos. Como resultado, hay una reducción drástica de costos y recursos usados. De esta forma, los desarrolladores pueden invertir más tiempo en la interfaz de su aplicación, lo que permite garantizar la mejor funcionalidad y experiencia de usuario posibles.

Para conocer más sobre Edge Functions, visita nuestra página de productos o crea una cuenta gratis para comenzar a programar funciones basadas en eventos en JavaScript.

Suscríbete a nuestro boletín informativo