Javascript, el lenguaje del futuro

Publicado por Daniel Rey

El título está mal. Y es que, a estas alturas, ya nadie duda que tanto el presente como el futuro cercano son de Javascript.

Si no sabéis en lo que consiste este lenguaje, os lo explicaré. Claro que, para entenderlo, hacen falta unos cuantos conceptos sobre el funcionamiento de Internet.

HTML (Hyper-Text Markup Language) es un lenguaje de programación (no exactamente), que permite crear texto con formato, para que luego se pueda ver correctamente en un intérprete (lo que habitualmente conocemos como “navegador web”). Por ejemplo, gracias a HTML, puedo poner una palabra en negrita o cursiva, o insertar imágenes o links.

HTTP (Hyper-Text Transfer Protocol) es el protocolo de comunicación más utilizado en Internet. Un protocolo, como en la vida real, consiste en una serie de normas para comunicarse con otras personas (en este caso, con otros ordenadores). Es un protocolo sencillo y limitado, desarrollado hace mucho tiempo, y la gente que lo inventó sin duda no tenían ni idea de en lo que iba a convertirse Internet en un futuro no muy lejano. Define una serie de parámetros, y sus comunicaciones se basan en las palabras “consulta” y “respuesta“. Es decir, nosotros enviamos una consulta a un servidor (normalmente en forma de URL), y el servidor nos responde con un flujo de datos (normalmente, aunque no siempre, con una página HTML). Sin embargo, la limitación más importante de HTTP es que no contempla el concepto de “conexión“, ni de “estado“. Esto, aunque no os parezca importante, lo és, como explicaré más adelante.

IP (Internet Protocol) es el protocolo sobre el que se sustenta todo Internet. No voy a extenderme mucho en esto, pero básicamente, y para lo que nos interesa, define una dirección por cada ordenador, llamada “dirección IP“, que actúa de forma similar a un número de teléfono. Es un número de 32 bits, representado normalmente con 4 números del 0 al 255 (168.192.1.255, por ejemplo). Por desgracia, sólo pueden existir poco más de 3000 millones de direcciones IP, por lo que hubo que inventar las IP locales, IP dinámicas… no voy a explicar esto, podría tardar días.

Un servidor web es un ordenador permanentemente conectado a Internet. Tiene instalado uno o varios programas que se encargan de procesar las consultas HTTP que reciba, y contestar con una página HTML apropiada (o con una imagen, o con un video, etc). Hay servidores de muchos más tipos, pero el servidor HTTP es el que nos interesa.

Un dominio web es un nombre asignado a un servidor web. Es algo así como un seudónimo, para que sea más fácil de recordar. Por ejemplo, en vez de “http://www.barail.es“, podéis teclear “http://87.106.204.159” si queréis.

Los llamados “lenguajes de servidor“, son aquellos lenguajes de programación que se utilizan en los servidores web, para procesar las peticiones HTTP y responder al cliente (al usuario que está navegando por la página). El más conocido es PHP. Por ejemplo, si el cliente quiere ver la sección “fotos” de una página web, enviará al servidor (usualmente sin darse cuenta, al hacer click en un link, por ejemplo), una petición, y el servidor responderá enviándole una página HTML con varias fotos. Esa tarea, la de “responder“, es lo que hace un programa escrito en lenguaje de servidor.

Así, hasta hace relativamente poco (10 años) Internet consistía en una serie de páginas HTML interconectadas a través de links. Después se inició la llamada “Web 2.0“, en la que aún nos encontramos, y de la que hablaré otro día. Esta revolución cambió la forma de navegar en Internet, desde una simple fuente de información (como un periódico) hasta el gran enjambre que conocemos hoy en día. Buena parte de este cambio fue debido a los lenguajes de servidor. Estos lenguajes permitían, por ejemplo, que un usuario introdujese una frase en un campo de texto de su navegador web, y al pulsar un botón, se enviaba al servidor una petición del tipo “Daniel ha escrito -HOLA A TODOS-“. El servidor guardaba en una base de datos esa frase, y desde ese momento, cuando un usuario entrase a la página y realizase la consulta “muéstrame todos los comentarios“, el servidor buscaría dichos comentarios en la base de datos, y los mostraría en forma de HTML. Esto, que puede parecer excesivamente complicado, o una tontería, es la base de este blog, por ejemplo, así como de los foros, de Youtube, de Flickr… absolutamente todo. La Web 2.0 (que como ya he dicho, ya explicaré otro día) trata de eso, de convertir al usuario en no sólo lector, si no creador de contenidos.

