IV. Lenguajes de script en cliente 1. Motivación 2. Funcionamiento 3. AJAX Motivación (I) z Hasta ahora: – Cada “evento” es procesado por el servidor. Servidor WWW Curso 2008/2009 Arquitecturas Distribuidas 2 Motivación (II) z Hasta ahora: – Cada “evento” sólo puede ser procesador por el servidor. Servidor WWW Curso 2008/2009 Arquitecturas Distribuidas 3 Motivación (III) z Hasta ahora: – Realmente, pocos “eventos” Ir a un enlace. z Rellenar datos a través de un formulario para conseguir una nueva página. – Interacción con el usuario muy limitada. z z Limita el desarrollo de interfaces de usuario ricas y degrada la “experiencia” del usuario. Las aplicaciones de escritorio cuentan con ventajas en ese sentido. No permite el desarrollo de aplicaciones que devuelvan un contenido en función de la actividad del usuario Curso 2008/2009 Arquitecturas Distribuidas 4 Motivación (IV) z Solución: – Las páginas deben contener instrucciones que se ejecuten en el lado del cliente. z z Java Æ Lenguaje “pesado”, pero compatible entre equipos. Se usa un plug-in: se invoca el ejecutable de la máquina virtual de Java, el Java Runtime Environment instalado en el equipo. JavaScript y similares Æ Lenguaje “ligero”, pero con incompatibilidades entre equipos. Lenguaje interpretado. Intérprete implementado por el navegador. Curso 2008/2009 Arquitecturas Distribuidas 5 Funcionamiento (I) z Javascript y similares: – Lenguajes orientados a eventos: z Cargar pagina z Ratón sobre un elemento z Ratón hace click sobre un elemento z Temporizadores z Etc Curso 2008/2009 Arquitecturas Distribuidas 6 Funcionamiento (II) z Javascript y similares: – Al capturar un evento, se invoca un trozo de código (script). Ese código puede hacer cualquier tipo de procesado. – Lo normal es que cambie el valor de algún atributo en la página, que compruebe si los valores de un formulario son correctos antes de enviarlos, etc. Curso 2008/2009 Arquitecturas Distribuidas 7 Funcionamiento (III) <html> <script language="JavaScript"> <!-function dihola() { alert("Hola a todos!"); } --> </script> <body onLoad="dihola();"> </body> </html> Curso 2008/2009 Arquitecturas Distribuidas 8 Funcionamiento (IV) <html> <script language="JavaScript"> <!-function dihola() { alert("Hola a todos!"); } --> </script> <body onLoad="dihola();"> </body> Código de procesamiento </html> EVENTO Curso 2008/2009 Arquitecturas Distribuidas 9 Funcionamiento (V) <html> <script language="JavaScript"> <!-function dihola() { alert("Hola a todos!"); } --> </script> <body onLoad="dihola();"> </body> Código de procesamiento </html> EVENTO Curso 2008/2009 Arquitecturas Distribuidas 10 Funcionamiento (VI) z Javascript y similares: – Programación similar a Java. – – – – while do..while for etc – Orientados a objetos z z No se hace distinción entre “clase” y “objeto”. Intérprete implementado por el navegador. El rendimiento depende de la calidad de la implementación Curso 2008/2009 Arquitecturas Distribuidas 11 AJAX (I) z Asynchronous Javascript and XML (AJAX) – Grupo de técnicas para crear aplicaciones web más interactivas. – Se solicitan datos del servidor de manera asíncrona y en segundo plano z z z No interfiere con el aspecto y el comportamiento de la página actual Para la comunicación se utiliza el objeto XMLHttpRequest de Javascript. Para el intercambio de datos se utiliza XML. Curso 2008/2009 Arquitecturas Distribuidas 12 AJAX (II) Curso 2008/2009 Arquitecturas Distribuidas 13 AJAX (II) z Ventajas – Mejoran la experiencia del usuario: las aplicaciones son más interactivas y responden antes (aparentemente). – Se reduce el consumo de ancho de banda. No es necesario volver a cargar toda la página. – No interfiere con el aspecto y el comportamiento de la página actual z Desventajas – No funciona si el Javascript está deshabilitado o no se implementa. Contenido alternativo. – Las páginas creadas dinámicamente no se registran en el navegador. Botón “atrás” no funciona correctamente. – Los “robots” de internet no ejecutan normalmente Javascript. No se indexa correctamente el contenido dinámico. Curso 2008/2009 Arquitecturas Distribuidas 14 Referencias y bibliografía z Especificaciones: – – Ecmascript es la norma, javascript (netscape) y jscript (microsoft) son implementaciones ECMAScript: z z http://www.ecma-international.org/publications/files/ecmast/ECMA-262.pdf Tutoriales: – Javascript: http://www.w3schools.com/js/default.asp – Jscript: http://msdn.microsoft.com Curso 2008/2009 Arquitecturas Distribuidas 15 Referencias y bibliografía z Tutoriales en español: – – z http://www.unav.es/cti/manuales/TutorialJavaScri pt/indices/ Æ Universidad de navarra http://www.webestilo.com/javascript/ Utilidades de programación – Barra integrada en firefox con manual de programación: chrome://global/content/console.xul Curso 2008/2009 Arquitecturas Distribuidas 16