Sencilla introducción al Lenguaje JavaScript

¡Hola! Bienvenido a este primer post, el cual te servirá como introducción a este importante, versátil, y reconocido lenguaje de programación con el que aumentarás tus oportunidades como programador o desarrollador web. ¡Vamos a empezar!

¿Qué es JavaScript?

El lenguaje de programación JavaScript fue creado en sus inicios con el fin de “hacer que las páginas web estén vivas”, lo que quiere decir que le da un dinamismo a las páginas web HTML hoy en día.

Los programas realizados en este lenguaje son conocidos como scripts. Dichos programas pueden escribirse directamente en nuestro HTML porque podemos inscrustarlo en nuestra maquetación HTML inicial, ya sea como un llamado a un documento externo, o llamando a otra sección del mismo documento, y este se ejecuta automáticamente a medida que se carga la página web.

Los scripts se proporcionan y ejecutan como texto plano. Lo que quiere decir que el navegador es capaz de interpretar el codigo JS inmediatamente, por lo que no necesita una preparación especial o una compilación para ejecutarse.

Por esto podemos decir que JavaScript es diferente de Java, ya que este último requiere de un compilador para ser ejecutado.

En la actualidad, JavaScript puede ejecutarse no sólo en el navegador, sino también en el servidor, o en cualquier dispositivo en el que exista un programa especial llamado motor JavaScript.

El navegador tiene un motor incrustado, a veces también se le llama “máquina virtual JavaScript”.

Diferentes motores tienen diferentes “nombres en clave”, por ejemplo:

  • V8 – en Chrome y Opera.
  • SpiderMonkey – en Firefox.
  • …Hay otros nombres en clave como “Trident”, “Chakra” para diferentes versiones de IE, “ChakraCore” para Microsoft Edge, “Nitro” y “SquirrelFish” para Safari, etc.

Los términos anteriores son buenos para recordar, porque se utilizan en artículos para desarrolladores en Internet. Y puede que algún día tú también los necesites. Por ejemplo, si “una característica X es soportada por V8“, entonces probablemente funcione en Chrome y Opera.

¿Qué puede hacer JavaScript en tu navegador?

El JavaScript moderno es un lenguaje de programación que podemos llamar “seguro”. JS no proporciona acceso de bajo nivel a la memoria o a la CPU, ya que fue creado inicialmente para navegadores que no lo requieren.

Las capacidades dependen en gran medida del entorno que ejecuta JavaScript. Por ejemplo, Node.JS soporta funciones que permiten a JavaScript leer y/o escribir archivos arbitrarios, realizar peticiones de red, etc.

JavaScript en el navegador puede hacer todo lo relacionado con la manipulación de la página web, la interacción con el usuario y el servidor web.

Por ejemplo, JavaScript en el navegador es capaz de hacer lo siguiente:

  • Agregar nuevo HTML a la página, cambiar el contenido existente, modificar estilos, etc.
  • Reacciona a las acciones del usuario, ejecuta clics del ratón, movimientos del puntero, pulsaciones de teclas, entre otras.
  • Envia peticiones a través de la red a servidores remotos, descargar y cargar archivos (las llamadas tecnologías AJAX y COMET).
  • Obtiene y establece cookies, puede hacer preguntas al visitante de la página web, e incluso puede mostrar mensajes.
  • Guarda los datos en el lado del cliente (“almacenamiento local”).

¿Qué NO PUEDE hacer JavaScript en el navegador?

Las capacidades de JavaScript en el navegador están limitadas por el bien de la seguridad del usuario. El objetivo es evitar que una página web malintencionada acceda a información privada o perjudique los datos del usuario.

Aquí abajo te enumero algunas de las restricciones que tiene JS en tu navegador.

  • Es posible que JavaScript en una página web no pueda leer/escribir archivos arbitrarios en el disco duro, copiarlos o ejecutar programas. Y tampoco tiene acceso directo a las funciones del sistema operativo.
  • Los navegadores modernos le permiten trabajar con archivos, pero el acceso es limitado y sólo se proporciona si el usuario realiza determinadas acciones, como “soltar” un archivo en una ventana del navegador, o seleccionarlo mediante una etiqueta <input>.
  • Hay formas de interactuar con la cámara y/o micrófono, y otros dispositivos, pero requieren el permiso explícito del usuario. Por lo tanto, es posible que una página habilitada para JavaScript no habilite sigilosamente una cámara web, observe el entorno y envíe la información a la NSA.
  • Las diferentes pestañas o ventanas generalmente no se conocen entre sí. A veces lo hacen, por ejemplo, cuando una ventana utiliza JavaScript para abrir la otra. Pero incluso en este caso, es posible que el JavaScript de una página no pueda acceder a la otra si provienen de sitios diferentes (de un dominio, protocolo o puerto diferente). Esto se denomina “Política de Mismos Origen”. Para evitarlo, ambas páginas deben contener un código JavaScript especial que se encargue del intercambio de datos.

La limitación es de nuevo para la seguridad del usuario. Una página de http://anysite.com que un usuario haya abierto no debe poder acceder a otra pestaña del navegador con la URL http://gmail.com y robar información de allí.

  • JavaScript puede comunicarse fácilmente a través de la red con el servidor de donde proviene la página actual. Pero su capacidad para recibir datos de otros sitios/dominios está paralizada. Aunque es posible, requiere un acuerdo explícito (expresado en cabeceras HTTP) desde el lado remoto. Una vez más, son las limitaciones de seguridad.

Estos límites no existen si JavaScript se utiliza fuera del navegador, por ejemplo, en un servidor. Los navegadores modernos también permiten la instalación de plugins o extensiones que pueden obtener permisos extendidos.

¿Qué es lo que hace a JavaScript un lenguaje único?

Hay por lo menos tres grandes cosas acerca de JavaScript:

  • Integración completa con HTML/CSS.
  • Las cosas sencillas se hacen de forma sencilla.
  • Es soportado por todos los principales navegadores y habilitado por defecto.

Combinadas, estas tres cosas sólo existen en JavaScript y no en ninguna otra tecnología de navegación.

Eso es lo que hace que JavaScript sea único. Por eso es la herramienta más extendida para crear interfaces de navegador.

Mientras se planea aprender una nueva tecnología, es beneficioso revisar sus perspectivas. Así que también puedes investigar las tendencias modernas que incluyen nuevos lenguajes, y capacidades de navegación.