Pues estupendo, pero ¿dónde estaba el problema? En los tiempos de espera, debidos a la naturaleza del protocolo HTTP. Cada vez que hacías click en un link, estabas enviando una petición al servidor. Entre ese momento, y el momento en el que el servidor respondía, pasaban unos segundos durante los cuales no podías hacer nada, se mostraba simplemente una página en blanco. Esto hacía la experiencia de visitar una página algo lenta. Este problema se acrecentó con el tiempo, porque los desarrolladores web se dieron cuenta que, con ayuda de los lenguajes del servidor, podían hacer aplicaciones web cada vez más complejas. Por ejemplo, GMail. ¿Os imagináis que, cada vez que queréis pasar al siguiente mensaje en GMail tuvieseis que esperar a que se recargase la página para volver a la bandeja de entrada, hacer click en el mensaje que queréis leer, y volver a esperar a que se cargue? Si bien es cierto que las conexiones a Internet son cada vez más rápidas, seguiría siendo una experiencia bastante… mejorable.

Aquí es donde entra Javascript. Javascript es un lenguaje que se ejecuta en el cliente. Es decir, que después de que se cargue la página, se puede ejecutar código desde el propio navegador web, y modificar la página como consecuencia de un evento, como el usuario haciendo click, por ejemplo. Os voy a poner un ejemplo muy tonto:

_Click aquí_

Has hecho click, y ha pasado “algo“, instantáneamente, sin esperar, sin dejar la página en blanco durante un momento. Sí, ese algo ha sido mostrar una estúpida frase, pero… ¿y si hubiera cambiado el fondo de la página a tu color favorito? ¿O mostrado una foto al azar con gatitos? ¿O…? Las posibilidades son infinitas, y no hay más que darse una vuelta por Internet para comprobarlo. Además, recientemente ha aparecido una tecnología llamada “AJAX” (no es exáctamente una tecnología, si no un conjunto de ellas), que permite a Javascript comunicarse con el servidor web sin recargar la página. Así, por ejemplo, en GMail, cuando haces click en el título de un e-mail, envia al servidor una petición (utiizando para ello Javascript) del tipo “dame el contenido de este mensaje“, SIN recargar la página. Cuando el servidor contesta, simplemente muestra dicho contenido. Las ventajas de utilizar este tipo de peticiones son muchísimas, y las desglosaré en profundidad en otro artículo, ya que el tema “AJAX“ da para mucho.

Javascript es un lenguaje bastante potente, desde luego no tan rápido como la mayoría de lenguajes de programación, pero tampoco es necesaria una gran velocidad. Quiero decir, nadie en su sano juicio va a programar un videojuego 3-D utilizando Javascript. No es difícil aprender, sobre todo si ya sabes otro lenguaje de programación. Y además, para ejecutarlo, el usuario no tiene que hacer absolutamente nada. Ni instalarse un plug-in en el navegador (Flash, Java), ni descargarse tu programa y ejecutarlo (como cualquier programa “tradicional”). Sólo necesita un navegador web y una conexión a Internet, algo que el 100% de los internautas tiene. En realidad sólo le veo un problema, que es el que le ve todo el mundo, común en general a todo el desarrollo web: La incompatibilidad entre navegadores. Y es que, tanto en Javascript como en las hojas de estilo CSS, como en el simple HTML, lo que en un navegador web funciona, en otro puede que no (y con “otro”, me refiero a Internet Explorer). En ocasiones hay que buscar “trucos” para que todo funcione en todos los navegadores, consumiendo bastante tiempo y esfuerzo. Otro problemilla que le veo al lenguaje es que no está compilado. Es decir, que lo que ejecuta el navegador web es el código tal cual. El tema de lenguajes interpretados vs compilados es muy complejo, y no voy a meterme ahí, ya que lo que para algunos es una ventaja, para otros es un inconveniente.

Algunos lo terminaremos odiando como usuarios (por ejemplo, los pop-ups existen gracias a Javascript), otros, amando, pero no se puede negar la evidencia: si Internet es el presente, también lo es Javascript. Si las aplicaciones web y la computación en la nube son el futuro, también lo será Javascript. Porque no hay otra forma de utilizar una aplicación web que con Javascript, y la forma más sencilla de acceder a la nube es mediante una aplicación web (de forma que puedes entrar desde cualquier ordenador, basta con que tenga un navegador web).

Aún han quedado muchos temas por tratar. Librerías de Javascript (recopilaciones de funciones que nos facilitan el duro trabajo de programar), AJAX, etc… Lo siento por los que entrasteis aquí esperando encontrar un tutorial de Javascript xD.

Deja un comentario

Saltos de línea y párrafo automáticos, la dirección de e-mail no se mostrará, HTML permitido: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">