Veamos qué tiene de especial JavaScript, qué podemos lograr con este lenguaje y qué otras tecnologÃas se integran bien con él.
¿Qué es JavaScript?
JavaScript fue creado para âdar vida a las páginas webâ.
Los programas en este lenguaje se llaman scripts. Se pueden escribir directamente en el HTML de una página web y ejecutarse automáticamente a medida que se carga la página.
Los scripts se proporcionan y ejecutan como texto plano. No necesitan preparación especial o compilación para correr.
En este aspecto, JavaScript es muy diferente a otro lenguaje llamado Java.
Cuando JavaScript fue creado, inicialmente tenÃa otro nombre: âLiveScriptâ. Pero Java era muy popular en ese momento, asà que se decidió que el posicionamiento de un nuevo lenguaje como un âHermano menorâ de Java ayudarÃa.
Pero a medida que evolucionaba, JavaScript se convirtió en un lenguaje completamente independiente con su propia especificación llamada ECMAScript, y ahora no tiene ninguna relación con Java.
Hoy, JavaScript puede ejecutarse no solo en los navegadores, sino también en servidores o incluso en cualquier dispositivo que cuente con un programa especial llamado El motor o intérprete de JavaScript.
El navegador tiene un motor embebido a veces llamado una âMáquina virtual de JavaScriptâ.
Diferentes motores tienen diferentes ânombres en claveâ. Por ejemplo:
- V8 â en Chrome, Opera y Edge.
- SpiderMonkey â en Firefox.
- â¦Existen otros nombres en clave como âChakraâ para IE , âJavaScriptCoreâ, âNitroâ y âSquirrelFishâ para Safari, etc.
Es bueno recordar estos términos porque son usados en artÃculos para desarrolladores en internet. También los usaremos. Por ejemplo, si âla caracterÃstica X es soportada por V8â, entonces probablemente funciona en Chrome, Opera y Edge.
Los motores son complicados, pero los fundamentos son fáciles.
- El motor (embebido si es un navegador) lee (âanalizaâ) el script.
- Luego convierte (âcompilaâ) el script a lenguaje de máquina.
- Por último, el código máquina se ejecuta, muy rápido.
El motor aplica optimizaciones en cada paso del proceso. Incluso observa como el script compilado se ejecuta, analiza los datos que fluyen a través de él y aplica optimizaciones al código maquina basadas en ese conocimiento.
¿Qué puede hacer JavaScript en el navegador?
El JavaScript moderno es un lenguaje de programación âseguroâ. No proporciona acceso de bajo nivel a la memoria ni a la CPU (UCP); ya que se creó inicialmente para los navegadores, los cuales no lo requieren.
Las capacidades de JavaScript dependen en gran medida en el entorno en que se ejecuta. Por ejemplo, Node.JS soporta funciones que permiten a JavaScript leer y escribir archivos arbitrariamente, realizar solicitudes de red, etc.
En el navegador JavaScript puede realizar cualquier cosa relacionada con la manipulación de una página web, interacción con el usuario y el servidor web.
Por ejemplo, en el navegador JavaScript es capaz de:
- Agregar nuevo HTML a la página, cambiar el contenido existente y modificar estilos.
- Reaccionar a las acciones del usuario, ejecutarse con los clics del ratón, movimientos del puntero y al oprimir teclas.
- Enviar solicitudes de red a servidores remotos, descargar y cargar archivos (TecnologÃas llamadas AJAX y COMET).
- Obtener y configurar cookies, hacer preguntas al visitante y mostrar mensajes.
- Recordar datos en el lado del cliente con el almacenamiento local (âlocal storageâ).
¿Qué NO PUEDE hacer JavaScript en el navegador?
Las capacidades de JavaScript en el navegador están limitadas para proteger la seguridad de usuario. El objetivo es evitar que una página maliciosa acceda a información privada o dañe los datos de usuario.
Ejemplos de tales restricciones incluyen:
-
JavaScript en el navegador no puede leer y escribir arbitrariamente archivos en el disco duro, copiarlos o ejecutar programas. No tiene acceso directo a funciones del Sistema operativo (OS).
Los navegadores más modernos le permiten trabajar con archivos, pero el acceso es limitado y solo permitido si el usuario realiza ciertas acciones, como âarrastrarâ un archivo a la ventana del navegador o seleccionarlo por medio de una etiqueta
<input>.Existen maneras de interactuar con la cámara, micrófono y otros dispositivos, pero eso requiere el permiso explÃcito del usuario. Por lo tanto, una página habilitada para JavaScript no puede habilitar una cámara web para observar el entorno y enviar la información a la NSA.
-
Diferentes pestañas y ventanas generalmente no se conocen entre sÃ. A veces sà lo hacen: por ejemplo, cuando una ventana usa JavaScript para abrir otra. Pero incluso en este caso, JavaScript no puede acceder a la otra si provienen de diferentes sitios (de diferente dominio, protocolo o puerto).
Esta restricción es conocida como âpolÃtica del mismo origenâ (âSame Origin Policyâ). Es posible la comunicación, pero ambas páginas deben acordar el intercambio de datos y también deben contener el código especial de JavaScript que permite controlarlo. Cubriremos esto en el tutorial.
De nuevo: esta limitación es para la seguridad del usuario. Una página de
http://algunsitio.com, que el usuario haya abierto, no debe ser capaz de acceder a otra pestaña del navegador con la URLhttp://gmail.comy robar la información de esta otra página. -
JavaScript puede fácilmente comunicarse a través de la red con el servidor de donde la página actual proviene. Pero su capacidad para recibir información de otros sitios y dominios está bloqueada. Aunque sea posible, esto requiere un acuerdo explÃcito (expresado en los encabezados HTTP) desde el sitio remoto. Una vez más: esto es una limitación de seguridad.
Tales limitaciones no existen si JavaScript es usado fuera del navegador; por ejemplo, en un servidor. Los navegadores modernos también permiten complementos y extensiones que pueden solicitar permisos extendidos.
¿Qué hace a JavaScript único?
Existen al menos tres cosas geniales sobre JavaScript:
- Completa integración con HTML y CSS.
- Las cosas simples se hacen de manera simple.
- Soportado por la mayorÃa de los navegadores y habilitado de forma predeterminada.
JavaScript es la única tecnologÃa de los navegadores que combina estas tres cosas.
Eso es lo que hace a JavaScript único. Por esto es la herramienta mas extendida para crear interfaces de navegador.
Dicho esto, JavaScript también permite crear servidores, aplicaciones móviles, etc.
Lenguajes âpor arriba deâ JavaScript
La sintaxis de JavaScript no se adapta a las necesidades de todos. Personas diferentes querrán diferentes caracterÃsticas.
Esto es algo obvio, porque los proyectos y requerimientos son diferentes para cada persona.
Asà que recientemente han aparecido una gran cantidad de nuevos lenguajes, los cuales son transpilados (convertidos) a JavaScript antes de ser ejecutados en el navegador.
Las herramientas modernas hacen la conversión (Transpilación) muy rápida y transparente, permitiendo a los desarrolladores codificar en otros lenguajes y convertirlo automáticamente detrás de escena.
Ejemplos de tales lenguajes:
- CoffeeScript Es una âsintaxis azucaradaâ para JavaScript. Introduce una sintaxis corta, permitiéndonos escribir un código más claro y preciso. Usualmente desarrolladores de Ruby prefieren este lenguaje.
- TypeScript se concentra en agregar âtipado estrictoâ (âstrict data typingâ) para simplificar el desarrollo y soporte de sistemas complejos. Es desarrollado por Microsoft.
- FLow también agrega la escritura de datos, pero de una manera diferente. Desarrollado por Facebook.
- Dart es un lenguaje independiente, tiene su propio motor que se ejecuta en entornos que no son de navegador (como aplicaciones móviles), pero que también se puede convertir/transpilar a JavaScript. Desarrollado por Google.
- Brython es un transpilador de Python a JavaScript que permite escribir aplicaciones en Python puro sin JavaScript.
- Kotlin es un lenguaje moderno, seguro y conciso que puede apuntar al navegador o a Node.
Hay más. Por supuesto, incluso si nosotros usamos alguno de estos lenguajes transpilados, deberÃamos conocer también JavaScript para realmente entender qué estamos haciendo.
Resumen
- JavaScript fue inicialmente creado como un lenguaje solamente para el navegador, pero ahora es usado también en muchos otros entornos.
- Hoy en dÃa, JavaScript tiene una posición única como el lenguaje más extendido y adoptado de navegador, con una integración completa con HTML y CSS.
- Existen muchos lenguajes que se convierten o transpilan a JavaScript y aportan ciertas caracterÃsticas. Es recomendable echarles un vistazo, al menos brevemente, después de dominar JavaScript.
Comentarios
<code>, para varias lÃneas â envolverlas en la etiqueta<pre>, para más de 10 lÃneas â utilice una entorno controlado (sandbox) (plnkr, jsbin, codepenâ¦)